Урок 6. Arduino светофор для машин и пешеходов.

В планах писать еще один урок про светофоры на Arduino не было. Но в группе Facebook написали, что данный светофор реализован не совсем правильно, нужно как минимум сделать секцию для пешеходов. В дальнейшем есть планы снять урок про Arduino светофор для машин и пешеходов со звуковым уведомлением и кнопкой. Но на данном этапе это большой скачок вперед и с теми знаниями, которые вы получили из предыдущих уроков, сделать подобный светофор не получится. Поэтому сделал простой вариант Arduino светофора для машин и пешеходов.

Цель урока: Arduino светофор для машин и пешеходов.

Закрепить полученные знания в предыдущих уроках, и повторить работу с циклом for() и булевыми переменными.

Светофор для пешеходов.

Такие светофоры регулируют движение пешеходов через пешеходный переход. Как правило, он имеет два вида сигнала: разрешающий и запрещающий. Обычно для этой цели используют соответственно зелёный и красный свет. Сами сигналы имеют различную форму. Чаще всего используют сигналы в виде силуэта человека: красный — стоящего, зелёный — идущего. В 1970-е годы в городах СССР использовались пешеходные светофоры иного вида — прямоугольной формы; с красным сигналом в виде надписи «стойте» и зелёным в виде надписи «идите» (такие светофоры показывают крупным планом в фильме Следствие ведут ЗнаТоКи. Несчастный случай).

Современные светофоры для пешеходов дополнительно оборудуют также звуковыми сигналами, предназначенными для слепых пешеходов, а иногда и табло обратного отсчёта времени (впервые появились во Франции в 1998 г.).

Алгоритм работы светофора для машин и пешеходов.

Алгоритм работы одного светофора найти в интернет можно. Но вот как взаимодействуют 2 светофора: для машин и для пешеходов, данной информации нет. В группе на facebook мне скинули вот такую иллюстрацию.

Алгоритм работы светофора для машин и пешеходов.

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

Алгоритм работы трех секционного светофора для машин останется без изменений. К режиму работы добавим работу двухсекционного светофора для пешеходов.

Схема подключения Arduino светофора для машин и пешеходов.

Схему подключения возьмём из Урока 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad. И добавим 2 светодиода, которые будут имитировать работу светофора для пешеходов.

В итоге схема подключения Arduino светофора для машин и пешеходов примет вид.

Схема подключения Arduino светофора для машин и пешеходов.

Скетч Arduino светофора для машин и пешеходов.

За основу возьмём код из 5 урока. Если вы не смотрели данный урок, рекомендую ознакомиться с ним прежде, чем приступать к данному уроку.

Добавим необходимую информацию, чтобы инициализировать пины подключения светофора для пешеходов. Светодиоды подключены к 5 и 6 пинам, соответственно нужно добавить.

int people_red = 5;
int people_green = 6;
void setup()
{
…
  pinMode(people_red, OUTPUT);
  pinMode(people_green, OUTPUT);
}

К алгоритму работы трехсекционного светофора добавим работу светофора для пешеходов. Для этого алгоритм менять не придётся. Достаточно прописать в нужных местах включение и выключение сигналов светофора для пешеходов.

int led_red =2;
int led_yellow = 3;
int led_green = 4;
boolean led_on = HIGH;
int people_red = 5;
int people_green = 6;
boolean led_on_p = HIGH;
void setup()
{
  pinMode(led_red, OUTPUT);
  pinMode(led_yellow, OUTPUT);
  pinMode(led_green, OUTPUT);
  pinMode(people_red, OUTPUT);
  pinMode(people_green, OUTPUT);
}
void loop()
{
  digitalWrite(led_red, HIGH);
  digitalWrite(people_green, HIGH);
  delay(2000); // 
  digitalWrite(led_yellow, HIGH);
  digitalWrite(people_red, HIGH);
  digitalWrite(people_green, LOW);
  delay(700); // 
  digitalWrite(led_red, LOW);
  digitalWrite(led_yellow, LOW);
  digitalWrite(led_green, HIGH);
  delay(2000); //
  for (int i=0; i<6; i++)
  {
   led_on = !led_on;
   digitalWrite(led_green, led_on);
   delay(500); //
  }
  digitalWrite(led_yellow, HIGH);
  digitalWrite(led_green, LOW);
  delay(700); //
  digitalWrite(led_yellow, LOW);
  digitalWrite(people_red, LOW);
}

Каждую строчку, которую добавил в код, расписывать не буду, об этом подробно рассказываю в видео. Для более правильной работы нужно добавить мигание зеленым цветом светофора для пешеходов. Поэтому добавим цикл по аналогии работы светофора для машин. Для этого нужно создать дополнительную переменную:

boolean led_on_p = HIGH;

И сам цикл мигания светодиодом.

for (int x=0; x<6; x++)
  {
    led_on_p = !led_on_p;
    digitalWrite(people_green, led_on_p);
    delay(500);
  }

В итоге у нас получится вот такой код.

int led_red =2;
int led_yellow = 3;
int led_green = 4;
boolean led_on = HIGH;
int people_red = 5;
int people_green = 6;
boolean led_on_p = HIGH;
void setup()
{
  pinMode(led_red, OUTPUT);
  pinMode(led_yellow, OUTPUT);
  pinMode(led_green, OUTPUT);
  pinMode(people_red, OUTPUT);
  pinMode(people_green, OUTPUT);
}
void loop()
{
  digitalWrite(led_red, HIGH);
  digitalWrite(people_green, HIGH);
  delay(2000); // 
  for (int i = 0; i<6; i++)
  {
    led_on_p = !led_on_p;
    digitalWrite(people_green, led_on_p);
    delay(500);
  }
  digitalWrite(led_yellow, HIGH);
  digitalWrite(people_red, HIGH);
  digitalWrite(people_green, LOW);
  delay(700); // 
  digitalWrite(led_red, LOW);
  digitalWrite(led_yellow, LOW);
  digitalWrite(led_green, HIGH);
  delay(2000); //
  for (int i=0; i<6; i++)
  {
   led_on = !led_on;
   digitalWrite(led_green, led_on);
   delay(500); //
  }
  digitalWrite(led_yellow, HIGH);
  digitalWrite(led_green, LOW);
  delay(700); //
  digitalWrite(led_yellow, LOW);
  digitalWrite(people_red, LOW);
}

Как видим, код Arduino светофора для машин и пешеходов получился не многим сложнее управления одним светофором для машин.

Загружаем код Arduino светофора для машин и пешеходов в Arduino UNO.

Arduino UNO уроки для начинающих можно использовать не только в симуляторе, но и программировать реальную Arduino UNO. Для этого полученный код можно скопировать в Arduino IDE и загрузить в отладочную плату. Подробнее о загрузке кода смотрите в предыдущем уроке.

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

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

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

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

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

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

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

Скетч (код) к уроку 6. Arduino светофор для машин и пешеходов Скетч (код) к уроку 6. Arduino светофор для машин и пешеходов.ino1 Kb 1038 Скачать

Комментарии

Ваше Имя*

Сергей

Гость: Сергей (15 января, 2023 в 21:06)

Здравствуйте, пожалуйста помогите с решением, как сделать автомобильный светофор и пешеходный светофор, который управляется с кнопки ?

fff

Гость: fff (6 ноября, 2022 в 11:17)

спасибо всё работает

Валерий Дмитриевич

Гость: Валерий Дмитриевич (3 декабря, 2021 в 20:56)

Пока не понял


Разработка проектов