Светофор на трёх светодиодах
Состояния светофора живут в массиве: добавить фазу — дописать строку.

Что понадобится
- Arduino Uno
- Резистор (220 Ом) × 3
- Светодиод (красный)
- Светодиод (жёлтый)
- Светодиод (зелёный)
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | D7 | → | Резистор 1 | 1 |
| Резистор 1 | 2 | → | Светодиод 1 | A |
| Светодиод 1 | C | → | Arduino Uno | GND |
| Arduino Uno | D8 | → | Резистор 2 | 1 |
| Резистор 2 | 2 | → | Светодиод 2 | A |
| Светодиод 2 | C | → | Arduino Uno | GND |
| Arduino Uno | D9 | → | Резистор 3 | 1 |
| Резистор 3 | 2 | → | Светодиод 3 | A |
| Светодиод 3 | C | → | Arduino Uno | GND |
Скетч
// Светофор: красный D7, жёлтый D8, зелёный D9.
// Каждая фаза — строка таблицы: какие светодиоды горят и сколько это длится.
const int PINS[3] = { 7, 8, 9 };
// красный, жёлтый, зелёный, длительность (мс)
const int PHASES[4][4] = {
{ 1, 0, 0, 3000 },
{ 1, 1, 0, 700 },
{ 0, 0, 1, 3000 },
{ 0, 1, 0, 700 },
};
void setup() {
for (int i = 0; i < 3; i++) pinMode(PINS[i], OUTPUT);
Serial.begin(9600);
}
void loop() {
for (int p = 0; p < 4; p++) {
for (int i = 0; i < 3; i++) digitalWrite(PINS[i], PHASES[p][i] ? HIGH : LOW);
Serial.print("Фаза ");
Serial.println(p);
delay(PHASES[p][3]);
}
}
Коротко о детали: Светодиод
Светодиод пропускает ток только в одну сторону и светится тем ярче, чем больше ток. Последовательно с ним обязателен резистор — обычно 220–330 Ом при питании 5 В. При токе больше 60 мА светодиод перегорает, в симуляторе тоже.
Ещё примеры с деталью «Светодиод»
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «Светофор на трёх светодиодах» в симуляторе