Знакомство с контроллером Arduino – управление светодиодами
Контроллер Arduino
В качестве основы для обучения и проектов Центра робототехники "МариБот" используется контроллер Arduino. Выбор обусловлен низкой стоимостью при достаточно неплохих характеристиках, большим количеством программ и модулей, разработанных для работы с Arduino и расширяющих его возможности.
Макетная плата
Используемый для занятий стенд содержит макетную плату, все верхние контакты которой подключены к пину +5 В, нижние контакты – к пину Gnd (0 В) Arduino. Эти контакты используются в схемах и для питания внешних датчиков и модулей.
Остальные отверстия соединены вместе по 5 контактов (некоторые выделены полосками в качестве примеров, таким же образом соединены и все остальные) и могут использоваться для реализации различных схем путем втыкания в отверстия макетной платы элементов и модулей и проводных соединителей типа штырек/штырек. На основе макетной платы и Arduino Uno в клубе собираются роботы-роверы.
Программирование
Язык программирования Arduino основан на языке Си. Если Вы желаете посмотреть команды данного языка, выполните в среде программирования Arduino IDE команду меню Справка / Содержание.
Управление светодиодами
Контакты должны быть определены как выходные (Output) в блоке setup:
pinMode(контакт, к которому подключен светодиод, OUTPUT);
Чтобы включить светодиод:
digitalWrite (контакт, к которому подключен светодиод, HIGH);
Период, в течение которого работает светодиод: delay (время в миллисекундах)
Чтобы выключить светодиод:
digitalWrite (контакт, к которому подключен светодиод, LOW);
Blink
- Откройте пример программы для управления миганием встроенного на плату светодиода L: Файл / Примеры / Basic / Blink
- Нажмите кнопку Загрузить Ü, убедитесь, что в нижней части окна появилась надпись Компилирование, которая через некоторое время сменится надписью Загрузка (на Arduino замигают светодиоды RX и TX) и появится надпись Загрузка выполнена.
- Убедитесь, что светодиод L на плате начал мигать с периодом в 1 секунду
- В программе периоды мигания заданы командой delay, при выполнении которой контроллер ждет время в миллисекундах, заданное в скобках (1000 миллисекунд = 1 секунда). Измените числа в скобках после команд delay, и загрузите программу. Период миганий светодиода должен измениться.
Рассмотренная программа управляет внутренним светодиодом, который подключен к контакту 13. Аналогично можно управлять внешними светодиодами, а также другими устройствами.
Пять светодиодов
Соедините проводом соответствующего цвета отверстие над верхним контактом светодиода с контактом контроллера Arduino. Номера контактов 1, 2, 3, 4 и 5, подписаны над ними. Схема ниже.
На основе программы Blink, копируя соответствующие участки кода (выделить и правая кнопка мыши / Копировать, правая кнопка / Вставить) напишите программу управления пятью светодиодами:
Пример кода мигания пяти светодиодов (то, что после // – комментарии, их в код вводить не надо):
void setup() { // прописываем контакты Arduino, к которым подключены светодиоды, как выходные pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop() { // включить все светодиоды: digitalWrite(1, HIGH); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); delay(1000); // подождать одну секунду // выключить все светодиоды: digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); delay(1000); // подождать одну секунду } // начнем цикл loop снова |
Также, можно написать программу для бегущего огня. В этом случае нужно зажечь только первый светодиод (1, HIGH), а остальные погасить (2, 3, 4 и 5 LOW), сделать задержку, зажечь второй светодиод (2, HIGH), а погасить остальные (1, 3, 4 и 5 LOW) и т.д.
Еще варианты программ:
- бегущий огонь от первого светодиода до пятого, затем обратно к первому
- два бегущих светодиода
- гирлянда, как на елке (сначала горят четные, а нечетные не горят, потом наоборот)
- свой вариант (что сами захотите, в т.ч. можно подключить бОльшее число светодиодов)