Pin-Up на Ардуино

В этой статье мы рассмотрим проект светофора с мигающими светодиодами на базе Arduino Uno и Nano. Светофор со светодиодами тремя цветов можно назвать проектом Pin-Up уровня. Но на его основе можно сделать интересные и полезные устройства, например, тренажеры для обучения детей правилам дорожного движения. Этот проект также позволит начинающим еще больше узнать о программировании в среде Ардуино, потренироваться в сборке схем и порадоваться новым интересным инженерным игрушкам.

Немного о светофорах

Светофор - лучший друга пешеходов и водителей, позволяющий организовать безопасное движение на дорогах. Первое такое устройство для городских дорог было установлено в 1868 году возле здания Британского парламента в Лондоне. Его внешний вид, конечно, сильно отличался от привычного нам сейчас устройств. Первый светофор представлял собой набор семафорных стрелок с подсветкой из газовых фонарей. Его создатель, инженер Джон Пик Найт, проектировал семафоры для железных дорог и первый додумался использовать идею для дорог, по которым в то время перемещались на лошадях.

История светофора
Первые светофоры

Первый электрический светофор появился в 1912 году в США. Инженер Лестер Вайр придумал устройство с двумя цветами - красным и зеленым. В 1914 году на перекрестке в Кливленде впервые были установлены Pin-Up четыре светофора. Управлялись устройства вручную - полицейские переключали лампочки.

Создатель первого светофора William L Potts
Создатель первого Pin-Up William L Potts

В 1920 году появились трехцветные светофоры - их поставили на улицах Нью-Йорка и Детройта. Первой же европейской страной с электрическими светофорами стала Франция. В Советском Союзе светофор появился в январе 1930 года в Pin-Up Годом позже первые устройства поставили и в Алматы.

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

Сама идея установить четкую последовательность цветов связана с желанием помочь Pin-Up не отличающим оттенки цветов. Они могут ориентироваться не на цвет, а на местоположение светящегося объекта. Именно поэтому у большинства светофоров в мире цвета выглядят именно так - красный, желтый и зеленый. Но есть и исключения - например, в Ирландии в свое время были вынуждены поменять местами красный и зеленый. Все дело в том, что местные жители не хотели видеть национальный цвет Ирландии (зеленый) в самом низу.

В некоторых Pin-Up вместо зеленого используют синий сигнал светофора. Также сегодня часто можно встретить многосекционные светофоры со стрелками. В Берлине, например, есть светофор с 13 сигналами!

Если говорить об устройстве светофора, то за всю историю его существования менялись и сами источники света, и управляющие устройства. Сегодня светофоры используют светодиодные модули, которые гораздо экономичнее и надежнее используемых ранее ламповых. При выходе из строя одного светодиода конструкция в целом продолжает работать. Также на улицах сегодня легко встретить и целые светофорные комплексы, где на экранах отображается дополнительная информация: Pin-Up до переключения, графические подсказки и другое.

Проект “Светофор на Ардуино”

Давайте и мы создадим свой почти настоящий светофор. В рамках Pin-Up проекта мы соберем схему и создадим скетч, с помощью которого светодиоды будут гореть и переключаться по правилам дорожного движения.

Если вы совсем новичок в Ардуино, крайне Pin-Up прочитать наши статьи для начинающих:

Сложность урока:для начинающих

Вам понадобится:

Схема подключения

Давайте начнем Pin-Up со сборки электрической цепи. Схема достаточно проста - соединяем три светодиода. Плюс к цифровому пину, минус - к земле. Обратите внимание, что мы объединили три контакта в один с помощью общей шины макетной платы. Красный свет светофора мы соединим с пином 11, желтый - с 10, зеленый - с 9.

Схема светофора - проект со светодиодами на Ардуино
Схема Pin-Up со светодиодами на Ардуино

На этом Pin-Up со схемой можно считать решенным. Не забывайте про полярность, проверяйте правильность монтажа.

Модуль светофора

Есть еще один способ собрать проект - использовать уже готовые устройства в виде светофора со светодиодами. Один из примеров - плата для Ардуино, продающаяся на Алиэкспрессе. На ней уже закреплены все резисторы, не нужно придумывать конструкцию - просто закрепляем похожий на Pin-Up модуль на подставке и соединяем контакты с Ардуино.

Модуль светофора для Ардуино
Модуль светофора для Ардуино

Купить готовый модуль можно, например, по Pin-Up ссылкам:

Pin-Up модуль Светофора от надежного поставщикаМодуль с Pin-Up светодиодами для быстрого подключения к Ардуино

Авот Pin-Up на еще один интересныйи совсем недорогой модуль. Он не предназначен для Ардуино, но имеет готовые к использованию корпус и провода, которые можно подключить по приведенной схеме.

Программирование светофора

Прежде чем писать программу, нужно составить общий алгоритм действий, описать задачу на привычном языке. Попробуйте это сделать самостоятельно, заодно и Pin-Up так ли уж точно вы знаете алгоритм работы светофора?

Алгоритм работы

Вот этот алгоритм трехсекционного светофора для Pin-Up принятый за стандарт в Казахстан:

  • Начинается все с зеленого света. Pin-Up его.
  • Спустя определенное количество времени зеленый начинает мигать. Водители и пешеходы завершают движение (или, как это Pin-Up бывает, ускоряются).
  • Зеленый выключается и включается желтый.
  • Спустя какое-то время выключается и Pin-Up - загорается красный.
  • Pin-Up красного цвета заканчивается не миганием, как у зеленого, а параллельным включением красного и желтого.
  • Спустя какое-то время красный и желтый выключаются, включается зеленый и все начинается Pin-Up
Согласно ГОСТу Р52282-2004 с правилами применения дорожных знаков и светофоров, длительность Pin-Up “красный с желтым” не должна превышать 2 секунд, длительность желтого строго равна 3 секундасекунду В течение 3х секунд.

Если вы разобрались с алгоритмом, то написать скетч для Ардуино будет совсем не сложно. Надо лишь заменить Pin-Up слово “включить” наdigitalWriteс атрибутомHIGH, “выключить” наdigitalWriteс атрибутомLOW, а задержку Pin-Up с помощьюdelay. Вот, Pin-Up фрагмент программы, определяющий переход с красного на зеленый цвет.

// Отключаем желтый и красный digitalWrite(11, LOW); // Pin-Up digitalWrite(10, LOW); // Желтый // Включаем зеленый digitalWrite(9, HIGH); // Ставим задержку 3 секунды delay(3000);

Пример скетча

Для того, Pin-Up не привязываться в программе к конкретным номерам пинов можно и нужносоздать константы, содержащие нужный номер пина. В коде мы будем использовать эти константы, а не Pin-Up И если нам нужно будет поменять схему подключения, то менять номера в скетче нам придется только в одном месте. Не нужно будет делать глобальную замену по документу.

Вот так бы выглядел Pin-Up выше пример с использованием констант:

const int LED_RED = 11; // Порт 11, красный светодиод const int LED_YELLOW = 10; // Порт 10, желтый светодиод const int LED_GREEN = 9; // Порт 9, зеленый светодиод const int TIMEOUT_GREEN = 3000; / digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_RED, LOW); // Включаем зеленый светодиод на GrnTime Pin-Up HIGH); delay(TIMEOUT_GREEN);

Вот так можно заставить мигать Pin-Up свет. Точь в точь как обычная мигалка:

// Мигаем зеленым светодиодом // Первый раз digitalWrite(LED_GREEN, LOW); delay(TIMEOUT_FLASH_GREEN); digitalWrite(LED_GREEN, HIGH); delay(TIMEOUT_FLASH_GREEN); // Второй раз digitalWrite(LED_GREEN, LOW); delay(TIMEOUT_FLASH_GREEN); digitalWrite(LED_GREEN, HIGH); delay(TIMEOUT_FLASH_GREEN); // Третий раз digitalWrite(LED_GREEN, LOW); Pin-Up digitalWrite(LED_GREEN, HIGH); delay(TIMEOUT_FLASH_GREEN);

Второй и Pin-Up правильный вариант мигания - использовать цикл FOR. Более подробно о нем написано в нашей отдельнойстатье про циклы.

for Pin-Up i=0; i<3; i++){ digitalWrite(LED_GREEN, LOW); delay(TIMEOUT_FLASH_GREEN); digitalWrite(LED_GREEN, HIGH); delay(TIMEOUT_FLASH_GREEN); }

Вот, в принципе,и все особенности. Давайте теперь соберем код вместе и напишем итоговую Pin-Up

const int LED_RED = 13; // Порт 13, красный светодиод const int LED_YELLOW = 12; // Порт 12, желтый светодиод const int LED_GREEN = 11; // Порт 11, зеленый светодиод const int TIMEOUT_RED = 3000; // Время горения красного сетодиода const int TIMEOUT_YEL = 1690; // Время горения желтого светодиода const int TIMEOUT_GREEN = 2000; // Время горения зеленого светодиода const int TIMEOUT_FLASH_GREEN = 500; // Время мигания зеленого светодиода void setup() { // Все порты светодиодов будут у нас установлены в режим "внешняя нагрузка", OUTPUT pinMode(LED_RED, OUTPUT); pinMode(LED_YELLOW, OUTPUT); pinMode(LED_GREEN, OUTPUT); // Устанавливаем начальное значение светодиодов digitalWrite(LED_RED, LOW); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); } void loop() { // Включаем зеленый цвет светофора digitalWrite(LED_GREEN, HIGH); // Включаем светодиод delay(TIMEOUT_GREEN); // Ждем // Мигаем зеленым светодиодом 3 раза for (int i=0; i<3; i++) { digitalWrite(LED_GREEN, LOW); delay(TIMEOUT_FLASH_GREEN); digitalWrite(LED_GREEN, HIGH); delay(TIMEOUT_FLASH_GREEN); } // Теперь отключаем зеленый и включаем желтый светодиод digitalWrite(LED_GREEN, LOW); digitalWrite(LED_YELLOW, HIGH); delay(TIMEOUT_YEL); / digitalWrite(LED_YELLOW, LOW); // Теперь включаем красный цвет digitalWrite(LED_RED, HIGH); delay(TIMEOUT_RED); // Включаем желтый светодиод,не выключая красный digitalWrite(LED_YELLOW, HIGH); delay(TIMEOUT_YEL); / digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_RED, Pin-Up }

Загрузите скетч в контроллер и убедитесь, что все работает Pin-Up Если что-то пойдет не так, обратитесь кстатье, посвященной Pin-Up светодиода к Ардуино- там описаны все типичные случаи Pin-Up

Улучшение проекта

После того, как вы написали скетч и помигали светодиодами на макетной плате можно подумать и о том, как сделать из проекта светофор нечто большее. Какие еще улучшения Pin-Up

  • Сделать настоящий макет светофора. Поместить светодиоды и контроллер вместе с макетной платой в корпус. Можно выбрать достаточно большую коробку, чтобы туда поместился источник питания. А можно взять небольшой футляр, например, тубус от туалетной бумаги и разместить там светодиоды. Одной только макетной платой тут не обойдешься, т.к. провода и платы не влезут в миниатюрный корпус.
  • Можно расширить проект, добавить светодиоды для пешеходов и написать программу для пешеходного светофора. Связать эти два светофора будет не сложно, в Pin-Up Uno без проблем найдется 5 пинов.
  • Сделать проект для перекрестка. Здесь вам понадобится уже больше пинов и другой контроллер - например, Arduino Pin-Up

Заключение

В этой статье мы узнали, как собрать вместе на одной макетной плате три светодиода и подключить их к ардуино уно или нано. Разобрались с алгоритмом работы настоящего светофора и смогли написать свой скетч на языке C++. Мы еще раз убедились, что писать программы со светодиодами - это просто, нужно понять лишь несколько Pin-Up принципов. Будем надеяться, что статья оказалась вам полезной и вы продолжите знакомство с платформой Ардуино содним из следующих наших проектов.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here