Это старая версия документа!


Константы

Константами в языке Ардуино называют некоторые предопределенные значения. Они позволяют сделать код программы более легким для восприятия.

Логические константы

false (ложь) - определяется как 0, в логическом выражении.
true (истина) - обычно говорят, что это 1, но для типа integer любой значение отличное от 0 будет также true в логическом выражении.

Уровень напряжения на выводах, HIGH и LOW

При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.

HIGH
Значение константы HIGH может отличатся в зависимости от того, в какой режим переключен контакт (INPUT или OUTPUT). Когда порт входа/выхода установлен в режим INPUT с помощью функции pinMode(), и считывается функцией digitalRead(), микроконтроллер отдаст значение HIGH при напряжение 3В или выше на указанном порту.

Также порт может быть установлен как INPUT функцией pinMode(), и затем установлен в HIGH значение функцией digitalWrite(). Это подключит к порту внутренний подтягивающий резистор 20 кОм, что позволит получать постоянное значение HIGH при чтение этого порта, если только значение не будет приведено к LOW внешней цепью подключенной к этому порту.

Когда порт входа/выхода сконфигурирован как OUTPUT функцией pinMode(), и установлено значение HIGH функцией digitalWrite(), на порту будет постоянное напряжение 5В. От этого порта может быть запитан светодиод, подключенный через резистор на землю или к другому порту, сконфигурированному как OUTPUT и установленному в LOW.

LOW
Значение LOW также разное для режима INPUT и OUTPUT. Когда порт сконфигурирован как INPUT, и считывается функцией digitalRead(), микроконтроллер вернет LOW если напряжение на данном порту меньше или равно 2В.

Если же порт установлен в OUTPUT и LOW, то напряжение на выходе порта будет 0 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.

Задание режима порта входа/выхода, INPUT и OUTPUT

Цифровые порты входа/выхода, могут быть установлены в режимы работы как вход или выход: INPUT или OUTPUT. Установка производится функцией pinMode().

INPUT
Порты Контроллера установленные в режим INPUT находятся в высокоимпедансном состоянии. Это означает, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения различных датчиков, но не питания.

OUTPUT
Порт установленный в режим выхода — OUTPUT, находится в низкоимпедансном состоянии. Он может пропускать через себя довольно большой ток, до 40 mA, достаточный для запитывания внешней цепи, например, светодиода. В этом состоянии порт может быть поврежден, как при замыкании на землю так и на питание 5В. Тока с порта микроконтроллера не достаточно для питания моторов и сервоприводов напрямую.

Типы данных

Тип определяет возможные значения и их смысл, операции, а также способы хранения значений типа.

boolean

Может принимать одно из двух значений true или false. boolean занимает в памяти один байт.

int

Тип данных int (от англ. integer - целое число) один из наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767 (от -2^15 до 2^15-1).
Для размещения отрицательных значений int использует, так называемый, дополнительный код представления числа. Старший бит указывает на отрицательный знак числа, остальные биты инвертируются с добавлением 1.
Arduino компилятор сам заботиться о размещении в памяти и представлении отрицательных чисел, поэтому арифметические действия над целыми числами производятся как обычно.
Когда переменная типа int в следствие арифметической операции достигает своего максимального значения, она «перескакивает» на самое минимальное значение и наоборот.

unsigned int

Тип данных unsigned int - без знаковое целое число, также как и тип int (знаковое) занимает в памяти 2 байта. Но в отличие от int, тип unsigned int может хранить только положительные целые числа в диапазоне от 0 до 65535 (2^16)-1).
Отличие кроется в том как unsigned int использует старший бит, иногда называемый знаковый бит. Если старший бит равен 1, то для типа int компилятор Arduino считает, что это число отрицательное, а остальные 15 bit несут информацию о модуле целого числа в дополнительном коде представления числа, в то время как unsigned int использует все 16 бит для хранения модуля числа.

long

Тип данных long используется для хранения целых чисел в расширенном диапазоне от -2,147,483,648 до 2,147,483,647. long занимает 4 байта в памяти.

unsigned long

Unsigned long используется для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295 (2^32 - 1) и занимает 32 бита (4 байта) в памяти.