Введение
Всегда хотели собрать светофор, но под рукой не оказалось нужных компонентов? С Velxio вы можете симулировать полноценный светофор на Arduino прямо в браузере. В этом проекте используются три светодиода (красный, желтый, зеленый), подключенные к Arduino Uno, чтобы воспроизвести классическую последовательность светофора: красный → желтый → зеленый → желтый → красный. Это отличный проект для начинающих, чтобы изучить цифровые выходы, тайминг и последовательную логику.
Схема подключения
Давайте рассмотрим схему. Ниже показана полная разводка:

Компоненты
- Arduino Uno – мозг операции.
- Красный светодиод – подключен к цифровому пину 13.
- Желтый светодиод – подключен к цифровому пину 12.
- Зеленый светодиод – подключен к цифровому пину 11.
- Резисторы – каждый светодиод требует токоограничивающий резистор (обычно 220 Ом), включенный последовательно с анодом. В Velxio встроенные светодиоды уже имеют внутренние резисторы, поэтому добавлять их вручную не нужно.
Детали подключения
У каждого светодиода две ножки: анод (длинная ножка, обозначена как вывод “A”) и катод (короткая ножка, обозначена как вывод “C”). Подключение очень простое:
- Красный светодиод: Анод к пину 13 Arduino через красный провод (
#ff0000). Катод к GND Arduino через черный провод. - Желтый светодиод: Анод к пину 12 Arduino через желтый провод (
#ffaa00). Катод к GND. - Зеленый светодиод: Анод к пину 11 Arduino через зеленый провод (
#00ff00). Катод к GND.
Все три светодиода используют общее соединение GND на Arduino. Это конфигурация с общим проводом.
Разбор кода
Теперь давайте рассмотрим код, который заставляет огни переключаться. Откройте редактор кода в Velxio:

// Traffic Light Simulator
// Red -> Yellow -> Green -> Yellow -> Red
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
void loop() {
// Red light
digitalWrite(RED_PIN, HIGH);
delay(3000);
digitalWrite(RED_PIN, LOW);
// Yellow light
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
// Green light
digitalWrite(GREEN_PIN, HIGH);
delay(3000);
digitalWrite(GREEN_PIN, LOW);
// Yellow light again
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
}
Как это работает
- Определение пинов: Мы задаем константы для трех пинов:
RED_PIN = 13,YELLOW_PIN = 12,GREEN_PIN = 11. Они соответствуют схеме подключения. - Setup: В функции
setup()мы устанавливаем все три пина какOUTPUTс помощьюpinMode(). Это сообщает Arduino, что нужно подавать напряжение через эти пины. - Loop: Функция
loop()выполняется бесконечно. Она следует такой последовательности:- Включить красный светодиод (
HIGH), подождать 3 секунды, выключить (LOW). - Включить желтый светодиод, подождать 1 секунду, выключить.
- Включить зеленый светодиод, подождать 3 секунды, выключить.
- Снова включить желтый светодиод, подождать 1 секунду, выключить.
- Затем цикл повторяется с красного света.
- Включить красный светодиод (
Это создает знакомый паттерн работы светофора.
Ключевые концепции для студентов
- Цифровые выходы:
digitalWrite(pin, HIGH)устанавливает на пине 5 В (включено),LOWустанавливает 0 В (выключено). - Тайминг с
delay():delay(миллисекунды)приостанавливает программу. Будьте осторожны: пока выполняетсяdelay(), Arduino не может делать ничего другого. - Последовательная логика: Порядок операций имеет значение. Код выполняется строка за строкой, поэтому огни меняются в предсказуемой последовательности.
- Общий провод: Все светодиоды используют одно и то же соединение с землей. Это типично для цифровых схем.
Частые ошибки и советы по отладке
- Неправильные номера пинов: Перепроверьте, что номера пинов в коде соответствуют подключению. Если красный светодиод на пине 13, а вы написали
12, он не загорится. - Полярность светодиода: Светодиоды поляризованы. Анод (длинная ножка) должен подключаться к пину Arduino, а катод (короткая ножка) к GND. В Velxio компонент светодиода по умолчанию ориентирован правильно.
- Отсутствие резисторов: В реальной жизни всегда используйте токоограничивающий резистор (220 Ом – 1 кОм) последовательно с каждым светодиодом, чтобы избежать повреждений. Встроенные светодиоды Velxio содержат резисторы, но если вы используете пользовательские компоненты, добавьте их.
- Блокировка
delay(): Если вы захотите добавить кнопки или датчики позже,delay()заморозит программу. Рассмотрите использованиеmillis()для неблокирующего тайминга.
Предлагаемые расширения
Когда базовый светофор заработает, попробуйте эти улучшения:
- Добавьте кнопку для пешеходов: Используйте тактовую кнопку для запроса сигнала перехода. При нажатии светофор переключается на красный, затем загорается белый светодиод (пешеходный переход).
- Используйте
millis()вместоdelay(): Перепишите код, используяmillis()для тайминга. Это позволит Arduino проверять нажатия кнопок во время ожидания. - Добавьте зуммер: Подключите пьезозуммер к пину и сделайте так, чтобы он пищал, когда зеленый свет вот-вот сменится на желтый.
- Симулируйте пешеходный переход: Добавьте еще два светодиода (красный и зеленый) для пешеходного перехода и скоординируйте их с сигналами светофора.
Попробуйте сами
Готовы собрать свой собственный светофор? Откройте пример в Velxio и начинайте экспериментировать:
Открыть пример светофора на Velxio
Вы можете редактировать код, менять тайминг или добавлять больше светодиодов. Симулятор работает полностью в вашем браузере – никаких загрузок, никакого оборудования. Используйте панель инструментов для компиляции и запуска кода:


Если вам нужно добавить новые компоненты, откройте палитру компонентов:

А если вы хотите использовать библиотеки, Менеджер библиотек всего в одном клике:

Удачной симуляции!