СОДЕРЖАНИЕ ►
Мигание светодиодом Ардуино, встроенного в плату — один из первых примеров скетчей, для начинающих изучать программирование микроконтроллера Arduino Uno или Arduino Nano. Разберем несколько примеров — мигание встроенным светодиодом, мигание без delay, мигание несколькими светодиодами. Прочитав статью до конца, вы поймете, как управлять миганием светодиодов, подключенных к Ардуино.

Мигание светодиодом на Ардуино Уно, Нано
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- светодиоды и резисторы;
- макетная плата;
- провода «папа-папа».
Платы данного семейства имеют встроенный светодиод на плате, подключенный к пину 13 через резистор. Этот светодиод мигает при включении или перезагрузке микроконтроллера. Можно с помощью программы управлять включением и выключением (миганием) светодиодом, который «висит» на 13 пине Arduino Uno и Nano. При этом не потребуется даже собирать на макетной плате электрическую схему.
Мигание встроенным светодиодом на плате
Для первого примера не потребуется собирать принципиальную схему. Код программы, используется из примера «Подключение светодиода к Ардуино». Встроенный светодиод подключается через резистор, поэтому к 13 пину можно подключать внешний светодиод без резистора. Это самый простой скетч, с которого начинают знакомство с Ардуино, скопируйте код и загрузите его в микроконтроллер через Arduino IDE.
Скетч. Мигание светодиодом Ардуино на плате
void setup() { pinMode(13, OUTPUT); // объявляем пин 13 как выход } void loop() { digitalWrite(13, HIGH); // зажигаем светодиод delay(1000); // ждем 1 секунду digitalWrite(13, LOW); // выключаем светодиод delay(1000); // ждем 1 секунду }
Пояснения к коду:
delay();останавливает программу на заданное количество микросекунд;- данный код подойдет к плате Arduino Nano и Arduino Mega.
Мигание светодиода на Ардуино без delay
В коде используется функция millis, которая возвращает количество миллисекунд с момента начала программы. Благодаря этой функции можно организовать многозадачность микроконтроллера. В отличии от функции delay();, программа не останавливает выполнение команд в скетче, а считает когда пройдет заданное количество миллисекунд и может выполнять параллельные задачи.

Скетч. Мигающий светодиод Ардуино без delay
unsigned long currentTime; // переменная времени boolean ledState = 0; // переменная состояния светодиода void setup() { pinMode(10, OUTPUT); // объявляем пин 10, как выход } void loop() { if (millis() - currentTime > 500) // проверяем сколько прошло миллисекунд { currentTime = millis(); ledState=!ledState; // меняем состояние светодиода на противоположное digitalWrite(10, ledState); } }
Пояснения к коду:
- каждые 500 миллисекунд состояние переменной
booleanменяется на противоположное с помощью командыledState=!ledState.
Мигание двух светодиодов на Ардуино
Для следующего примера потребуется собрать схему на макетной плате из двух светодиодов, как изображено на картинке ниже. Более сложная программа с мигающими светодиодами — это светофор на Ардуино, где уже необходимо регулировать включение и выключение трех светодиодов и больше. После сборки электрической схемы загрузите следующий код в микроконтроллер.

Скетч. Мигание несколькими светодиодами одновременно
void setup() { pinMode(12, OUTPUT); // объявляем пин 12 как выход pinMode(10, OUTPUT); // объявляем пин 10 как выход } void loop() { digitalWrite(12, HIGH); // зажигаем светодиод digitalWrite(10, LOW); // выключаем светодиод delay(1000); // ждем 1 секунду digitalWrite(12, LOW); // выключаем светодиод digitalWrite(10, HIGH); // зажигаем светодиод delay(1000); // ждем 1 секунду }
Пояснения к коду:
- включение/выключение светодиодов происходит поочередно;
- одновременное включение можно сделать, поменяв местами строчки в коде.
Заключение. В этом обзоре мы рассмотрели, как сделать мигающий светодиод на Arduino Nano или Uno. Заставить светодиод мигать можно с помощью задержки delay или через millis. Если у вас остались вопросы по данной теме, то можете их смело оставлять в комментариях к этой записи. Мы постараемся ответить на все вопросы по мере поступления. Желаем успехов в освоении программирования Arduino.










У вас на рисунке плюс подключается к катоду а не к аноду и из-за этого схема не работает
Спасибо за замечание. Исправили схему подключения светодиодов
В предыдущем уроке было написано, что резистор подключается перед анодом
Может я что-то не понимаю, но оператор If выполнит действие когда millis будет равен 501, поэтому светодиод будет переключаться через каждую 501 миллисекунду.
Все верно говорите, просто в этом примере 1 миллисекунда ничего не решает при мигании светодиода без delay
Можно сделать так чтобы светодиоды мигали с разной частотой?
Добрый день. Никак не могу понять принцип работы функции millis. Можно попросить ещё раз объяснить это на ещё более простом уровне.
У вас на рисунке плюс подключается к катоду а не к аноду и из-за этого схема не работает