Урок 4: Светофор
1. Зачем нужен эксперимент?
В предыдущем уроке мы мигали одним светодиодом. Теперь усложним задачу и
смоделируем классический дорожный светофор — красный → жёлтый → зелёный и
обратно. Эксперимент показывает, как управлять несколькими выходами Arduino
и как воспроизводить временную последовательность с помощью delay()
.
2. Оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
USB-кабель A-B |
1 |
LED 5 мм (красный) |
1 |
LED 5 мм (жёлтый) |
1 |
LED 5 мм (зелёный) |
3 |
Резистор 220 Ω |
1 |
Макетная плата (breadboard) |
4 |
Перемычки «папа–папа» |
3. Схема подключения

Красный LED — пин 10 через резистор 220 Ω.
Жёлтый LED — пин 7 через резистор 220 Ω.
Зелёный LED — пин 4 через резистор 220 Ω.
Общие катоды всех светодиодов → GND.
4. Скетч
//Traffic light
int redled = 10; // инициализация цифрового контакта 10.
int yellowled = 7; // инициализация цифрового контакта 7.
int greenled = 4; // инициализация цифрового контакта 4.
void setup() {
pinMode(redled, OUTPUT); // установка контакта с красным светодиодом как "выход"
pinMode(yellowled, OUTPUT); // установка контакта с жёлтым светодиодом как "выход"
pinMode(greenled, OUTPUT); // установка контакта с синим светодиодом как "выход"
}
void loop() {
digitalWrite(greenled, HIGH); // включение синего светодиода
delay(5000); // ожидание 5 секунд
digitalWrite(greenled, LOW); // выключение синего светодиода
// for (int i = 0; i < 3; i++){ // мигание 3 раза
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, HIGH); // включение жёлтого светодиода
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, LOW); // выключение жёлтого светодиода
// }
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, HIGH); // включение жёлтого светодиода
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, LOW); // выключение жёлтого светодиода
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, HIGH); // включение жёлтого светодиода
delay(500); // ожидание 0.5 секунды
digitalWrite(yellowled, LOW); // выключение жёлтого светодиода
delay(500); // ожидание 0.5 секунды
digitalWrite(redled, HIGH); // включение красного светодиода
delay(5000); // ожидание 5 секунд
digitalWrite(redled, LOW); // выключение красного светодиода
}
Как работает код
Красный, жёлтый и зелёный светодиоды подключены к пинам 10, 7 и 4.
digitalWrite() включает и выключает соответствующий светодиод.
Зелёный горит 5 с, затем жёлтый мигает три раза по 0,5 с, после чего загорается красный на 5 с — цикл повторяется.
Все паузы реализованы простой функцией
delay()
, что делает код максимально наглядным.
5. Пошаговый запуск
Соберите схему согласно рисунку.
Подключите Arduino к ПК, откройте Arduino IDE.
Скопируйте скетч, выберите плату Arduino UNO и правильный COM-порт.
Нажмите Upload. Светофор начнёт работать: зелёный → жёлтый мигает 3× → красный.
6. Что может пойти не так
Симптом |
Причина |
Решение |
---|---|---|
Лампочка не горит |
Перепутан анод/катод, нет резистора |
Проверьте подключение, замените LED |
Светофор работает, но цвета «перепутаны» |
Провода подключены к другим пинам |
Исправьте пины в коде или распиновку |
7. Идеи для продолжения
Используйте функцию
millis()
вместоdelay()
— светофор будет работать, пока Arduino выполняет другой код.