Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad.

Сегодня в Arduino уроке рассмотрим излюбленный пример школ робототехники, светофор на Arduino. Реализация светофора на Arduino популярна, благодаря наглядному примеру работы распространённого устройства, который мы встречаем ежедневно. Помимо этого, при реализации алгоритма работы светофора можно использовать как минимальные знания в программировании Ардуино, так и более сложные алгоритмы. Что позволяет реализовать светофор с любыми знаниями в программировании.

Цель урока: Светофор на Arduino UNO.

Познакомиться подробнее с алгоритмом работы устройства, которое мы видим практически ежедневно. А также разобрать несколько вариантов написания программы реализации светофора на Arduino.


Что такое светофор?

Светофор — оптическое устройство, подающее световые сигналы, регулирующие движение автомобильного, железнодорожного, водного и другого транспорта, а также пешеходов на пешеходных переходах.

Наиболее распространены светофоры с сигналами (обычно круглыми) трёх цветов: красного, жёлтого и зелёного. В некоторых странах, в том числе и в России, вместо жёлтого используется оранжевый цвет. Сигналы могут быть расположены как вертикально (при этом красный сигнал всегда располагается сверху, а зелёный — снизу), так и горизонтально (при этом красный сигнал всегда располагается слева, а зелёный — справа). При отсутствии других, специальных светофоров, они регулируют движение всех видов транспортных средств и пешеходов.

Что такое светофор?

В некоторых городах России, Украины и других стран устанавливаются светофоры с увеличенным красным сигналом (300/200/200 mm). Такие светофоры распространены в Санкт-Петербурге, Киеве, Риме и других городах.

В некоторых городах России, Украины и других стран устанавливаются светофоры с увеличенным красным сигналом (300/200/200 mm).

Повсеместно распространены основные сигналы светофоров:

  • красный сигнал светофора запрещает проезд за стоп-линию (при её отсутствии за светофор),
  • жёлтый обязывает сбросить скорость и быть готовым к тому, что светофор через 0,5 — 1 сек переключится на красный,
  • зелёный — разрешает движение со скоростью, не превышающей максимальный уровень для данной автотрассы.

Алгоритм смены сигналов светофора на Arduino.

На просторах интернета нашел иллюстрацию отображающую алгоритм работы светофора.

Алгоритм смены сигналов светофора на Arduino.

Как видим, светофор должен работать вот по такому алгоритму:

  1. Светит только красный цвет светофора.
  2. Не выключая красный сигнал светофора, включаем желтый.
  3. Выключаем красный и желтый, включаем зеленый.
  4. Выключаем зеленый сигнал светофора, включаем желтый.

После чего цикл повторяем с красного сигнала светофора на Arduino.

На сайте Портал ПК делал данный урок года 2 назад. После чего мне написали достаточно много комментариев по поводу того, что нужно добавить мигание зеленым сигналом светофора. В данном уроке исправим недоработку и сделаем мигание зеленым сигналом светофора.

Как подключить светодиоды к Arduino UNO?

Схема подключения не очень сложная и для подключения нам понадобится макетная плата, 3 светодиода и 3 резистора наминало 220 Ом. А также Arduino UNO и соединительные провода.

Все соединяем по схеме.

Как подключить светодиоды к Arduino UNO?

Как собрать схему в Tinkercad смотрите в видео, которое располагается вверху статьи.

Скетч светофора на Arduino UNO.

Реализовать программу светофора на 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 и наоборот.

Цикл выполняется 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 UNO. Для этого полученный код можно скопировать в Arduino IDE и загрузить в отладочную плату. Подробнее о загрузке кода смотрите в предыдущем уроке.


Мы рады объявить о нашем присутствии на Boosty! Arduino-Tex приглашает всех наших друзей и последователей поддержать нас на этой замечательной платформе. Здесь вы найдете эксклюзивный контент, уникальные проекты и возможность стать частью нашей творческой команды. Присоединяйтесь к нам на Boosty и вместе мы сделаем мир Arduino еще удивительнее!

Понравился Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скетч (код) к уроку 5. Светофор на Arduino UNO Скетч (код) к уроку 5. Светофор на Arduino UNO.ino1 Kb 1813 Скачать

Комментарии

Ваше Имя*

Twnsa

Гость: Twnsa (17 марта, 2023 в 13:52)

Не работает зеленый цвет

Avenue17CI

Гость: Avenue17CI (7 февраля, 2023 в 20:47)

ДА, вариант хороший

YВKIV

Гость: YВKIV (5 декабря, 2021 в 18:12)

Спасибо, ваш сайт очень полезный!



Cлучайные товары

Набор датчиков и индикаторов для ArduinoНабор датчиков и индикаторов для Arduino


AliExpress
AliExpress

Датчик температуры и влажности SHT31Датчик температуры и влажности SHT31


AliExpress
AliExpress

Читайте также

Мы в соц сетях

Подпишись на канал Telegram
Разработка проектов