
Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Светофор
4// ─────────────────────────────────────────
5// Цикл светофора на красном, жёлтом и зелёном светодиодах: красный 2 с,
6// жёлтый 0,3 с, зелёный 2 с, жёлтый 0,3 с, затем всё сначала.
7//
8// Пины:
9// D2 -> Красный светодиод
10// D3 -> Жёлтый светодиод
11// D4 -> Зелёный светодиод
12// Каждый светодиод с резистором 330 ohm
13
14void setup() {
15 pinMode(2,OUTPUT); // Красный
16 pinMode(3,OUTPUT); // Жёлтый
17 pinMode(4,OUTPUT); // Зелёный
18}
19
20void loop() {
21 // Красный вкл, ждать 2 с
22 digitalWrite(2,HIGH);
23 digitalWrite(3,LOW);
24 digitalWrite(4,LOW);
25 delay(2000);
26 // Жёлтый вкл, ждать 0,3 с
27 digitalWrite(2,LOW);
28 digitalWrite(3,HIGH);
29 digitalWrite(4,LOW);
30 delay(300);
31 // Зелёный вкл, ждать 2 с
32 digitalWrite(2,LOW);
33 digitalWrite(3,LOW);
34 digitalWrite(4,HIGH);
35 delay(2000);
36 // Жёлтый вкл, затем снова красный
37 digitalWrite(2,LOW);
38 digitalWrite(3,HIGH);
39 digitalWrite(4,LOW);
40 delay(300);
41}
42
Частые вопросы
Сколько должен гореть жёлтый на светофоре?
В настоящих светофорах жёлтый обычно горит 3–4 секунды. В проекте это время задаётся функцией `delay()`; если красный и зелёный держать дольше, а жёлтый — короче, цикл получится очень похожим на реальный.
Почему используется резистор 330 Ω, а не 220 Ω?
Резистор 330 Ω немного снижает ток (примерно до 9–10 mA); светодиоды по-прежнему хорошо видны, а с пинов потребляется меньше суммарного тока. С резистором 220 Ω тоже работает, просто светодиоды чуть ярче.
Можно ли добавить кнопку для пешеходов?
Да. Можно добавить кнопку и стягивающий резистор 10 kΩ и читать её через `digitalRead`. При нажатии кнопки можно переключить цикл на красный и включить отдельный зелёный светодиод для пешеходов; если использовать `millis()` вместо `delay`, нажатие будет замечено сразу.
Порядок светодиодов перепутан. Что делать?
Сверь по очереди определения пинов в коде (красный, жёлтый, зелёный) с проводами в схеме. Проще всего зажечь каждый светодиод отдельным тестовым кодом и проверить, к какому пину он подключён.
