Макет светофора для дороги с 3 путями на Arduino Uno

Мы все знаем об Arduino. Это одна из самых популярных микроконтроллерных плат с открытым исходным кодом, которая очень удобна для осуществления различных DIY-проектов (сделай сам). В данной статье мы рассмотрим проект трехполосного светофора на основе платы Arduino, который будет очень полезен для понимания логики работы светофоров, которые мы видим в нашей повседневной жизни.

Внешний вид светофора для дороги с 3 путями на Arduino Uno

Необходимые компоненты

Плата Arduino Uno
3 светодиода красного цвета
3 светодиода зеленого цвета
3 светодиода желтого цвета
3 резистора на 220 Ом
Макетная плата
Соединительные провода папа-папа (Male To Male Connectors)

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема светофора для дороги с 3 путями на Arduino Uno

Как можно видеть, эту схему можно легко собрать на макетной плате, следуя простым инструкциям:

  1. Расположите светодиоды в следующем порядке на макетной плате: красный, зеленый и желтый.
  2. Объедините негативные (отрицательные) выводы каждой группы светодиодов в один общий провод и подключите к ним резисторы 220 Ом как показано на схеме.
  3. Подключите соединительные провода.
  4. Подсоедините другие концы проводов к контактам Arduino Uno (2,3,4…10).
  5. Подайте питание на макетную плату используя контакты Arduino 5v и GND.

Исходный код программы

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

Например, одновременно будут гореть два красных сигнала на любой из двух сторон и один зеленый сигнал на оставшейся стороне. Желтый свет будет зажигаться каждый раз на 1 секунду, между переходом от красного света к зеленому. То есть красный свет будет гореть в течение 5 секунд, затем на 1 секунду будет зажигаться желтый свет, и затем зеленый свет.

В программе мы первым делом в функции void setup() зададим режим работы на вывод данных для всех контактов, к которым подключены светодиоды. По три светодиода на каждую сторону движения: прямо, направо и налево.

void setup() {
// задаем режим работы для контактов – на вывод данных
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}

Затем в функции void loop() мы запрограммируем выше описанные условия для переключения светодиодов.

void loop()
{
digitalWrite(2,1); //разрешает функционирование первого набора светодиодов
digitalWrite(7,1);
digitalWrite(10,1);
digitalWrite(4,0);
digitalWrite(3,0);
digitalWrite(6,0);
digitalWrite(8,0);
digitalWrite(9,0);
digitalWrite(5,0);
delay(5000);
..... ....
..... ....

Более подробно весь процесс работы нашего трехполосного светофора показан на видео в конце статьи. Сначала мы открываем движение по дороге, которая идет прямо – для нее горит зеленый свет. А для остальных двух полос (направо и налево) горит красный цвет. Так продолжается 5 секунд. Затем желтый свет загорается на 1 секунду для полосы направо, после него загорается зеленый свет. Для остальных полос в это время горит красный свет. Так продолжается 5 секунд. Затем желтый свет загорается на 1 секунду для полосы налево, после него загорается зеленый свет. Для полосы прямо и направо в это время горит красный свет. Так снова продолжается 5 секунд. Процесс продолжается бесконечно поскольку он исполняется в функции loop(). Вы можете изменить задержки в программе по своему желанию.

Далее приведен полный текст программы.

void setup() {
// задаем режим работы для контактов – на вывод данных
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void loop()
{
digitalWrite(2,1); //разрешаем функционирование первого набора светодиодов
digitalWrite(7,1);
digitalWrite(10,1);
digitalWrite(4,0);
digitalWrite(3,0);
digitalWrite(6,0);
digitalWrite(8,0);
digitalWrite(9,0);
digitalWrite(5,0);
delay(5000);
digitalWrite(3,1); //включаем желтые светодиоды
digitalWrite(6,1);
digitalWrite(2,0);
digitalWrite(7,0);
delay(1000);
digitalWrite(4,1); //разрешаем функционирование второго набора светодиодов
digitalWrite(5,1);
digitalWrite(10,1);
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(6,0);
digitalWrite(8,0);
digitalWrite(9,0);
digitalWrite(7,0);
delay(5000);
digitalWrite(9,1); //включаем желтые светодиоды
digitalWrite(6,1);
digitalWrite(10,0);
digitalWrite(5,0);
digitalWrite(4,0);
delay(1000);
digitalWrite(8,1); //разрешаем функционирование третьего набора светодиодов
digitalWrite(4,1);
digitalWrite(7,1);
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(9,0);
digitalWrite(10,0);
delay(5000);
digitalWrite(9,1); //включаем желтые светодиоды
digitalWrite(3,1);
digitalWrite(7,0);
digitalWrite(8,0);
digitalWrite(4,0);
delay(1000);
}

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
11 просмотров


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

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