Светофор на микроконтроллере своими руками

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

К выводам порта D подключены три светодиода с цветным покрытием. Выводу 0 соответствует зеленый свет, выводу 1 — желтый, а выводу 2 — красный. Управление сигналами этого "светофора" осуществляется по уровню напряжения на аналоговом входе (пусть это будет вывод 3 порта А). При напряжении до 1 В на этом входе должен загораться зеленый свет, при напряжении 1..2 В — желтый, а при напряжении свыше 2 В — красный. Значение преобразования сохраняется в регистровой паре ADCL:ADCH, которой в WinAVR соответствует константа ADCW. Разрешение АЦП — 10 бит, а предельное значение напряжения на аналоговом входе составляет 5 В. Таким образом, для срабатывания зеленого света значение ADCW должно быть меньше, чем 1 • (2 10 - 1) / 5 = 1023 / 5. Аналогичным образом вычисляются и пороговые величины для красного (больше 2046 / 5) и желтого (1023 / 5 .. .2046 / 5) света.

Примечание: при компиляции проекта требуется добавить в проект следующие библиотеки: "avr/io.h", "avr/interrupt.h", "signal.h".


Файлы проекта можно скачать здесь:

.Урок 7 - Светофор на Arduino своими руками. Пишем скетч используя функции

В данном уроке сделаем самый простой светофор из трех светодиодов . Работать он должен вот по такой схеме.

Работа светофора

1. Светит только красный цвет нашего будущего светофора.

2. Не выключая красный сигнал светофора включаем желтый .

3. Выключаем красный и желтый включаем зеленый.

4. Выключаем зеленый сигнал светофора включаем желтый.

После чего цикл повторяем с красного сигнала светофора.

Для урока нам понадобится:

Подключим три LED к плате Arduino UNO . У нас получиться вот такая схема.

Светофор на ардуино своими руками

Принципиальная схема подключения светофора на Arduino

Скетч выглядит так

Для управления светодиодами используем функции digitalWrite().

Давайте заменим стандартную функции digitalWrite() на свою функцию Led().

Функция принимает две переменные pin — пин светодиода и status — состояние светодиода HIGH или LOW.

В итоге получим вот такой скетч

Как видно по скетчу код стал больше, а функции используют для уменьшения объема кода и упрощения логики. Но мы на этом простом примере посмотрели что такое функция и как передавать переменные в функции в среде разработки arduino IDE.

Понятие что такое функции и как их объявлять пригодиться нам в следующем уроке.

Ест вопросы смотрите видео там подробно описываю программу светофора на Arduino.

Следующий урок: Светофор из 3 светодиодов для машин и 2 для пешеходов на Arduino

В этом уроке мы создадим своими руками систему светофоров, которая будет управляться микроконтроллером Arduino Uno.

Данный проект был создан пользователем JosiahP4 и назывался "Green Lights" для обучения студентов физическим вычислениям, что включало в себя настройку входов и выходов, изучение электричества, программирование с Arduino и немного знаний о системах управления движением. Перекресток изначально планировалось установить в классе, а студентов разделить на команды. Команды получат карточки для заметок с командами (например, lightOn('n', "green") или sleep(2); ), которые будут объяснены в рамках урока. В целом, этот проект дает студентам возможность окунуться в мир электроники.

Шаг 1. Комплектующие

Переходим к важной подготовительной части, которая позволит нам сделать систему светофоров на основе Ардуино Уно. Но сперва небольшое отступление - в начале этого проекта была попытка использовать Raspberry Pi с PWM, но пришлось отказаться от идеи, потому что попытка найти драйверы заняла очень много времени.

Детали:

Инструменты:

  • Компьютер с установленной Arduino IDE
  • Низкотемпературный горячий клеевой пистолет
  • Powerbank, переносной блок питания (если вы хотите носить проект с собой для демонстрации)
  • Различные штуки для украшения вашего перекрестка

Шаг 2. Собираем проект




Пожалуйста, используйте вступительные фотографии в качестве руководства:

  1. Начните с обрезки пенопласта до размера перекрестка, который вы хотите получить.
  2. Затем нарежьте четыре куска пенопласта под основание светофоров.
  3. Прикрепите горячим клеем основы светофоров на основание для перекрестка.
  4. Вырежьте прямоугольное отверстие перед основаниями светофоров под провода.
  5. Приклейте светофоры к каждому кусочку пенопласта на внутренней стороне перекрестка.
  6. С внутренней стороны просуньте провода (снизу вверх) и подключите их к светофорам (следите за цветами проводов, идущими на светофоры). Красный, желтый, зеленый пины. Обратите внимание на буквы на пинах - Зеленый, Желтый, Красный и Земля.
  7. Подключите провода к цифровым контактам 2 - 13 на Arduino

Соединения делаем таким образом:

eastLightG 2;
eastLightY 3;
eastLightR 4;
northLightG 5;
northLightY 6;
northLightR 7;
southLightG 8;
southLightY 9;
southLightR 10;
westLightG 11;
westLightY 12;
westLightR 13;
GND GND (для всех).

Шаг 3. Код для системы светофоров Ардуино

Файл "testirovanie-svetofora.ino" представляет собой простой эскиз, который тестирует светофор. Файл "arduino-svetofor.ino" - это то, что можно использовать для обучения. Все, что нужно знать, прокомментировано в коде.

Продолжая тему электроники для автомоделистов (Полицейская мигалка и полицейская сирена), предлагаем собрать модель четырёхстороннего светофора.

Задающий генератор на логических элеметах DD1.1, DD1.2, двоичный счетчик DD2, логические элементы DD1.3, DD1.4, DD3.1 — DD3.4 и транзисторные ключи VT1 — VT5, управляющие своими группами светодиодов одного цвета.

Светодиоды в группах обозначены двумя направлениями: 1 и 2. Поскольку в каждой группе по два последовательно соединенных светодиода, это означает, что, например, один из зеленых сеетодиодов пары HL1, HL2 направлены в одну сторону, а другой — в противоположную. Тогда зеленые светодипды HL11 и HL12 должны быть расположены в перпендикулярном направлении, также по одному в каждую сторону.

Схема


Рис.1 (увеличить схему)

Рассмотрим работу устройства, пользуясь не только схемой (рис.1), но и диаграммой сигналов (рис.2) в разных ее точках. Задающий генератор вырабатывает cигналы частотой около 1,5 Гц. Они поступают ва счетный вход (вывод 10) микросхемы DD2, поэтому на ее выходах начнут появляться последовательности импульсов разной частоты.

Предположим, что вначале горит красный свет направления 1 (светодиоды HL7. HLB, диаграмма 4, период t0—t1; в дальнейшем будет указан в скобках номер диаграммы и соответствующий ей период), поскольку на выводе 4 DD2 низкий уровень и транзистор VT3 открыт. Одновременно зажжется зеленый свет направления 2 (9,t0-t1,), поскольку на выводе 10 элемента DD3.3 будет высокий уровень (8,t0-t1), и на выводе 11 элемента DD1.4 — также высокий уровень (диаграмма 5,период t0-t1). По прошествии восьми импульсов на выходе буферного элемента DD1.3(1,t1) и с началом девятого импульса на вывода 5 счетчика DD2 появится высокий логический уровень (3, t1). Элемент DD1.4 начнет переключаться импульсами, поступающими с вывода 10 элемента DD1.3(1t1-t2).

Поскольку на выходе алемента DD3.2 высокий уровень (7, t1—t2), диод VD1 закрыт На выводе 10 элемента DD3.3 останется высокий уровень (8, t1,— t2), поэтому на выходе элемента DD3.4 появятся импульсы (9,t1-t2), которые переведут зеленые сеетодиоды HL11,HL12 в мигающий режим работы. Красные светодиоды HL7,HL8 будут продолжать светиться (4, t1—t2).

диаграмы

Рис.2

По окончании четырех импульсов на выводе 7 D02(2,t2) появится высокий уровень. На выводе 5 счетчика также высокий уровень (3,t2-t3) поэтому элемент DD3.2 перейдет в состояние низкого уровня на выводе (7,t2—t3) Вспыхнут желтые оаетодиоды HL3-HL6 четырёх направлений. Открывшийся диод VD1 низким уровнем (5, t2-t3) переведёт элемент DD3.4 в состояние высокого уровня на выходе (9,t2-t3), Зеленые светодиоды HL11, HL12 погаснут, а красные HL7, HL8 будут продолжать гореть ещё в течении четырёх импульсов (4,t2-t3).

Затем высокий уровень на выводе 4 счетчика (4,t3) погасит красные светодиоды HL7, HL8. Одновременно погаснут и все желтые светодиоды, поскольку низкие уровни на выводах 7 (2.t3) и 5 (3.t3) счетчика переведут элемент DD3.2 в состояние высокого уровня на выходе (7. t3). Высоким уровнем на выводе 4 DD2 (4,t3) зажгутся красные светодиоды HL9, HL10 другого направления. Зеленые светодиоды HL1, HL2 также включатся, потому что на выводах 1 (5,t3) и 2 (4,t3) элемента DD3.1 появятся высокие уровни.

Так будет продолжаться ещё в течении восми импульсов на выходе элемента DD1.3 (1, t3—t4). Затем высокий уровень на выводе 13 элемента DD1.4 (3,t4—t5) разрешит прохождение импульсов с выхода элемента DD1.3 на вход DD3.1 (5,t4—t5). Светодиоды HL1 и HL2 начнут мигать.

После четырех импульсов низкий уровень на выходе элемента DD3.2 (7,t5—t6) погасит эти светодиоды и включит желтые HL3—HL6. Красные светодиоды HL9, HL10 все это время продолжают гореть (8,t3—t6).C приходом очередного, 33-го импульса (с начала работы светофора) устройство перейдет в исходное состояние (1 —6,t6) — вспыхнут красные светодиоды HL7, HL8 и зеленые HL11, HL12, а остальные погаснут. Далее повторятся описанные выше процессы.

Кроме указанных на схеме, на месте DD1, DD3 допустимо использовать микросхемы К564ЛА7, К176ЛА7. Транзисторы — любые из серий КТ361, КТ3107, диод VD1 — любой из серий КД503, КД521, КД522, светодиоды — любые отечественные или импортные с наибольшей светоотдачей и соответствующего цвета свечения. В зависимости от габаритов светофора можно использовать как миниатюрные светодиоды диаметром около 3 мм, так и более крупные диаметром 10. 12 мм. Светодиоды размещают в корпусе четырехстороннего светофора либо в одиночных светофорах, устанавливая в каждом по три светодиода (по одному каждого цвета) и соединяя их в соответствии с рис.3.

Всем привет.
Захотелось сделать светофор на PIC. (Мой первый опыт)
Но есть часть проблемного кода.
Вообщем дело обстоит так, когда время зелёного света для пешеходов подходит к концу он должен мигнуть 5 раз, но этого не происходит, симулирую в Протеусе.
Я его вынес в отдельный проект для мигания светодиодом 5 раз после нажатия кнопки.
Также прикрепляю принт скрин схемки в протеусе.

Проблема в том что он не мигает а просто светит.
Можна и сделать по другому, но хотелось бы именно так.
Где я ошибся?
Зарание спасибо.
ПС: Если надо могу выложить весь проект светофора.

Работа с USB в PIC на ASM
ValeryS, Здравствуйте, если Вас не затруднит, помогите разобраться пожалуйста с протоколом USB у.

Переписать программу с ASM на C для PIC
Имеется исходник для pic18 на ASM(с комментариями) нужно нарисовать блок схему алгоритма и.


Считывание числа с порта на PIC (ASM)
Нужно составить алгоритм или программу на языке ассемблер для пик микроконтроллера само задание.

Читайте также: