В этом задании нужно написать программу для Arduino, которая будет управлять двумя светофорами — одним для автомобилей, другим для пешеходов. У светофора есть два режима: дневной и ночной.
1️⃣ Сначала я всё делаю в Tinkercad, чтобы проверить, как это работает:

🚦 Автомобильный светофор:
- Красный (вверху) — подключён к пину 13.
- Жёлтый — к пину 12.
- Зелёный — к пину 11.
🤸♀️ Пешеходный светофор:
- Красный — к пину 10.
- Зелёный (внизу) — к пину 9.
➖ Все минусы (короткие ножки) светодиодов соединяются с GND (земля) на Arduino. Оттуда идёт чёрный провод.
➕ Плюсы (длинные ножки) идут через резистор к соответствующим пинам.
💡 Рядом с каждым светодиодом — резистор и провод к пину Arduino.
Резисторы — ограничивают ток, чтобы светодиоды не сгорели.
Пишу код, чтоб светофор работал по логике настоящего:
// Машина константы
int redCar = 13;
int yellowCar = 12;
int greenCar = 11;
// Пешеход константы
int redPer = 10;
int greenPer = 9;
// Вкл дневой режим
bool dayMode = true;
void setup() {
pinMode(redCar, OUTPUT);
pinMode(yellowCar, OUTPUT);
pinMode(greenCar, OUTPUT);
pinMode(redPer, OUTPUT);
pinMode(greenPer, OUTPUT);
}
// Мигание 3 раза
void blink(int pin) {
for (int i = 0; i < 3; i++) {
digitalWrite(pin, LOW);
delay(500);
digitalWrite(pin, HIGH);
delay(500);
}
}
void loop() {
if (dayMode) {
// Машинам КРАСНЫЙ, Пешеходам ЗЕЛЁНЫЙ
digitalWrite(redCar, HIGH);
digitalWrite(yellowCar, LOW);
digitalWrite(greenCar, LOW);
digitalWrite(redPer, LOW);
digitalWrite(greenPer, HIGH);
delay(5000);
// Машинам ЖЁЛТЫЙ, Пешеходам мигает ЗЕЛЁНЫЙ
digitalWrite(redCar, LOW);
digitalWrite(yellowCar, HIGH);
blink(greenPer); // Пешеходный зелёный мигает
digitalWrite(greenPer, LOW);
digitalWrite(redPer, HIGH); // Пешеходам красный
// Машинам ЗЕЛЁНЫЙ, Пешеходам КРАСНЫЙ
digitalWrite(redCar, LOW);
digitalWrite(yellowCar, LOW);
digitalWrite(greenCar, HIGH);
delay(5000);
// Машинам мигает ЗЕЛЁНЫЙ, Пешеходам всё ещё КРАСНЫЙ
blink(greenCar); // Машинный зелёный мигает
digitalWrite(greenCar, LOW);
digitalWrite(redCar, HIGH); // Машинам снова красный
// Переключаем на ночной режим
dayMode = false;
}else {
// Ночной режим
// Все пешеходные огни выключены
digitalWrite(redPer, LOW);
digitalWrite(greenPer, LOW);
// Красный и зелёный для машин выключены
digitalWrite(redCar, LOW);
digitalWrite(greenCar, LOW);
// Мигающий жёлтый для машин
for (int i = 0; i < 10; i++) { // 10 миганий (10 секунд)
digitalWrite(yellowCar, HIGH);
delay(500);
digitalWrite(yellowCar, LOW);
delay(500);
}
// Вернуться в дневной режим
dayMode = true;
}
}
☀️ Дневной режим:
- Машинам горит красный, пешеходам — зелёный (можно идти).
- Красный для машин мигает 3 раза — предупреждение.
- Пешеходам — красный, машинам — зелёный.
- Зелёный для машин мигает 3 раза — тоже предупреждение.
- Потом включается жёлтый для машин.
- Жёлтый мигает 3 раза.
- Снова машинам — красный, пешеходам — зелёный.
- Зелёный у пешеходов мигает 3 раза.
- В конце пешеходам включается красный.
После этого программа автоматически переходит в ночной режим.
🌙 Ночной режим:
- У пешеходов — всё выключено.
- У машин выключены красный и зелёный.
- Жёлтый свет у машин мигает 10 раз (примерно 10 секунд).
После этого снова запускается дневной режим, и всё повторяется по кругу.
💡 Функция мигания
В коде есть отдельная функция blink(pin)
, которая просто мигает выбранным светодиодом 3 раза с паузой в 500 миллисекунд.
2️⃣ Копирую код в Arduino IDE и загружаю его на настоящую плату, чтобы увидеть, как работает светофор в реальности.
Для реализации светофора я использую плату Arduino UNO и 5 светодиодов (LED), которые подключаются к цифровым пинам. Все светодиоды соединены через резисторы (220 Ом), чтобы не сжечь диоды. Запускаем программу и наблюдаем работу светофора.
Демонстрация работы на 🔗 Видео (click)
🔚 Заключение:
В этом задании мы научились делать светофор с помощью Arduino. Сначала собрали схему и проверили её в Tinkercad, потом загрузили код на настоящую плату и убедились, что всё работает правильно.
Теперь я понимаю, как можно управлять светодиодами через программу, как работает мигание и переключение режимов. Было интересно видеть, как всё это работает вживую — почти как настоящий светофор.
Такое задание помогает лучше разобраться в программировании и электронике, и это может пригодиться в будущем, например, если делать автоматические системы или что-то для «умного города».