Не могу найти информацию где правильнее объявлять переменные, в самом начале программы или уже по ходу выполнения? И увеличивается ли скорость выполнения программы если переменную объявить в самом начале до void setup() а в программе только работать с ней?
1) Таким образом, чтобы область видимости переменной была минимально необходимой. Т.е. по ходу выполнения, внутри циклов, и т.п.; 2) Нет.
1) Таким образом, чтобы область видимости переменной была минимально необходимой. Т.е. по ходу выполнения, внутри циклов, и т.п.; Это чтобы не запутаться или чтобы увеличить быстродействие?
Условно говоря, контроллер всегда работает одинаково быстро. Т.е. одинаково быстро выполняет поставленные вами задачи. А то, насколько разумно и правильно вы будете эти задачи ставить - зависит от вас. По поводу переменных - это сложившийся и проверенный временем подход к организации программы.
есть есть возможность (тут скорее даже знания), то переменные лучше объявлять локально, т.е. непосредственно там, где они используются - т.е. внутри функции или перед групповыми фигурными скобками. Это позволит в пару кликов уже готовые и работающие программные блоки переносить в другие проекты = выше продуктивность и минимизация ошибок. Там, где такой подход неудобен (переменная используется во многих местах в коде), следует использовать глобальные переменные, с внятным названием (чтобы ее назначение было видно даже без комментариев).
Код пишется не только для процессора, но и для программиста, который пишет и главное отлаживает эту программу. (Главное правило программиста) А вот переменные должны быть там где вы их сможете найти. Но скорее всего вопрос не в переменных, а в константах, которые выглядят как переменные, и которые надо менять для доводки программы. Ну или переменные которым программист задает начальные значения.
Непосредственно перед использованием это конечно удобно но просто объявление переменной стирает ее значение...
void setup() { Serial.begin(9600); } void loop() { int q; q++; Serial.println(q); delay (200); } У меня этот код выводит в порт только единицы.....
Код (C++): void setup() { Serial.begin(9600); } void loop() { static int q=0; q++; Serial.println(q); delay (200); } А так?
1) нет инициализации q - ошибка. 2) тело функции loop() - недостаточная область видимости для q - ошибка. (в static или в глобальные)