Сегодня в Arduino уроке рассмотрим излюбленный пример школ робототехники, светофор на Arduino. Реализация светофора на Arduino популярна, благодаря наглядному примеру работы распространённого устройства, который мы встречаем ежедневно. Помимо этого, при реализации алгоритма работы светофора можно использовать как минимальные знания в программировании Ардуино, так и более сложные алгоритмы. Что позволяет реализовать светофор с любыми знаниями в программировании.
Познакомиться подробнее с алгоритмом работы устройства, которое мы видим практически ежедневно. А также разобрать несколько вариантов написания программы реализации светофора на Arduino.
Светофор — оптическое устройство, подающее световые сигналы, регулирующие движение автомобильного, железнодорожного, водного и другого транспорта, а также пешеходов на пешеходных переходах.
Наиболее распространены светофоры с сигналами (обычно круглыми) трёх цветов: красного, жёлтого и зелёного. В некоторых странах, в том числе и в России, вместо жёлтого используется оранжевый цвет. Сигналы могут быть расположены как вертикально (при этом красный сигнал всегда располагается сверху, а зелёный — снизу), так и горизонтально (при этом красный сигнал всегда располагается слева, а зелёный — справа). При отсутствии других, специальных светофоров, они регулируют движение всех видов транспортных средств и пешеходов.
В некоторых городах России, Украины и других стран устанавливаются светофоры с увеличенным красным сигналом (300/200/200 mm). Такие светофоры распространены в Санкт-Петербурге, Киеве, Риме и других городах.
Повсеместно распространены основные сигналы светофоров:
На просторах интернета нашел иллюстрацию отображающую алгоритм работы светофора.
Как видим, светофор должен работать вот по такому алгоритму:
После чего цикл повторяем с красного сигнала светофора на Arduino.
На сайте Портал ПК делал данный урок года 2 назад. После чего мне написали достаточно много комментариев по поводу того, что нужно добавить мигание зеленым сигналом светофора. В данном уроке исправим недоработку и сделаем мигание зеленым сигналом светофора.
Схема подключения не очень сложная и для подключения нам понадобится макетная плата, 3 светодиода и 3 резистора наминало 220 Ом. А также Arduino UNO и соединительные провода.
Все соединяем по схеме.
Как собрать схему в Tinkercad смотрите в видео, которое располагается вверху статьи.
Реализовать программу светофора на Arduino можно различными способами. Сперва рассмотрим работу светофора по алгоритму, который изображён на картинке выше.
Для этого создадим переменные и инициализируем пины как выход.
int led_red = 2; int led_yellow = 3; int led_green = 4; boolean ledOn = HIGH; void setup() { pinMode(led_red, OUTPUT); pinMode(led_yellow, OUTPUT); pinMode(led_green, OUTPUT); }
Если вы не понимаете, что написано в данных строчках, посмотрите предыдущие Arduino уроки.
В основном цикле loop() можно все реализовать, используя функции digitalWrite() и delay(). В итоге должен получиться вот такой код.
int led_red = 2; int led_yellow = 3; int led_green = 4; void setup() { pinMode(led_red, OUTPUT); pinMode(led_yellow, OUTPUT); pinMode(led_green, OUTPUT); } void loop() { digitalWrite(led_red, HIGH); delay(2000); digitalWrite(led_yellow, HIGH); delay(700); digitalWrite(led_red, LOW); digitalWrite(led_yellow, LOW); digitalWrite(led_green, HIGH); delay(2000); digitalWrite(led_green, LOW); digitalWrite(led_yellow, HIGH); delay(700); digitalWrite(led_yellow, LOW); }
Скетч достаточно простой и без мигания зеленым цветом светофора.
А чтобы заставить мигать зеленый светодиод воспользуемся функцией for(), которую рассматривали в предыдущем уроке: Урок 4. Arduino – цикл for.
Цикл позволяющий мигать зеленым светодиодом будет таким:
for (int i = 0; i<6; i++) { digitalWrite(led_green, LOW); delay(500); digitalWrite(led_green, HIGH); delay(500); }
При желании данный код можно немного модернизировать. Так как мы изучили булевые переменные в: Урок 3. Два светодиода. Создадим переменную
boolean ledOn = HIGH; //И изменим цикл. for (int i = 0; i<6; i++) { ledOn = !ledOn; digitalWrite(led_green, ledOn); delay(500); }
Цикл выполняется 6 раз, так как при каждом выполнении цикла мы меняем булевую переменную с HIGH на LOW и наоборот. И выполняем либо включение светодиода, либо включение. По этой причине количество раз выполнения цикла увеличивается в 2 раза.
Конечный вариант кода светофора на Arduino будет вот таким:
int led_red = 2; int led_yellow = 3; int led_green = 4; boolean ledOn = HIGH; void setup() { pinMode(led_red, OUTPUT); pinMode(led_yellow, OUTPUT); pinMode(led_green, OUTPUT); } void loop() { digitalWrite(led_red, HIGH); delay(2000); // Wait for 10000 millisecond(s) digitalWrite(led_yellow, HIGH); delay(700); digitalWrite(led_red, LOW); digitalWrite(led_yellow, LOW); digitalWrite(led_green, HIGH); delay(2000); // Wait for 1000 millisecond(s) for (int i = 0; i<6; i++) { ledOn = !ledOn; digitalWrite(led_green, ledOn); delay(500); } digitalWrite(led_green, LOW); digitalWrite(led_yellow, HIGH); delay(700); digitalWrite(led_yellow, LOW); }
Arduino UNO уроки для начинающих можно использовать не только в симуляторе, но и программировать реальную Arduino UNO. Для этого полученный код можно скопировать в Arduino IDE и загрузить в отладочную плату. Подробнее о загрузке кода смотрите в предыдущем уроке.
Мы рады объявить о нашем присутствии на Boosty! Arduino-Tex приглашает всех наших друзей и последователей поддержать нас на этой замечательной платформе. Здесь вы найдете эксклюзивный контент, уникальные проекты и возможность стать частью нашей творческой команды. Присоединяйтесь к нам на Boosty и вместе мы сделаем мир Arduino еще удивительнее!
Понравился Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Скетч (код) к уроку 5. Светофор на Arduino UNO.ino | 1 Kb | 2617 | Скачать |
Не работает зеленый цвет
ДА, вариант хороший
Спасибо, ваш сайт очень полезный!
Уроки Arduino для начинающих
24 августа , 2020
Комментариев:3
Файлов для скачивания:1
Фото:8
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии