Как объявить переменную в ардуино
Перейти к содержимому

Как объявить переменную в ардуино

  • автор:

Arduino.ru

Переменная – это место хранения данных. Она имеет имя, значение и тип. Например, данное объявление (называется декларацией):

int pin = 13;

создает переменную с именем pin , значением 13 и типом int . Затем в программе имеется возможность обратиться к данной переменной через имя с целью работы с ее значением. Например, в утверждении:

pinMode(pin, OUTPUT);

имеется значение вывода (13), которое будет передаваться в функцию pinMode(). В данном случае нет необходимости использовать переменную. Утверждение может работать и в таком виде:

pinMode(13, OUTPUT);

Преимущество переменной заключается в том, что необходимо определить значение вывода однажды и потом использовать его многократно. В последствии при изменении вывода 13 на 12 достаточно будет поменять только одну строку в программном коде. Также можно использовать специальные имена для подчеркивания значения переменной (напр., программа, управляющая светодиодом RGB, может содержать переменные redPin, greenPin и bluePin).

Переменные имеют другие преимущества перед такими значениями как число. Имеется возможность изменить значение переменной, используя присвоение. Например:

pin = 12;

изменит значение переменной на число 12. В данном примере не определяется тип переменной, т.к. он не меняется операцией присвоения. Имя переменной постоянно связано с типом, меняется только значение. [1] Перед присвоением значения необходимо декларировать переменную. Присвоение значения переменной без ее декларации вызовет следующее сообщение: error: pin was not declared in this scope».

При присвоении одной переменной другой происходит копирование значения первой переменной во вторую. Изменение значение одной переменной не влияет на другую. Например, после записи:

int pin = 13; int pin2 = pin; pin = 12;

только pin имеет значение 12, а pin2 еще равен 13.

Что означает слово «scope» в сообщение об ошибке, приведенной выше? Оно относится к части программы, в которой переменная может использоваться — областе видимости. Область видимости определяется местом ее декларации. Например, имеется возможность использовать переменную во всей программе, если задекларировать ее в начале программного кода. Такие переменные называются глобальными. Например:

int pin = 13; void setup() < pinMode(pin, OUTPUT); >void loop()

Из примера видно, что pin используется в обеих функциях setup() и loop(). Обе функции ссылаются на одну переменную, таким образом, изменение ее значения в одной функции повлияет на значение в другой:

int pin = 13; void setup() < pin = 12; pinMode(pin, OUTPUT); >void loop()

Функции digitalWrite(), вызываемой из loop(), будет передано значение 12, т.к. оно было присвоено переменной в функции setup().

Если переменная используется только один раз в функции, то ее декларируют в данной части программного кода, ограниченной скобками функции. Например:

void setup()

В данном примере переменная может использоваться только внутри функции setup(). При написании данного кода:

void loop() < digitalWrite(pin, LOW); // wrong: pin is not in scope here. >

будет выведено сообщение: «error: ‘pin’ was not declared in this scope». Данное сообщение будет выводиться, даже если вы задекларировали переменную где-то в программе, но пытаетесь ее использовать вне области видимости.

Почему не сделать все переменные глобальными? Если неизвестно где будет еще использоваться переменная, то почему ее надо ограничивать одной функцией? Когда переменная ограничена легче найти источник ее изменения. Если переменная глобальная, то ее значение может быть изменено в любом месте программного кода, что означает необходимость проследить ее изменение по всей программе. Например, когда переменная имеет некорректное значение, то гораздо легче найти причину если область видимости ограничена.

[1] В некоторых языках программирования, как Python, типы ассоциируются со значениями, а не с именами переменных. Таким образом, имеется возможность присвоит значение любого типа переменной. Это называется динамической типизацией.

Arduino.ru

Присваивает переменной слева от оператора значение переменной или выражения, находящееся справа.

Пример
int sensVal; // объявление переменной типа integer sensVal = analogRead(0); // присваивание переменной sensVal, значения, считанное с аналогового входа 0
Важно

Переменная слева от оператора присваивания (=) должна быть способна сохранить присваиваемое значение. Если оно выходит за диапазон допустимых значений, то сохраненное значение будет не верно.

Необходимо различать оператор присваивания (=) и оператор сравнения (== двойной знак равенства), который осуществляет проверку на равенство.

Как объявить переменную в ардуино

Область видимости переменной

В языке программирования C, использующемся при программировании Ардуино, переменные имеют свойство, называемое область видимости, чего нельзя сказать про первые языки программирования (подобные BASIC), в которых все переменные являются глобальными.

Глобальная переменная — эта та переменная, которая может быть доступна («видна«) из любой функции программы. Локальные переменные доступны только внутри тех функций, в которых они объявлены. При программировании Ардуино, любая переменная, объявленная за пределами функции (таких как, setup(), loop(), и т.д.), является глобальной переменной.

По мере роста программ и увеличения их сложности, локальные переменные становятся незаменимым инструментом, гарантирующим, что доступ к переменным будет иметь только та функция, в которой они объявлены. Это предотвращает ошибки в программе, при которых одна функция случайно изменяет переменные, используемые в другой функции.

Также иногда удобно объявить и инициализировать переменную внутри цикла for. В этом случае переменная будет доступна только в пределах скобок цикла for.

Пример:

int gPWMval; // эта переменная будет доступна из любой функции void setup() < // . >void loop() < int i; // переменная "i" "видна" только внутри "loop" float f; // переменная "f" "видна" только внутри "loop" // . for (int j = 0; j >

Arduino.ru

Переменные в языке программирования С, используемом Arduino, обладают свойством, которое называется область видимости, в отличие от языков, подобных BASIC, где каждая переменная является глобальной.

Глобальная переменная доступна для любой функции в программе. Локальные переменные видны только в той функции, в которой они объявлены. В среде Arduino любая переменная, объявленная вне функции (например, setup(), loop() и т.д.), является глобальной переменной.

Когда программа начинает разрастаться и усложняться, использование локальных переменных – удобный способ, гарантирующий, что только одна функция будет иметь доступ к своим собственным переменным. Тем самым предотвращаются ошибки программирования, когда одна функция непреднамеренно изменяет значения переменных, используемых другой функцией.

Также иногда бывает удобно объявить и инициализировать переменную внутри цикла. При этом создается переменная, доступная только внутри скобок цикла for.

Пример
int gPWMval; // глобальная переменная, видима в любой функции скетча void setup() < // . >void loop() < int i; // "i" видима только внутри "loop" float f; // "f" видима только внутри "loop" // . for (int j = 0; j >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *