Сделать светофор на Ардуино с кнопкой — это отличное упражнение по изучению Arduino для начинающих. Проект позволит лучше понять среду программирования Arduino IDE и принцип работы цифровых выводов общего назначения. Рассмотрим схему сборки простого светофора на Arduino Uno с использованием макетной платы (breadboard) и представим простой проект, который можно использовать в начале своего обучения.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- светодиоды и резисторы
- тактовая кнопка
- макетная плата
- коннекторы
Дополнительные материалы на эту тему:
После сборки проекта, вы можете самостоятельно реализовать мигающий зеленый свет светофора в программе. Также проект можно улучшить усовершенствовать, заменив кнопку на ультразвуковой дальномер hc-sr04. Пины с подключенными светодиодами названы с помощью директивы define, а интервал включения света можно изменить, изменив значение переменной int pause = 3000; в представленной программе.
Схема светофора на Ардуино Уно или Нано

Для начала мы соберем простую схему светофора на макетной плате без тактовой кнопки, чтобы понять код и алгоритм работы светофоров на перекрестках. Детям также будет полезно понять, как работают светофоры на дороге в реальной жизни. Подключите светодиоды с помощью макетной платы и коннекторов к плате Arduino согласно размещенной выше схеме и загрузите в микроконтроллер следующую программу.
Скетч для светофора со светодиодами на Arduino
#define RED1 2
#define ORANGE1 3
#define GREEN1 4
#define RED2 9
#define ORANGE2 10
#define GREEN2 11
int pause = 3000;
void setup() {
pinMode(RED1, OUTPUT);
pinMode(ORANGE1, OUTPUT);
pinMode(GREEN1, OUTPUT);
pinMode(RED2, OUTPUT);
pinMode(ORANGE2, OUTPUT);
pinMode(GREEN2, OUTPUT);
}
void loop() {
digitalWrite(RED1, HIGH);
digitalWrite(ORANGE1, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, LOW);
digitalWrite(ORANGE2, LOW);
digitalWrite(GREEN2, HIGH);
delay(pause);
digitalWrite(RED1, HIGH);
digitalWrite(ORANGE1, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, LOW);
digitalWrite(ORANGE2, HIGH);
digitalWrite(GREEN2, LOW);
delay(pause);
digitalWrite(RED1, LOW);
digitalWrite(ORANGE1, LOW);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED2, HIGH);
digitalWrite(ORANGE2, LOW);
digitalWrite(GREEN2, LOW);
delay(pause);
digitalWrite(RED1, LOW);
digitalWrite(ORANGE1, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, HIGH);
digitalWrite(ORANGE2, HIGH);
digitalWrite(GREEN2, LOW);
delay(pause);
}
Как сделать светофор с кнопкой на Arduino

Следующий пример воспроизводит работу светофоров на пешеходных переходах, где режим работы светофора изменяется нажатием кнопки. Для этого программе необходимо использовать цикл while. Также необходимо добавить в схему кнопку с подтягивающим резистором и активировать режим светофора при высоком уровне сигнала на цифровом или аналоговом входе микроконтроллера, к которому была подключена кнопка.
Скетч для светофора с кнопкой на Arduino Uno
#define RED1 2
#define ORANGE1 3
#define GREEN1 4
#define RED2 9
#define ORANGE2 10
#define GREEN2 11
#define BOUTON 7
int pause = 3000;
void setup() {
pinMode(RED1, OUTPUT);
pinMode(ORANGE1, OUTPUT);
pinMode(GREEN1, OUTPUT);
pinMode(RED2, OUTPUT);
pinMode(ORANGE2, OUTPUT);
pinMode(GREEN2, OUTPUT);
pinMode(BOUTON, INPUT);
}
void loop() {
digitalWrite(RED1, HIGH);
digitalWrite(ORANGE1, LOW);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, LOW);
digitalWrite(ORANGE2, LOW);
digitalWrite(GREEN2, HIGH);
while (digitalRead(BOUTON) == HIGH) {
digitalWrite(RED1, HIGH);
digitalWrite(ORANGE1, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, LOW);
digitalWrite(ORANGE2, HIGH);
digitalWrite(GREEN2, LOW);
delay(pause);
digitalWrite(RED1, LOW);
digitalWrite(ORANGE1, LOW);
digitalWrite(GREEN1, HIGH);
digitalWrite(RED2, HIGH);
digitalWrite(ORANGE2, LOW);
digitalWrite(GREEN2, LOW);
delay(pause);
digitalWrite(RED1, LOW);
digitalWrite(ORANGE1, HIGH);
digitalWrite(GREEN1, LOW);
digitalWrite(RED2, HIGH);
digitalWrite(ORANGE2, HIGH);
digitalWrite(GREEN2, LOW);
delay(pause);
}
}
Заключение. В программе цикл while будет выполняться только при нажатии кнопки. Всем портам со светодиодами и пину с кнопкой присвоены имена с помощью команды #define. Сейчас вы можете реализовать мигающий зеленый свет светофора в программе самостоятельно или еще больше усовершенствовать проект с мигающим светофором, заменив тактовую кнопку на датчик hc-sr04 ультразвукового дальномера Ардуино.
