СОДЕРЖАНИЕ ►
Глобальные и локальные переменные в скетче Ардуино имеют разную область видимости (время жизни). Разберем, что такое переменные в функции Ардуино, какие переменные следует использовать в процедуре (подпрограмме) void loop или void setup. Также рассмотрим ситуацию, что делать, если при компиляции кода появляется ошибка — глобальные переменные используют много памяти Arduino.
Объявление переменных в скетче Ардуино
Важно помнить, что переменная в программе должна бывать объявлена до обращения к себе, то есть находиться выше по коду. Иначе вы получите ошибку при компиляции – Not declared in this scope. Еще следует учесть, что при инициализации переменной внутри цикла void loop — при каждом новом запуске цикла переменная будет каждый раз обновляться. Переменная в скетче объявляется просто:
<тип данных> <имя> <точка с запятой>
или
<тип данных> <имя> = <значение> <точка с запятой>
Пример скетча:
int var; int var2 = 10; void setup() { } void loop() { }
Область видимости переменных Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega.
Глобальная переменная Arduino IDE доступна («видна») в программе из любого места в подпрограмме или функции. Время жизни такой переменной с начала запуска программы до ее окончания. Локальные переменные Arduino IDE доступны внутри тех функций или подпрограмм, в которых они были объявлены. Рассмотрим несколько примеров объявления глобальных и локальных переменных в программе Ардуино.
Ардуино глобальные переменные в скетче
Глобальная переменная объявляется в программе вне функций и доступна в любом месте к чтению или записи. Загрузите по очереди в плату следующие два примера.
Правильный пример скетча:
int var = 10; // создаем глобальную переменную в коде void setup() { Serial.begin(9600); // выводим значение глобальной переменной на монитор порта Serial.println(var); delay(1000); } void loop() { // меняем значение переменной var и выводим на монитор var = var + 10; Serial.println(var); delay(500); }
Пример скетча с ошибкой:
int var = 10; // создаем глобальную переменную в коде void setup() { int var2 = 20; // создаем локальную переменную Serial.begin(9600); // выводим значение глобальной и локальной переменной Serial.println(var); Serial.println(var2); delay(1000); } void loop() { // при компиляции скетча появится ошибка Serial.println(var); Serial.println(var2); delay(500); }
Пояснения к коду:
- глобальную переменную
varможно использовать: перезаписывать и читать из любой функции (процедуры) программы; - при попытке использовать локальную переменную
var2в процедуре void loop появится ошибка компиляции Ардуино, так как переменнуюvar2можно использовать только в той функции, где она была объявлена.
Ардуино локальные переменные в скетче
Локальная переменная живет только внутри функции или внутри блока кода в фигурных скобках. При попытке обратиться к переменной за пределами функции (как на примере выше) вы получите ошибку. Во многих уроках Ардуино мы объявляли переменную внутри цикла for. Как и в следующем примере программы, где локальную переменную нельзя использовать за пределами фигурных скобок цикла for.
Правильный пример скетча:
void setup() { Serial.begin(9600); } void loop() { for (int var = 0; var <= 100; var = var + 10) { Serial.println(var); delay(500); } }
Пример скетча с ошибкой:
void setup() { Serial.begin(9600); } void loop() { for (int var = 0; var <= 100; var = var + 10) { Serial.println(var); delay(500); } Serial.println(var); }
Пояснения к коду:
- локальная переменная
varинициализируется внутри цикла for, поэтому при попытке обратиться к переменной за пределами цикла — появится ошибка.
Ардуино формальные переменные в скетче
Формальная переменная, она же параметр, передаваемый в функцию, ведет себя как локальная переменная, но появляется в программе при других условиях: при вызове функции. Эту переменную можно читать и записывать внутри ее функции. Загрузите следующий пример кода в микроконтроллер и откройте монитор порта.
void setup() { Serial.begin(9600); } void loop() { // передаем значение 10, как аргумент функции Func(10); delay(500); } void Func(int var) { var = var + 10; Serial.println(var); }
Пояснения к коду:
- формальную переменную
varможно использовать только внутри функции Func; - после окончания работы функции, переменная
varбудет удалена из памяти.










В теме Ардуино локальные переменные в скетче у Вас в примере указана i <= 100 вместо var <= 100
Спасибо. Исправили ошибку в примере кода