Важно помнить, что в отличие от обычных персональных компьютеров, платы Arduino имеют ограниченный объем памяти, так что ее надо экономить - использовать тип, минимально достаточный для хранения данных. К примеру, если нужно хранить 255 кодов вводимых клавиш “0”..”9”, то для этого достаточно написать
Кстати, откуда взялись подобные ограничения? Это связано с тем, что физически данные хранятся в виде бит, в так называемой двоичной системе счисления
.Один
5 = 0
*128 + 0*64 + 0*32 + 0*16 + 0*8 + 1*4 + 0*2 + 1*1 = 00000101.Нетрудно подсчитать, что максимально возможное число при таком виде записи будет составлять 128+64+32+16+8+4+2+1 = 255. Это так называемое
Для 16-битных чисел диапазон значений соответственно больше, при желании их нетрудно подсчитать самостоятельно.
value = (1 + b0
/2 + b1/4 + b2/8 + b3/16 + … ) * 2e-127Действительно, нетрудно подсчитать, что:
(1 + 1/2 + 1/16 + ...) * 21
= 3.14Важно отметить, что в отличие от целых чисел, вещественные числа представляются с некоторой небольшой погрешностью, она невелика, но она есть.
Разумеется, для пользователя все это прозрачно - можно написать float pi = 3.14, и не задумываться как оно внутри хранится. Но чтобы писать эффективные программы, про хранение данных хотя бы в общих чертах необходимо знать.
Теперь, вооруженные всеми этими знаниями, мы можем вновь взять плату Arduino обратно, и продолжить эксперименты с “железом”.
2.3 Мигаем светодиодом
В предыдущей части мы уже подключали светодиод к источнику питания. Arduino Nano содержит уже подключенный светодиод, для его использования достаточно лишь написать программу.
Каждый вывод микроконтроллера может работать в двух режимах: как вход
(input), или как выход (output). Режим “выход” - это то, что нам нужно, при подаче на вывод “1” на выводе появляется напряжение 5В, при подаче на вывод “0” напряжение становится равным 0.Для того, чтобы запрограммировать Arduino, нам понадобится:
- Скачать и установить Arduino IDE со страницы https://www.arduino.cc/en/Main/Software
- Подключить плату к компьютеру, в системе при этом должен появиться новый порт, например COM7
- Запустить Arduino IDE, набрать текст программы, как показано на рисунке
- Нажать кнопку левую кнопку “Проверить” и соседнюю “Загрузить” - программа будет загружена в Arduino.
Если все было сделано правильно, через несколько секунд мы увидим мигающий на плате светодиод (при самом первом запуске, Arduino IDE вначале предложит сохранить текст исходного кода в файле). Если вместо сообщения “Done compiling” мы видим ошибку, нужно внимательно прочитать, что она значит. К примеру, может быть выбран неправильный порт, или в тексте программы есть опечатка.
Теперь, можно отложить мигающую плату, и разобраться, что же мы такое сделали.
Разберем программу по шагам.
int led = 13;
Здесь создается глобальная переменная, хранящая номер вывода “13”, к которому подключен светодиод (номера выводов можно посмотреть в документации к плате).void setup()
- здесь объявляется функция setup, которая будет вызвана только один раз при запуске программы. В ней мы настраиваем наш вывод 13 как “выход”, вызовом функции pinMode(led, OUTPUT);.Функция loop()
, в отличие от setup, выполняется постоянно, бесконечное число раз. В ней мы и размещаем всю логику работы программы. В данном случае, логика проста - мы посылаем в порт логическую “1” командой digitalWrite(led, HIGH), затем ждем одну секунду с помощью вызова delay(1000), затем посылаем логический “0”, опять ждем. Данный цикл будет автоматически повторяться, пока плата включена и работает.Огромный плюс использования микроконтроллеров - в их огромной гибкости, изменяя код, мы можем полностью менять логику работы программы. Например, несложно сделать чтобы светодиод мигал в режиме “2 коротких, 1 длинный”, для этого достаточно лишь изменить текст кода:
void loop() {
digitalWrite(led, HIGH);