Урок 98-10: Светофор на Arduino
Светофоры — одна из тех повседневных систем, о которых мы редко задумываемся, пока не соберём её сами. В этом проекте вы используете Arduino, чтобы смоделировать реальную последовательность работы светофора: горит зелёный, затем жёлтый, затем красный, каждый в течение своей настраиваемой длительности, повторяясь бесконечно. Это идеальный проект для начинающих, потому что он учит логике последовательного управления временем, управлению несколькими выходами и связи между тем, что вы пишете в коде, и тем, что видите в физическом мире.
Помимо демонстрации в классе, логика управления временем, которую вы здесь изучаете, встречается повсюду:
- Создание реалистичной модели светофора для железнодорожного макета или диорамы
- Создание системы индикации с таймером для мастерской или гаража (например, сигналы «можно входить» / «подождите»)
- Изучение основы для пешеходных светофоров с фазами, запускаемыми кнопкой
- Прототипирование последовательности реле с таймером для промышленных задач или задач домашней автоматизации
- Обучение детей последовательности, таймингу и электронике с помощью знакомого, узнаваемого объекта
Самое лучшее: после загрузки всё работает автономно. Вы программируете Arduino один раз с компьютера, затем питаете его от батареи или адаптера, и он работает бесконечно — ПК не требуется (в видео на 12:27).
Как работает светофор
Светофор на самом деле — это просто временная последовательность из трёх выходов. Arduino включает по одному светодиоду за раз, ждёт заданное количество секунд, выключает его и переходит к следующему. Затем цикл повторяется. В примере тайминга из видео зелёный горит 3 секунды, жёлтый — 1 секунду, а красный — 3 секунды, но все эти значения можно настроить в коде (в видео на 49:44).
Последовательность кажется реалистичной потому, что длительности отражают реальный транспортный поток: зелёный и красный длиннее, потому что транспортным средствам нужно время, чтобы проехать перекрёсток, а жёлтый короткий, потому что это всего лишь предупреждение о переходе. Вы можете настроить их под любой сценарий.
Аппаратное обеспечение и компоненты
Список деталей для этого проекта минимален:
- 1 × плата Arduino (Uno, Nano или Mega — любая с минимум 3 цифровыми пинами)
- 3 × светодиода (красный, жёлтый/оранжевый и зелёный — разные цвета делают эффект очевидным)
- 3 × резистора (от 300 Ω до 1 кΩ хорошо подходят; в видео используется 1 кΩ)
- 1 × макетная плата
- Соединительные провода
- Опционально: литий-ионная батарея или адаптер питания на 5 В для автономной работы
В видео рекомендуется использовать три светодиода явно разных цветов, чтобы эффект светофора был сразу виден — иначе их пришлось бы подписывать (в видео на 02:04).
Понимание ограничения тока светодиода
Каждому светодиоду нужен токоограничивающий резистор, включённый последовательно. Вот почему: у светодиода почти фиксированное прямое напряжение (обычно около 2 В для стандартных светодиодов 5 мм), и если подключить его напрямую к 5 В, ток резко возрастёт и уничтожит его. Резистор поглощает избыточное напряжение.
Используя закон Ома, если на светодиоде падает 2 В, а питание 5 В, то 3 В должны упасть на резисторе. При целевом токе около 10 мА значение резистора получается примерно 300 Ω (в видео на 04:41). На практике подойдёт всё от 300 Ω до 1 кΩ — более высокие значения просто делают светодиод тусклее.
Руководство по подключению
Каждый светодиод подключается одинаково: анод (длинная ножка) соединяется с цифровым пином Arduino, а катод (короткая ножка, плоская сторона корпуса светодиода) соединяется через резистор с землёй.
В схеме из видео красный светодиод подключается к пину 2, жёлтый/оранжевый — к пину 3, а зелёный — к пину 4 (в видео на 50:50). Все три резистора используют общую шину земли на макетной плате. Порядок цветов на макетной плате не важен — важно, чтобы номера пинов в вашем коде совпадали с пинами, которые вы фактически использовали.
Полезный совет из видео: резистор можно разместить с любой стороны светодиода. Вы можете поставить его между выводом Arduino и анодом светодиода или между катодом светодиода и землёй — электрически это одно и то же (в видео на 51:52).
Объяснение кода
Полная программа доступна ниже статьи. Здесь мы сосредоточимся на частях, которые вы захотите настроить.
В начале скетча три определения выводов сопоставляют каждый светодиод с цифровым выводом. Если вы подключили светодиоды к другим выводам, измените эти значения:
const int greenLED = 4;
const int yellowLED = 3;
const int redLED = 2;
Далее идут константы времени. Они управляют тем, как долго горит каждый свет, в миллисекундах. В видео по умолчанию используется 5000 мс для зелёного, 1000 мс для жёлтого и 5000 мс для красного — но во время демонстрации они были изменены на 3 с / 1 с / 3 с, а позже на 10 с / 3 с / 10 с (в видео на 56:27):
const int greenOnTime = 5000;
const int yellowOnTime = 1000;
const int redOnTime = 5000;
Чтобы изменить ритм вашего светофора, просто отредактируйте эти три значения. Хотите медленный, реалистичный перекрёсток? Попробуйте 10000, 3000, 10000. Хотите быструю демонстрацию? Попробуйте 1000, 300, 1000.
Внутри loop() последовательность проста: включить зелёный, подождать, выключить зелёный; включить жёлтый, подождать, выключить жёлтый; включить красный, подождать, выключить красный; затем вернуться к зелёному. Монитор порта выводит каждое изменение состояния, чтобы вы могли убедиться, что время соответствует ожидаемому.
Живая демонстрация
После загрузки кода Arduino выполняет цикл самостоятельно. В видео сначала загорается зелёный светодиод, затем после его длительности ненадолго включается жёлтый, затем красный, и цикл немедленно перезапускается (в видео на 55:20).
Монитор порта отражает это в текстовом виде — "green LED on", "green off", "yellow on" и так далее — что отлично помогает убедиться, что ваши значения времени работают как задумано. Когда вы будете готовы запустить устройство автономно, отключите USB и подключите литий-ионный аккумулятор или адаптер на 5 В; Arduino продолжит цикл без компьютера (в видео на 56:11).
Связанные проекты из этого видео
- Урок 98-1: Как включить и выключить светодиод с помощью Arduino
- Урок 98-2: Как включить и выключить светодиод с помощью кнопки на Arduino
- Урок 98-3: Как включить/выключить переключаемый светодиод с помощью кнопки на Arduino
- Урок 98-4: Плавное затухание светодиода с помощью Arduino: управление яркостью
- Урок 98-5: Плавное затухание света при нажатии кнопки на Arduino
- Урок 98-6: Игра "Качели" со светодиодами на Arduino
- Урок 98-7: Бегущий огонь с использованием Arduino и 5 светодиодов
- Урок 98-8: Бегущий огонь с кнопкой и светодиодами на Arduino
- Урок 98-9: Измеритель уровня напряжения на светодиодах с использованием Arduino или бегущий огонь с потенциометром
Главы
- [00:00] Обзор 10 проектов со светодиодами на Arduino
- [01:22] Введение в пошаговый курс по Arduino
- [02:29] Что такое светодиод: символ, анод и катод
- [03:49] Расчёт токоограничивающего резистора для светодиода
- [49:25] Введение в проект светофора
- [49:44] Объяснение времени работы светофора
- [50:34] Схема подключения светофора
- [52:13] Объяснение кода светофора
- [54:32] Живая демонстрация с монитором порта
- [55:30] Изменение значений времени
- [56:11] Работа светофора от батареи
This code has not been parsed yet. Please return to the admin panel to parse it.
Вещи, которые могут вам понадобиться
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
Ресурсы и ссылки
-
ДокументацияДокументация для набора 3 в 1 IoT/умный автомобиль/обучающий комплект SunFounderdocs.sunfounder.com
-
Внешний
-
Внешний
-
Внешний
Файлы📁
Библиотеки Arduino (zip)
-
Исходный код обучающего набора 3-в-1 Smart Car от SunFounder
3in1-kit-main-v2.zip12.80 MB
Руководство пользователя
-
Руководство по сборке 3-в-1 Arduino Smart Car от SunFounderВ этом документе показана пошаговая сборка 3-в-1 Arduino Smart Car от SunFounder
SunFounder_car_assembly_manual.pdf1.20 MB