Мигание встроенным светодиодом на Ардуино без делай

Мигание светодиодом Ардуино, встроенного в плату — один из первых примеров скетчей, для начинающих изучать программирование микроконтроллера 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 секунду
}

Пояснения к коду:

  1. delay(); останавливает программу на заданное количество микросекунд;
  2. данный код подойдет к плате Arduino Nano и Arduino Mega.



Мигание светодиода на Ардуино без delay

В коде используется функция millis, которая возвращает количество миллисекунд с момента начала программы. Благодаря этой функции можно организовать многозадачность микроконтроллера. В отличии от функции delay();, программа не останавливает выполнение команд в скетче, а считает когда пройдет заданное количество миллисекунд и может выполнять параллельные задачи.

Схема для мигания светодиодом на Ардуино без delay
Схема для мигания светодиодом на Ардуино без 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);
    }
}

Пояснения к коду:

  1. каждые 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 секунду
}

Пояснения к коду:

  1. включение/выключение светодиодов происходит поочередно;
  2. одновременное включение можно сделать, поменяв местами строчки в коде.

Заключение. В этом обзоре мы рассмотрели, как сделать мигающий светодиод на Arduino Nano или Uno. Заставить светодиод мигать можно с помощью задержки delay или через millis. Если у вас остались вопросы по данной теме, то можете их смело оставлять в комментариях к этой записи. Мы постараемся ответить на все вопросы по мере поступления. Желаем успехов в освоении программирования Arduino.



8 Replies to “Мигание светодиодом Ардуино”

  1. У вас на рисунке плюс подключается к катоду а не к аноду и из-за этого схема не работает

    1. В предыдущем уроке было написано, что резистор подключается перед анодом

  2. Может я что-то не понимаю, но оператор If выполнит действие когда millis будет равен 501, поэтому светодиод будет переключаться через каждую 501 миллисекунду.

    1. Все верно говорите, просто в этом примере 1 миллисекунда ничего не решает при мигании светодиода без delay

  3. Добрый день. Никак не могу понять принцип работы функции millis. Можно попросить ещё раз объяснить это на ещё более простом уровне.

  4. У вас на рисунке плюс подключается к катоду а не к аноду и из-за этого схема не работает

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.