В этой статье мы предлагаем ознакомиться с основами программирования платы Arduino UNO, предназначенной для создания простых систем робототехники и автоматики. Мы соберём схему из семи светодиодов, которые будут последовательно загораться и гаснуть.
Для этого нам понадобится сама плата Arduino UNO, макетная плата, USB кабель для подключения платы и её и питания от ноутбука, семь разноцветных светодиодов и столько же резисторов на 220 Ом и восемь небольших проводочков.
Также нам потребуется программное обеспечение, скачанное с официального сайта разработчика — www.arduino.cc
Запускаем установщик, следуем всем инструкциям установки и у нас на десктопе появляется ярлык среды разработки программ для Arduino.
Но прежде чем писать программный код, нужно собрать схему.
Наша программа записывается в микроконтроллер на плате через USB кабель.
На плате есть 14 цифровых контактов для ввода/вывода, к которым мы можем присоединить проводами диоды.
Диоды помещаем на макетную плату. К аноду каждого из них присоединяем один конец резистора на 220 Ом. К другому концу резистора присоединяем проводок, который втыкается в один из портов ввода-вывода платы. Мы воткнули во второй.
Все катоды выводим на один провод, который подключаем к контакту платы GND — земля.
Далее запускаем среду разработки и приступаем к написанию кода программы.
По-умолчанию у нас в программе есть 2 функции:
void setup() { } |
В ней задаются начальные параметры и настройки.
void loop() { } |
Функция, в которой будут циклически повторяться указанные нами действия.
Для начала напишем простую программу, мигающую одной лампочкой.
/*Программа для схемы с одним мигающим диодом*/ //целочисленная константа, которой присваивается значение 2го контакта const int LED = 2; void setup() { void loop() { |
Подключаем плату Arduino к компьютеру через USB кабель. Если это первое подключение — ждем, когда установятся драйвера.
Затем нужно указать в разделе «Инструменты» тип платы: Arduino — UNO.
А также, порт, через который будут передаваться данные.
После выбора порта жмём кнопочку со стрелкой «Загрузка» и наша программа загружается в микроконтроллер.
Если нет никаких ошибок в коде, то начинается выполнение программы. Лампочка начинает мигать.
По такому же принципу в цепь можно включить несколько светодиодов, каждый из которых подключим к своему порту на плате.
Чтобы эти диоды попеременно включались и выключались произведем соответствующие изменения в коде программы.
/*Программа для схемы с 7ю мигающии диодами. Сначала все последовательно включаются, потом последовательно выключаются*/ /*целочисленная переменная, которой присваивается начальное значение 2 контакта*/ int LED = 2; void setup() { void loop() { |
С этим кодом можно поиграться, например сделать так, чтобы включён был только один диод из семи, но свет перемещался как змейка.
/*Программа для схемы с 7ю мигающии диодами, в которой один диод загорается, а предыдущий гаснет*/ /*целочисленная переменная, которой присваивается начальное значение 2 контакта*/ int LED = 2; void setup() { void loop() { |
А можно сделать и реальную «змейку» из нескольких огоньков, например 3, добавив функций в код.
/*Программа для схемы с 7ю мигающии диодами, в которой за раз светятся только 3 диода, и этот огонёк пробегает змейкой по всем 7ми*/ /*целочисленная переменная, которой присваивается начальное значение 2 контакта*/ int LED = 2; //длина «змейки» - 3 диода светятся за раз int snake_length = 3; void setup() { void loop() { int snake_check(int param) void snake(int init, int finite) for(int i = init; i <= finite; i++) |
А еще можно сделать увеличивающуюся в размере змейку.
/*Программа для схемы с 7ю мигающии диодами, в которой огонёк пробегает змейкой по всем 7ми, но длина этого огонька постепенно увеличивается*/ /*целочисленная переменная, которой присваивается начальное значение 2 контакта*/ int LED = 2; //длина «змейки» - сколько диодов светятся за раз int snake_length = 1; //максимальная длина «змейки» int max_snake_length = 6; void setup() { void loop() { int snake_check(int param) void snake(int init, int finite) for(int i = init; i <= finite; i++) |