Урок 7. Написание первой программы – Мигание встроенным светодиодом. Подключение внешнего светодиода.

В учебном пособии для любого языка программирования есть самый первый пример, каноническая программа вывода строки ̎Hello, World!̎ . Поскольку Arduino — это не совсем язык программирования, а железка, к тому же (пока) без средств вывода текста, первым делом мы запрограммируем контроллер для управления миганием светодиода. Приступим к написанию первого скрипта.
Для первой программы нам понадобится только сама плата Arduino UNO WiFi R4 и USB кабель для связи с компьютером.
Запускаем программу Snap4Arduino. И подключаемся к плате Arduino (см. урок 6). Теперь в поле размещения блоков добавляем из группы Управление блок старта скрипта:
Риc 7.1. Добавление блока старта скрипта.

Далее добавляем бесконечный цикл:
Риc 7.2. Добавление блока бесконечного цикла.

Из группы Arduino добавим блок управления цифровым пином и укажем в пареметрах цифровой пин 13 (к цифровому пину 13 на плате Arduino подсоединен встроенный светодиод):
Риc 7.3. Добавление блока управления цифровым пином.

Из группы Операторы выберем блок истина и добавим в блок управления цифровым пином, тем самым создав команду включения светодиода:
Риc 7.4. Включение светодиода, подключенного к цифровому пину 13.

Из группы Управление добавляем блок ожидания и выставляем значение 1 секунда:
Риc 7.5. Добавление задержки программы на 1 секунду.

Добавляем блоки для выключения светодиода:
Риc 7.6. Добавление блоков выключения светодиода и задержки программы на 1 секунду.

Скрипт готов. Кликом мышки активируем поле блока скрипта. Для запуска нажимаем на запуск ( ̎флажок̎ из блока команд управления скриптом). На плате Arduino светодиод ̎загорается̎ на 1 секунду, затем ̎гаснет̎ на 1 секунду и далее по циклу.
Теперь рассмотрим подключение внешнего светодиода. Светодиод – это полупроводниковый прибор, преобразующий электрический ток непосредственно в световое излучение. Цветовые характеристики светодиодов зависят от химического состава использованного в нем полупроводника. Светодиод излучает в узкой части спектра, его цвет чист, что особенно ценят дизайнеры. Светодиоды поляризованы, имеет значение, в каком направлении подключать их. Положительный вывод светодиода (более длинный) называется анодом, отрицательный – катодом. Как и все диоды, светодиоды позволяют току течь только в одном направлении – от анода к катоду. Поскольку ток протекает от положительного к отрицательному, анод светодиода должен быть подключен к цифровому сигналу, а катод должен быть подключен к земле.
Схема подключений показана на рис. 7.7.
Рис. 7.7. Схема соединений для подключения внешнего светодиода.

В схеме подключения светодиодов к цифровым выходам мы используем ограничительный резистор номиналом 220 Ом. Рассмотрим, как подобрать ограничительный резистор и как будет влиять номинал резистора на яркость светодиода.
Вспоминаем закон Ома:
U = I×R,
где U – напряжение в вольтах; I – ток в амперах; R – сопротивление в омах.
В электрической схеме каждый компонент имеет некоторое сопротивление, что снижает напряжение. Светодиоды имеют предопределенное падение напряжения на них и предназначены для работы в определенном значении тока. Чем больше ток через светодиод, тем ярче светодиод светится, до предельного значения. Для наиболее распространенных светодиодов максимальный ток составляет 20 мА. Обычное значение падения напряжения для светодиода – около 2 В. Напряжение питания 5 В должно упасть на светодиоде и резисторе, поскольку доля светодиода 2 В оставшиеся 3 В должны упасть на резисторе. Зная максимальное значение прямого тока через светодиод (20 мА), можете найти номинал резистора.
R = U/I = 3/0,02 = 150 Ом
Таким образом, со значением резистора 150 Ом ток 20 мА протекает через резистор и светодиод. По мере увеличения значения сопротивления ток будет уменьшаться. 220 Ом немного более чем 150 Ом, но все же позволяет светиться светодиоду достаточно ярко, и резистор такого номинала очень распространен. В качестве внешнего светодиода мы будем использовать светодиод, расположенный на плате Easy Module shield. На плате Easy Module shield светодиоды подключены к цифровым выводам D12 и D13(см. урок 4). Ограничительные резисторы в схему уже включены.
Устанавливаем Easy Module shield на плату Arduino, в блоке управления цифровым пином меняем номер пина и запускаем скрипт. Мигает внешний светодиод (установленный на Easy Module shield) на выбранном в программе пине.
Для сохранения скрипта выберем в меню Файл пункт Экспортировать проект и выберем соответствующее место для загрузки. Для загрузки скрипта (например, из приложенной папки с лабораторными работами) выберем в меню Файл пункт Импорт и выберем соответствующий XML файл. Скачать данный скрипт можно на сайте Arduino-kit по ссылке https://amegakit.ru/libraries/lib_Lab_Om-Robot.zip.

Создание скетча в программе Arduino IDE.

Программа, написанная в среде Arduino, носит название скетч. Скетч пишется в текстовом редакторе, который имеет цветовую подсветку создаваемого программного кода. Во время сохранения и экспорта проекта в области сообщений появляются пояснения и информация об ошибках. Окно вывода текста показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию. Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины.
В программе обязательно должны быть две записи, void setup() и void loop()– это так называемые функции, первая выполняется единоразово, при подаче питания на Arduino, а вторая выполняется циклически до тех пор, пока присутствует питание микроконтроллера. В функцию setup() записываются различные настройки микроконтроллера для дальнейшей работы – например, это может быть конфигурация портов ввода/вывода, либо инициализация подключенного вами дисплея или датчика. Главное, что нужно запомнить, с этой функции начинается работа микроконтроллера и все, что в ней написано, выполняется только один раз. Функция loop() выполняется сразу же после функции setup(), и после этого микроконтроллер постоянно работает в ней.
Запускаем программу Arduino IDE и создаем новый скетч (Файл -- Новый эскиз).
Цифровые сигналы Arduino имеют только два отдельных значения: высокий (HIGH, 1) и низкий (LOW, 0) уровни. Мы можем использовать цифровые сигналы в ситуациях, где вход или выход будет принимать одно из этих двух значений. Поскольку цифровые выводы Arduino могут использоваться в качестве и входа, и выхода, сначала необходимо их настроить. Для настройки цифровых выводов в Arduino используется встроенная функция pinMode(), которая имеет следующий синтаксис:
pinMode(pin, mode)
где
  • pin – номер вывода Arduino;
  • mode – устанавливаемый режим для вывода pin:
  • INPUT – pin в режиме входа;
  • OUTPUT – pin в режиме выхода;
  • INPUT_PULLUP – в этом режиме к выводу подключается внутренний подтягивающий резистор 20 кОм, чтобы привести уровень на выводе к значению HIGH, если к нему ничего не подключено.
В данном случае мы будем использовать вывод Arduino в режиме выходе (OUTPUT), для включения и выключения светодиода.
Светодиод должен одновременно мигать с определенной частотой. В процедуре setup() настроим режим работы контакта (пина), к которому подключен светодиод, как OUTPUT (выход)

void setup() {
pinMode(12,OUTPUT);
}

В процедуре loop() сначала зажигаем светодиод (подаем на вывод 12 сигнал HIGH), ждем некоторое время (время "горения"), затем "тушим" светодиод (подаем на вывод 12 сигнал LOW) и опять ждем некоторое время и т.д. по кругу. Для выполнения операции подождать "некоторое время" мы будем использовать встроенную Arduino функцию delay(). Эта функция просто останавливает выполнение программы на заданное в параметре количество миллисекунд (1000 миллисекунд в 1 секунде). Например:

delay(1000); // останавливает выполнение программы на 1000 мсек

И весь код программы в листинге 1.1. Скачать данный скетч 07_01.ino можно по ссылке https://amegakit.ru/libraries/lib_Lab_Om-Robot.zip.

Листинг 1.1
void setup() {
// настроить вывод 12 Arduino как OUTPUT
pinMode(12,OUTPUT);
}

void loop() {
// включить светодиод
digitalWrite(12, HIGH);
// пауза 1000 мсек (1 сек)
delay(1000);
// выключить светодиод
digitalWrite(12, LOW);
// пауза 1000 мсек (1 сек)
delay(1000);
}

Загрузим данный скетч на плату Arduino. Вы должны наблюдать включение/выключение красного светодиода на плате Easy Module shield с частотой 1 секунда.