Интерактивная карта из Arduino или по следам «Админского светофора»

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

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

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

Первые светофоры

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

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

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

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

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

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

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

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

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

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

  • Первый урок с основами Ардуино.
  • Статью о том, как создаются проекты для начинающих.
  • Первые проекты со светодиодами – Маячок и Мигалка.

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

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

  • Плата Ардуино Уно или Нано.
  • Макетная плата.
  • Три светодиода. Естественно, что лучше всего красного, желтого и зеленого цветов.
  • Три резистора номиналом 220 Ом.
  • Соединительные провода.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Начинается все с зеленого света. Включаем его.
  • Спустя определенное количество времени зеленый начинает мигать. Водители и пешеходы завершают движение (или, как это часто бывает, ускоряются).
  • Зеленый выключается и включается желтый.
  • Спустя какое-то время выключается и желтый – загорается красный.
  • Эпоха красного цвета заканчивается не миганием, как у зеленого, а параллельным включением красного и желтого.
  • Спустя какое-то время красный и желтый выключаются, включается зеленый и все начинается сначала.

Согласно ГОСТу Р52282-2004 с правилами применения дорожных знаков и светофоров, длительность сигнала “красный с желтым” не должна превышать 2 секунд, длительность желтого строго равна 3 секундам. Мигание зеленого цвета происходит с частотой 1миг/секунду В течение 3х секунд.

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

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

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

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

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

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  digitalWrite(LED_GREEN, HIGH);             delay(TIMEOUT_GREEN);

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

// Мигаем зеленым светодиодом  // Первый раз  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);           delay(TIMEOUT_FLASH_GREEN);                  digitalWrite(LED_GREEN, HIGH);          delay(TIMEOUT_FLASH_GREEN);                    

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

for (int i=0; i<3; i++){        digitalWrite(LED_GREEN, LOW);                 delay(TIMEOUT_FLASH_GREEN);                        digitalWrite(LED_GREEN, HIGH);                delay(TIMEOUT_FLASH_GREEN);                  }</pre> Вот, в принципе,и все особенности. Давайте теперь соберем код вместе и напишем итоговую программу: 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, LOW);         }</pre> Загрузите скетч в контроллер и убедитесь, что все работает правильно. Если что-то пойдет не так, обратитесь к статье, посвященной подключению светодиода к Ардуино – там описаны все типичные случаи неисправностей. Улучшение проекта После того, как вы написали скетч и помигали светодиодами на макетной плате можно подумать и о том, как сделать из проекта светофор нечто большее. Какие еще улучшения возможны:  Сделать настоящий макет светофора. Поместить светодиоды и контроллер вместе с макетной платой в корпус. Можно выбрать достаточно большую коробку, чтобы туда поместился источник питания. А можно взять небольшой футляр, например, тубус от туалетной бумаги и разместить там светодиоды. Одной только макетной платой тут не обойдешься, т.к. провода и платы не влезут в миниатюрный корпус. Можно расширить проект, добавить светодиоды для пешеходов и написать программу для пешеходного светофора. Связать эти два светофора будет не сложно, в Arduino Uno без проблем найдется 5 пинов. Сделать проект для перекрестка. Здесь вам понадобится уже больше пинов и другой контроллер – например, Arduino Mega.  Заключение В этой статье мы узнали, как собрать вместе на одной макетной плате три светодиода  и подключить их к ардуино уно или нано. Разобрались с алгоритмом работы настоящего светофора и смогли написать свой скетч на языке C++. Мы еще раз убедились, что писать программы со светодиодами – это просто, нужно понять лишь несколько базовых принципов. Будем надеяться, что статья оказалась вам полезной и вы продолжите знакомство с платформой Ардуино с одним из следующих наших проектов.     

Цель: Собрать светофор из светодиодов.

План:

  • Собрать светофор (на 3);
  • Объяснить все конструкции языка с ссылками (на 4);
  • Изменить длительности свечения, чтобы стало больше похоже на светофор (на 5).

Виртуальная среда

Открыть виртуальную среду.

Собрать светофор. Задание на 3

Собрать схему.

image

Залить программу:

int red = 8,     yel = 7,     grn = 6; void setup() { pinMode(red, OUTPUT);   pinMode(yel, OUTPUT);   pinMode(grn, OUTPUT); }  int long_delay = 500,     short_delay = 200;  void loop() {   digitalWrite(red, HIGH);   delay(long_delay);   digitalWrite(red, LOW);   for(int i = 0; i < 3; i++) {     digitalWrite(yel, HIGH);     delay(short_delay);     digitalWrite(yel, LOW);     delay(short_delay);   }     digitalWrite(grn, HIGH);   delay(long_delay);   digitalWrite(grn, LOW);   for(int i = 0; i < 3; i++) {     digitalWrite(yel, HIGH);     delay(short_delay);     digitalWrite(yel, LOW);     delay(short_delay);   } }

Задание на 4

Изучить все ссылки в программе и ответить на 3 из 5 вопросов по ним.

Задание на 5

Изменить длительности свечения, чтобы стало больше похоже на светофор.

Создаем светофор на базе Ардуино Уно

Урок по созданию светофора на основе контроллера Ардуино, который научит понимать временные последовательности и будет работать как реальный светофор.

Последовательность работы светодиодов, выполненная на основе Arduino Uno, имитирует четырехстороннее пересечение, т.е. классический перекресток, где пересекаются две улицы одна из которых с менее интенсивным трафиком чем вторая. Этот урок по созданию светофора также поможет детям изучить последовательность сигналов дорожного трафика, чтобы они могли научиться пересекать перекрестки и понимать их поведение в реальной жизни.

Комплектующие

Начинаем с деталей для нашего проекта светофора:

  • 1x — Ардуино Уно (большинство плат Arduino должны подойти)
  • 2x — красные светодиоды
  • 2x — желтые (янтарные) светодиоды
  • 2x — зеленые светодиоды
  • 6x — резисторы 330 Ом

Дополнительно нам нужны провода-перемычки для соединения всех деталей схемы проекта.

Схема соединений

Для того, чтобы собрать наш Ардуино светофор нам нужно соединить плату Уно и светодиоды согласно схеме выше.

Как работает Ардуино светофор?

Это действительно простая концепция светофора, и приведенная ниже таблица помогает её объяснить. В коде используются инструкции loop и delay для того, чтобы реализовать время включения для каждого из светодиодов.

В примере светофора Ардуино, условно, две улицы. Каждая из них имеет разный объемы трафика (количество проезжающих машин), поэтому есть более длинный зеленый свет (с более коротким красным светом).

Трафик по одной из улиц (второй столбец) очень активный. Зеленый свет для этой улицы продолжается 12 секунд. На второй улице (третий столбец) гораздо меньше машин, поэтому нашему гипотетическому городу нужен зеленый свет на менее активной улице короче по времени. Зеленый свет составит 1/3 от времени зеленого сигнала светофора на основной улице, т.е. получается 4-секундный зеленый свет.

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

Когда проходят 4 секунды зеленого света на второй улице мы делаем еще один период «перекрытия» красным светом, после чего цикл сигналов светофора Ардуино возобновляется.

Скетч (код) для Ардуино

Ниже приводим код нашего светофора, который необходимо загрузить в ардуину. Вы можете либо скачать .ino файл, либо скопировать код целиком и вставить в редактор Arduino IDE.

Честно скажем, что у нас получился довольно простой и устаревший Ардуино светофор. Современные светофоры сегодня достаточно «умны» — они могут обнаруживать транспортные средства, корректировать свое время и даже делать перерывы для пешеходных переходов. Всегда есть возможность для улучшения!

Светофор на Ардуино для начинающих

Светофор на Ардуино ► позволит вам лучше разобраться в среде программирования Arduino IDE и понять принцип работы цифровых пинов общего назначения платы.

Читать еще:  Воздуходувка своими руками

Сделать светофор на Arduino для начинающих изучать микроконтроллер — это отличное занятие, которое позволит лучше разобраться в среде программирования Arduino IDE и понять принцип работы цифровых пинов общего назначения. Рассмотрим схему сборки светофора на Arduino Uno с помощью макетной платы и представим простой проект, который можно использовать на занятиях робототехники с детьми.

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

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • цветные светодиоды и резисторы;
  • тактовая кнопка;
  • макетная плата;
  • провода «папа-папа», «папа-мама».

Для начала соберем простую схему светофора на беспаечной макетной плате, чтобы разобраться с кодом для микроконтроллера Ардуино и понять алгоритм работы светофоров на перекрестках. Это также полезно будет знать детям, чтобы понимать режим работы светофоров на дороге в реальной жизни. Подключите светодиоды к Ардуино по представленной выше схеме и загрузите следующий скетч в плату.

Схема светофора на Ардуино для начинающих

Счетч светофора Arduino для начинающих

Пояснения к коду:

  1. для пинов со светодиодами заданы имена с помощью директивы #define ;
  2. переключение светодиодов происходит каждые три секунды, интервал можно изменить, поменяв в программе значение переменной int pause = 3000; .

Светофор на Arduino Uno с кнопкой

Данный пример позволит детям понять работу светофоров на пешеходных переходах, где переключение режима работы происходит при нажатии кнопки. При данном алгоритме работы, необходимо использовать цикл while в программе. В схему следует добавить тактовую кнопку и переключать режим светофора при высоком уровне сигнала на цифровом (аналоговом) пине к которому была подключена кнопка.

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

Счетч для светофора на Ардуино с кнопкой

Пояснения к коду:

  1. для пинов со светодиодами и для тактовой кнопки заданы имена;
  2. цикл while выполняется только при нажатой кнопке.

Как сделать светофор на Ардуино

В следующем коде было добавлено мигание зеленого сигнала светофора, в остальном он ничем не отличается от первого скетча в этом обзоре. Для желающих сделать подобный проект, мы разместили все необходимые файлы в одном архиве здесь. По ссылке вы можете скачать чертеж перекрестка в формате CDR (Corel Draw) и 3D модель светофора в формате STL. Код для светофора Ардуино размещен далее.

Светофор на Ардуино

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

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

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

Читать еще:  Как сделать простейшего мини робота шагохода своими руками!

Первые светофоры

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

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

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

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

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

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

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

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

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

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

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

  • Плата Ардуино Уно или Нано.
  • Макетная плата.
  • Три светодиода. Естественно, что лучше всего красного, желтого и зеленого цветов.
  • Три резистора номиналом 220 Ом.
  • Соединительные провода.

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

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

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

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

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

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

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

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

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

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

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

Читать еще:  Легкий и мощный инвертор для контактной сварки своими руками

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

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

  • Начинается все с зеленого света. Включаем его.
  • Спустя определенное количество времени зеленый начинает мигать. Водители и пешеходы завершают движение (или, как это часто бывает, ускоряются).
  • Зеленый выключается и включается желтый.
  • Спустя какое-то время выключается и желтый – загорается красный.
  • Эпоха красного цвета заканчивается не миганием, как у зеленого, а параллельным включением красного и желтого.
  • Спустя какое-то время красный и желтый выключаются, включается зеленый и все начинается сначала.

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Я новичок Arduino и пытаюсь построить интерактивный светофор. Этот код не удается скомпилировать. Пожалуйста помочь.

Моя единственная проблема — в пустотном цикле. Компилятор Arduino не принимает changeLights в качестве функции. Поэтому я создал новый unsigned long под названием «changeLights», но он по-прежнему не работает.

Вот ссылка на скриншот изображения .

c arduinoSathya Anantharajah     17 декабря 2013 в 01:35

3 ответа

  • Интерактивные графики в PDF

    Я хочу создавать интерактивные диаграммы в PDF точно так же, как Google charts но это для встраивания на веб-странице Я хочу встраивать интерактивную диаграмму в PDF.

  • Светофоры моделирования и коммуникации технология

    Так что у меня есть этот проект. Система отдаст приоритет аварийным машинам, когда они приблизятся к светофору, и когда они приблизятся, я хочу изменить состояние светофора с красного на зеленый, но в правильной последовательности. Мне удалось это сделать, но это не работает с реальным…

Если у вас возникли проблемы с компиляцией чего-либо, пожалуйста, включите выходные данные и сообщения об ошибках от компилятора.

У вас есть некоторые синтаксические и связанные с ними ошибки в коде.

Оператор ‘for’ с точкой с запятой непосредственно после него означает, что он не имеет тела. Поскольку у вас был блок кода после оператора for, я не думаю, что это то, что вы намеревались. Удалите «;» в конце. Кроме того, и ; являются различными операторами, они делают разные вещи. Замените «,» на»;».

Это утверждение имеет несбалансированные скобки: 3 правых родителя и 4 левых родителя. Он не будет компилироваться. Даже если бы это было так, это не сделало бы того, что вы хотите. Попробуй:

Функция, которую вы определяете chngeLight , не соответствует функции, которую вы назвали changeLights . Имена должны совпадать, или компилятор считает, что это разные функции.

Chris J. Kiick     17 декабря 2013 в 02:11

Вы объявляете свою функцию как

но вы называете это с

(Обратите внимание, что у одного есть «s», а у другого нет). Попробуйте изменить свой вызов на changeLight() и посмотрите, работает ли он.

DerStrom8     17 декабря 2013 в 02:29

Резюме:

Во-первых, ваш метод changeLights написан с ошибкой.

Во-вторых, в C++ вам нужно либо создать прототип

OR

поместите метод, который вы хотите вызвать, выше фактического вызова.

Подробности:

Чтобы создать прототип для вашего метода ChangeLights()

поместите курсор над методом setup() и поместите его в

Это сообщит rest вашего файла, что этот вызов метода существует и что он не принимает никаких аргументов и ничего не возвращает.

Другой способ сделать это-физически переместить ваш метод ChangeLights() выше метода(ов), где вы его вызываете. Это немного больше гетто, а не предпочтительный способ.

Anthony Russell     17 декабря 2013 в 13:44

  • Мигающие дивы, как светофоры?

    У меня есть этот сайт: backlinkbeat.com . Внизу есть 3 дива с фоновыми изображениями. Каждое фоновое изображение содержит число типа 1, 2, 3. Я хочу, чтобы эти дивы мигали соответственно как светофоры. Сценарий, который я написал, не мигает правильно, как вы можете видеть в ссылке , что означает,…

  • Интерактивные графики в android

    Я делаю приложение android, где мне нужно реализовать интерактивные графики. Может ли кто — нибудь предложить хорошие библиотеки для использования? Я прошел через achartengine. Мне нужны некоторые интерактивные библиотеки диаграмм.

Интерактивные иконки на главном экране

Я искал эту тему и ничего не мог найти по ней. Есть ли способ сделать интерактивные иконки на главном экране? например, есть clean master, что после того, как вы нажмете на его иконку, он сделает…

IPython интерактивные слайд-шоу?

Я хотел бы иметь интерактивные виджеты в моей колоде слайдов IPython, как я видел в других презентациях. Я знаю, как создавать ячейки слайдов,и мне удалось экспортировать колоду как отдельную колоду…

Интерактивные сообщения на slack без внешнего сервиса

Я работаю над простым slack-ботом, который должен задавать простые вопросы (yes/no) и на основе ответов выполнять некоторые действия. АФАИУ, я должен был бы использовать для этого интерактивные…

Интерактивные графики в PDF

Я хочу создавать интерактивные диаграммы в PDF точно так же, как Google charts но это для встраивания на веб-странице Я хочу встраивать интерактивную диаграмму в PDF.

Светофоры моделирования и коммуникации технология

Так что у меня есть этот проект. Система отдаст приоритет аварийным машинам, когда они приблизятся к светофору, и когда они приблизятся, я хочу изменить состояние светофора с красного на зеленый, но…

Мигающие дивы, как светофоры?

У меня есть этот сайт: backlinkbeat.com . Внизу есть 3 дива с фоновыми изображениями. Каждое фоновое изображение содержит число типа 1, 2, 3. Я хочу, чтобы эти дивы мигали соответственно как…

Интерактивные графики в android

Я делаю приложение android, где мне нужно реализовать интерактивные графики. Может ли кто — нибудь предложить хорошие библиотеки для использования? Я прошел через achartengine. Мне нужны некоторые…

Arduino проект на сервере

Я строю проект с asp.net, который соединяется с Arduino Uno. Я подключаю некоторые магнитные датчики к Arduino, и я хочу, чтобы результаты датчиков обновлялись в режиме реального времени в моей базе…

как добавить больше автомобилей в симуляцию, ограничить скорость и отредактировать светофоры

Я хочу добавить больше транспортных средств и изменить скорость. Я использовал команду —max-num-vehicles 30 , чтобы попытаться запустить симуляцию с большим количеством автомобилей, но по какой-то…

Светофоры в Power Bi, которые работают также для итогов

Как сделать светофор в таблице визуальным, который работает и для итогов? Допустим , наш KPI-это какое-то соотношение или доля, как GDP на душу населения по странам , или разница от бюджета по…

Содержание

Создаем светофор на базе Ардуино Уно

Урок по созданию светофора на основе контроллера Ардуино, который научит понимать временные последовательности и будет работать как реальный светофор.

Последовательность работы светодиодов, выполненная на основе Arduino Uno, имитирует четырехстороннее пересечение, т.е. классический перекресток, где пересекаются две улицы одна из которых с менее интенсивным трафиком чем вторая. Этот урок по созданию светофора также поможет детям изучить последовательность сигналов дорожного трафика, чтобы они могли научиться пересекать перекрестки и понимать их поведение в реальной жизни.

Комплектующие

Начинаем с деталей для нашего проекта светофора:

Дополнительно нам нужны провода-перемычки для соединения всех деталей схемы проекта.

Схема соединений

Для того, чтобы собрать наш Ардуино светофор нам нужно соединить плату Уно и светодиоды согласно схеме выше.

Как работает Ардуино светофор?

Это действительно простая концепция светофора, и приведенная ниже таблица помогает её объяснить. В коде используются инструкции loop и delay для того, чтобы реализовать время включения для каждого из светодиодов.

В примере светофора Ардуино, условно, две улицы. Каждая из них имеет разный объемы трафика (количество проезжающих машин), поэтому есть более длинный зеленый свет (с более коротким красным светом).

Трафик по одной из улиц (второй столбец) очень активный. Зеленый свет для этой улицы продолжается 12 секунд. На второй улице (третий столбец) гораздо меньше машин, поэтому нашему гипотетическому городу нужен зеленый свет на менее активной улице короче по времени. Зеленый свет составит 1/3 от времени зеленого сигнала светофора на основной улице, т.е. получается 4-секундный зеленый свет.

Читайте также:  Как сделать водонагреватель в печь

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

Когда проходят 4 секунды зеленого света на второй улице мы делаем еще один период «перекрытия» красным светом, после чего цикл сигналов светофора Ардуино возобновляется.

Скетч (код) для Ардуино

Источник

Уроки Ардуино: Два светофора для перекрестка дороги на базе Arduino. Часть 1.

Уроки Ардуино: Два светофора для перекрестка дороги на базе Arduino. Часть 1.

Итак, Вы являетесь счастливым обладателем одного из конструкторов Arduino серии «Дерзай» («Базовый», «Изучаем Arduino» и «Умный дом»), Вы уже подключали плату и запускали в Arduino IDE первый пример — «Hello, World» для Arduino (мигание встроенным светодиодом). Это хорошо, Вы сделали первый шаг разработчика-художника проектов на основе Arduino. Сейчас мы вместе рассмотрим более сложный и более полезный проект – создание на базе Arduino двух светофоров для перекрестка дороги, по которой смогут передвигаться созданные Вами роботы. Для сборки светофора Ардуино Вам понадобятся следующие детали, которые имеются в каждом из наборов Arduino :

Читайте также:  Как сделать вывих пальца ноги

Рисунок 1. Схема соединений светодиодов

Занесем в константы и выводы подключения светофора (в этом примере мы рассматриваем один светофор)

Создадим и переменную blinkyellow (типа boolean), которую будем использовать для организации мигания желтого светодиода (blinkyellow=true – светодиод «горит», blinkyellow=false – светодиод «погашен»). Как Вы уже знаете, цифровые выводы Arduino могут работать как входы и как выходы. Режим работы цифрового вывода устанавливается командой pinMode(). В процедуре setup() настроим все выводы Arduino, к которым подключены светодиоды, как выводы, и подадим на них значение LOW (т.е. светодиоды выключим).

Рисунок 2,3. Работа двух светофора на макетной плате

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

Источник

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий