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

Всем доброго времени суток.Решил сделать светофор в детский сад сына, который работал бы в автоматическом режиме.

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

Я же хотел сделать так, чтобы кнопок было 4: 1 — переключение режимов; 2,3,4 — красный, жёлтый, зелёный. Загвоздка в том, что я не умею писать код, да и вообще по ардуино знаний практически нет.На данный момент имею следующее:

Питать и Arduino и светодиоды планирую с драйвера для светодиодных лент на 18Вт. На каждый цвет у меня по 36 5мм светодиодов.

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

Полный размер

Драйвер для светодиодных лент

Перед Arduino поставлю понижающий преобразователь на основе LM2596s настроенный на 9В. Переключать режимы хочу радио пультом на 315 МГц, плату приёмника хотелось бы разместить прям на Arduino для уменьшения количества проводов. Светодиоды будут питаться через реле.

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

Полный размер

Передняя часть

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

Полный размер

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

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

Полный размер

Реле. Подключено правильно? На VCC подавать что то нужно? Джампик убирать или оставить?

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

Полный размер

Подключил реле так. Правильно?

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

Полный размер

Приёмник. Разъёмы. Так можно подключать? Задействованы разъёмы А2, А3, А4, А5.

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

Полный размер

Питание к приёмнику.

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

Не знаю можно ли выкладывать сюда код поэтому дам ссылку на файл который нашёл в интернете на гуглодиске — ССЫЛКА.Заранее спасибо тем кто откликнется. Уверен мир не без добрых людей.P.s.

Плиз не ругайте сильно, реально ардуину в первый раз в руки взял.

P.p.s. Если кто переделает скетч просьба скинуть на почту yamaliev.a.f@gmail.com

Источник: https://www.drive2.ru/c/465599744727581258/

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

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

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

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

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

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

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

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

Светофор на arduino своими руками!Первые светофоры

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

Светофор на arduino своими руками!Создатель первого светофора William L Potts

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

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

Сама идея установить четкую последовательность цветов связана с желанием помочь людям, не отличающим оттенки цветов. Они могут ориентироваться не на цвет, а на местоположение светящегося объекта.

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

Все дело в том, что местные жители не хотели видеть национальный цвет Ирландии (зеленый) в самом низу.

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

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

При выходе из строя одного светодиода конструкция в целом продолжает работать.

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

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

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

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

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

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

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

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

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

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

Светофор на arduino своими руками!Модуль светофора для Ардуино

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

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

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

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

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

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

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

Согласно ГОСТу Р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

Источник: https://ArduinoMaster.ru/projects/proekty-svetodiodami-svetofor/

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

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

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

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

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

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

Читайте также:  Простая точилка для бритвы своими руками

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

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

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

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

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

Принципиальная схема.

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

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

int led_red = 2; // пин подключения 2
int led_yellow = 3; // пин подключения 3
int led_green = 4; // пин подключения 4
void setup() {
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
}
void loop() {
digitalWrite(led_red, HIGH);
delay(10000); // Ждем
digitalWrite(led_yellow, HIGH);
delay(2000);// Ждем
digitalWrite(led_green, HIGH);
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
delay(10000);// Ждем
digitalWrite(led_yellow, HIGH);
digitalWrite(led_green, LOW);
delay(2000);// Ждем
digitalWrite(led_yellow, LOW);
}

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

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

void Led (uint8_t pin, byte status)
{
digitalWrite(pin, status);
}

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

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

int led_red = 2; // пин подключения 2
int led_yellow = 3; // пин подключения 3
int led_green = 4; // пин подключения 4
void setup() {
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
}
void loop() {
Led (led_red, HIGH);
delay(10000); // Ждем
Led (led_yellow, HIGH);
delay(2000);// Ждем
Led (led_green, HIGH);
Led (led_red, LOW);
Led (led_yellow, LOW);
delay(10000);// Ждем
Led (led_yellow, HIGH);
Led (led_green, LOW);
delay(2000);// Ждем
Led (led_yellow, LOW);
}
void Led (uint8_t pin, byte status)
{
digitalWrite(pin, status);
}

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

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

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

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

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

Источник: https://portal-pk.ru/news/68-urok-7—-svetofor-na-arduino—svoimi-rukami-pishem-sketch.html

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

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

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

Последовательность работы светодиодов, выполненная на основе Arduino Uno, имитирует четырехстороннее пересечение, т.е.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Скачать скетч светофора .ino
//===============================================================================
// Постоянные
//===============================================================================
const int TRAFFIC_LIGHT_STYLE = 1; // Используется для выбора стиля светофора
const int GREEN_LIGHT = 12; // Время зеленого света в секундах
const int AMBER_LIGHT = 3; // Время янтарного (желтого) света в секундах
const int DEAD_LIGHT = 2; // Время «перекрытия» в секундах
const int RED_AMBER_LIGHT = 1; // Красный/Янтарный свет в секундах

// Выходы:
int greenBusyBunnyLane = 30;
int amberBusyBunnyLane = 32;
int redBusyBunnyLane = 34;

int greenBusyBunnyLaneGnd = 31;
int amberBusyBunnyLaneGnd = 33;
int redBusyBunnyLaneGnd = 35;

int greenLazyTortoiseAve = 48;
int amberLazyTortoiseAve = 50;
int redLazyTortoiseAve = 52;

int greenLazyTortoiseAveGnd = 49;
int amberLazyTortoiseAveGnd = 51;
int redLazyTortoiseAveGnd = 53;

//===============================================================================
// Инициализация
//===============================================================================
void setup()
{
// Установка соответствующих выходов светодиодов для первой улицы
pinMode(greenBusyBunnyLane, OUTPUT);
pinMode(amberBusyBunnyLane, OUTPUT);
pinMode(redBusyBunnyLane, OUTPUT);

pinMode(greenBusyBunnyLaneGnd, OUTPUT);
pinMode(amberBusyBunnyLaneGnd, OUTPUT);
pinMode(redBusyBunnyLaneGnd, OUTPUT);

// Установка соответствующих выходов светодиодов для второй улицы
pinMode(greenLazyTortoiseAve, OUTPUT);
pinMode(amberLazyTortoiseAve, OUTPUT);
pinMode(redLazyTortoiseAve, OUTPUT);

pinMode(greenLazyTortoiseAveGnd, OUTPUT);
pinMode(amberLazyTortoiseAveGnd, OUTPUT);
pinMode(redLazyTortoiseAveGnd, OUTPUT);

digitalWrite(greenBusyBunnyLane,LOW);
digitalWrite(amberBusyBunnyLane,LOW);
digitalWrite(redBusyBunnyLane,LOW);

digitalWrite(greenBusyBunnyLaneGnd,LOW);
digitalWrite(amberBusyBunnyLaneGnd,LOW);
digitalWrite(redBusyBunnyLaneGnd,LOW);

digitalWrite(greenLazyTortoiseAve,LOW);
digitalWrite(amberLazyTortoiseAve,LOW);
digitalWrite(redLazyTortoiseAve,LOW);

digitalWrite(greenLazyTortoiseAveGnd,LOW);
digitalWrite(amberLazyTortoiseAveGnd,LOW);
digitalWrite(redLazyTortoiseAveGnd,LOW);
}
//===============================================================================
// Главный блок
//===============================================================================
void loop()
{

switch (TRAFFIC_LIGHT_STYLE)
{
case 0:
usaTrafficLight();
break;

case 1:
ukTrafficLight();
break;

default:
break;
}
}

void usaTrafficLight()
{

for (int seconds = 0; seconds < GREEN_LIGHT; seconds++) { digitalWrite(greenBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(greenBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < AMBER_LIGHT; seconds++) { digitalWrite(amberBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(amberBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < DEAD_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < (GREEN_LIGHT / 3); seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(greenLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(greenLazyTortoiseAve,LOW); // Lazy Tortoise Ave now goes into amber light. for (int seconds = 0; seconds < AMBER_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(amberLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(amberLazyTortoiseAve,LOW); // Once again, a dead zone for (int seconds = 0; seconds < DEAD_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); } void ukTrafficLight() { for (int seconds = 0; seconds < GREEN_LIGHT; seconds++) { digitalWrite(greenBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(greenBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < AMBER_LIGHT; seconds++) { digitalWrite(amberBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(amberBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < DEAD_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < RED_AMBER_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); digitalWrite(amberLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); digitalWrite(amberLazyTortoiseAve,LOW); for (int seconds = 0; seconds < (GREEN_LIGHT / 3); seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(greenLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(greenLazyTortoiseAve,LOW); for (int seconds = 0; seconds < AMBER_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(amberLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(amberLazyTortoiseAve,LOW); for (int seconds = 0; seconds < DEAD_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); for (int seconds = 0; seconds < RED_AMBER_LIGHT; seconds++) { digitalWrite(redBusyBunnyLane,HIGH); digitalWrite(amberBusyBunnyLane,HIGH); digitalWrite(redLazyTortoiseAve,HIGH); delay(1000); } digitalWrite(redBusyBunnyLane,LOW); digitalWrite(amberBusyBunnyLane,LOW); digitalWrite(redLazyTortoiseAve,LOW); }

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

Источник: https://ArduinoPlus.ru/arduino-svetofor/

Светофоры на Arduino

Подробности Категория: Arduino

Представляю вашему вниманию проект светофоров на плате Arduino. В нем мы управляем 3-мя светодиодами — зеленым, желтым и красным.Данная системы состоит из 2-х световоров. Когда один светофор разрешает движение другой запрещает.

Когда движение запрещено — горит красный цвет, то в этот момент времени начинает моргать индикатор ожидания — маленький красный светодиод.

Проект в целях демонстрации собран на монтажной плате. Питание осуществляется через саму плату.

Внешний вид системы из 2-х светофоров 

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

Каждый светодиод подключен через сопротивление в 470 Ом. Выдержка времени осуществленна через заданные временные интервалы в массиве duration.

Подключение светофоров осуществляеться к следующим выводам:

  • первый к выводам  2,3,4,5;
  • второй к выводам 6,7,8,9.

Программа светофора для Arduino

Код не такой уж и сложный, ели немного посмотреть и подумать то можно понять как он работает.

// Source: http://www.electroschematics.com/10178/arduino-traffic-light-system/
int trafficLights1[] = {2,3,4,5}; // red, yellow, green, pedestrians led pins
int trafficLights2[] = {6,7,8,9}; // red, yellow, green, pedestrians led pins
int situations = 4;
int duration[] = {8000,3000,10000,3000}; // duration of each situation
long previousCars = 0;
long previousPeds = 0;
long interval = 300; //blink interval for pedestrians
int ledState = LOW;
int state;
int i = 0;

void setup()
{
for(int i = 0; i < 4; i++) { pinMode(trafficLights1[i], OUTPUT); pinMode(trafficLights2[i], OUTPUT); } Serial.begin(9600); } void loop() { unsigned long currentMillis = millis(); if(currentMillis - previousCars < duration[i]) { situation(i); } else { previousCars = currentMillis; if(i >= situations) {
i = 0;
} else {
i++;
}
}
}

void activateTrafficLight1(String lights, int pedestrians)
{
for(int x = 0; x < 3; x++) { if(lights[x] == '0') state = LOW; if(lights[x] == '1') state = HIGH; digitalWrite(trafficLights1[x], state); } if(pedestrians == 1) { blinkPed(trafficLights1[3]); } else { digitalWrite(trafficLights1[3], LOW); } } void activateTrafficLight2(String lights, int pedestrians) { for(int x = 0; x < 3; x++) { if(lights[x] == '0') state = LOW; if(lights[x] == '1') state = HIGH; digitalWrite(trafficLights2[x], state); } if(pedestrians == 1) { blinkPed(trafficLights2[3]); } else { digitalWrite(trafficLights2[3], LOW); } } void situation(int i) { switch(i){ case 0: activateTrafficLight1("100",1); // 100 means red ON, yellow OFF, green OFF activateTrafficLight2("001",0); // the second parameter is for pedestrians break; // 1 is ON and 0 is OFF case 1: activateTrafficLight1("110",0); // 110: red ON, yellow ON, green OFF activateTrafficLight2("010",0); break; case 2: activateTrafficLight1("001",0); activateTrafficLight2("100",1); break; case 3: activateTrafficLight1("010",0); activateTrafficLight2("110",0); break; } }

Читайте также:  Табурет из фанеры своими руками
void blinkPed(int ped) { unsigned long currentMillis = millis(); if(currentMillis - previousPeds > interval) {
previousPeds = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ped, ledState);
}
}

Видео работы самодельного светофора на Arduino

Источник: https://radio-magic.ru/arduino-projects/127-svetofory-na-arduino

Делаем светофор с Arduino — Блог Ильи Житенёва (БЖ)

Соединяем 13 пин Arduino с длинной ногой зелёного светодиода, а короткую ногу через резистор в 220 [Ом] соединяем с «землёй». Аналогично соединяем жёлтый светодиод через 12 пин и красный через 11 пин. 7 пин через резистор 10 кОм подключим к «земле» и к кнопке.

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

При установке кнопки есть некоторая хитрость — кнопку надо устанавливать на разделительную полосу между двумя половинками брэдборда.

Теперь подключаем кнопку. Тут всё очень просто – кнопка проводит в обоих направлениях, в отличие от различных диодов, поэтому нет никакой разницы, какой из контактов будет соединён с землёй. Соедините один контакт кнопки с портом №7 Arduino  и этот же контакт соедините через резистор в 10 [кОм] с Землёй, а другой с питанием в 5 [В] — рельса со значком +.

ВАЖНО!! Во всех схемах Земля должна быть всегда одна – для всех подключаемых элементов.

Сборка на этом закончена! Приступаем к программированию Arduino!

// Задаём номера портов для светодиодов
int GPin = 13; // Зелёный
int YPin = 12; // Жёлтый
int RPin = 11; // Красный
int switchPin = 7; // Порт кнопки
boolean lastButton = LOW; // Устанавливаем последнее значение кнопки — выключено
boolean currentButton = LOW; // Устанавливаем текущее значение кнопки — включено
boolean ledOn = false; // Состояние светофора: false — выключен (мигает жёлтый), true — включен
boolean yellowOn = LOW; // Мигающий жёлтый.
unsigned long loopTime; // Вспомогающая переменная для цикла
unsigned long currentTime; // Переменная хранящая текущее значение времени

void setup() {
// Устанавливаем 3 порта как выход для светодиодов и один как вход для отслеживания кнопки
pinMode(GPin, OUTPUT);
pinMode(YPin, OUTPUT);
pinMode(RPin, OUTPUT);
pinMode(switchPin, INPUT);
currentTime = millis();
loopTime = currentTime;
}

// Функция для лучшего отрабатывания нажатия на кнопку — ждёт установившегося значения, а затем передаёт его в программу.
boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if(last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}

void loop() {
currentButton = debounce(lastButton);
if(lastButton == LOW && currentButton == HIGH) // При нажатии на кнопку включаемвыключаем светофор
{
ledOn = !ledOn;
}
lastButton = currentButton;
currentTime = millis();

// Цикл действий при выключенном светофоре
if(currentTime >= (loopTime + 500) && ledOn == false)
{
yellowOn = !yellowOn; // Инвертируем значение переменной.
digitalWrite(GPin, LOW);
digitalWrite(YPin, yellowOn);
digitalWrite(RPin, LOW);
loopTime = currentTime;
}

// Цикл действий при включенном светофоре
if(ledOn == true) {
// Горит зелёный
if(currentTime >= loopTime && currentTime < (loopTime + 10000)) { digitalWrite(GPin, HIGH); digitalWrite(YPin, LOW); digitalWrite(RPin, LOW); } // Зелёный начинает мигать if(currentTime >= (loopTime + 10000) && currentTime < (loopTime + 10500)) { digitalWrite(GPin, LOW); } if(currentTime >= (loopTime + 10500) && currentTime < (loopTime + 11000)) { digitalWrite(GPin, HIGH); } if(currentTime >= (loopTime + 11000) && currentTime < (loopTime + 11500)) { digitalWrite(GPin, LOW); } if(currentTime >= (loopTime + 11500) && currentTime < (loopTime + 12000)) { digitalWrite(GPin, HIGH); } if(currentTime >= (loopTime + 12000) && currentTime < (loopTime + 12500)) { digitalWrite(GPin, LOW); } if(currentTime >= (loopTime + 12500) && currentTime < (loopTime + 13000)) { digitalWrite(GPin, HIGH); } if(currentTime >= (loopTime + 13000) && currentTime < (loopTime + 13500)) { digitalWrite(GPin, LOW); } if(currentTime >= (loopTime + 13500) && currentTime < (loopTime + 1400)) { digitalWrite(GPin, HIGH); } if(currentTime >= (loopTime + 14000) && currentTime < (loopTime + 14300)) { digitalWrite(GPin, LOW); } // Загорается жёлтый if(currentTime >= (loopTime + 14300) && currentTime < (loopTime + 17500)) { digitalWrite(YPin, HIGH); } // Загорается красный if(currentTime >= (loopTime + 17500) && currentTime < (loopTime + 27500)) { digitalWrite(YPin, LOW); digitalWrite(RPin, HIGH); } // Загорается красный с жёлтым if(currentTime >= (loopTime + 27500) && currentTime < (loopTime + 30500)) { digitalWrite(YPin, HIGH); } // Загорается зелёный if(currentTime >= (loopTime + 30500)) {
digitalWrite(GPin, HIGH);
digitalWrite(YPin, LOW);
digitalWrite(RPin, LOW);
loopTime = currentTime;
}
}

}

Код достаточно прост. Если светофор выключен, то просто мигает жёлтым, иначе включаем и выключаем определённые светодиоды через определённые промежутки времени.

Конечно, вместо столько сложного метода мы могли бы использовать простую задержку методом delay(), однако в использовании функции delay() есть один очень большой минус, который не должна обладать наша программа.

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

Поэтому мы используем метод millis(), которые возвращает количество миллисекунд, прошедшее с момента запуска приложения, и отсчитываем нужные нам интервалы времени.

Ну что, сохраняем нашу программу (скетч) и загружаем её в Arduino. Смотрим что у нас получилось.

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

Источник: https://zhitenev.ru/delaem-svetofor-s-arduino/

1. Светофор — Блокнот Arduino — Для изучающих Arduino с нуля

В своей работе я использовал Arduino uno. Но это не означает, что нельзя использовать другую плату Arduino. 

Алгоритм работы по изменению цветов представим в табличном виде, где по оси абсцисс откладываем время в секундах:На графике выделим цветом точки, где происходит изменения состояния светодиодов.

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

int RedLed = 13;             // Порт 13, красный светодиодint YelLed = 12;             // Порт 12, желтый светодиодint GrnLed = 11;             // Порт 11, зеленый светодиодint RedTime = 10000;          // Время горения красного сетодиодаint YelTime = 5000;          // Время горения желтого светодиодаint GrnTime = 7000;          // Время горения зеленого светодиода до первого включения желтогоint GrnFlashTime = 1000;      // Время мигания зеленого светодиодаint GrnNumFlash = 3;         // Сколько раз необходимо мигнуть зеленому светодиоду  // Инициализируем порты «Led» как выходные  // Устанавливаем все светодиоды LOW  digitalWrite(RedLed, LOW);  digitalWrite(YelLed, LOW);  digitalWrite(GrnLed, LOW);  // Включаем красный светодиод.  digitalWrite(RedLed, HIGH);              // Включаем желтый светодиод  digitalWrite(YelLed, HIGH);             // Отключаем желтый и красный светодиоды.  digitalWrite(YelLed, LOW);      digitalWrite(RedLed, LOW);     // Включаем зеленый светодиод на GrnTime  digitalWrite(GrnLed, HIGH);             // Мигаем GrnNumFlash аз зеленым с частотой GrnFlashTime  for (int i=GrnNumFlash; i>0; i—)      digitalWrite(GrnLed, LOW);               digitalWrite(GrnLed, HIGH);          // Включаем желтый светодиод и отключаем зеленый   digitalWrite(GrnLed, LOW);   digitalWrite(YelLed, HIGH);             // Отключаем желтый и зеленый светодиоды.  digitalWrite(YelLed, LOW); 

Теперь изменим программу и вместо функции delay() для временных задержек будем использовать функцию millis():

int RedLed = 13;             // Порт 13, красный светодиодint YelLed = 12;             // Порт 12, желтый светодиодint GrnLed = 11;             // Порт 11, зеленый светодиодlong Previous = 0;         // устанавливаем значение Mills() от которого будем считать// установим времена изменения состояний светодиодов (на графике выделены жирным)int Time_0 = 0;              // момент зажигания красного сетодиодаint Time_1 = 10;          // момент зажигания желтого сетодиода (красный горит)int Time_2 = 15;          // момент зажигания зеленого (красный и желтый гасим)int Time_3 = 22;          // гасим зеленыйint Time_4 = 23;          // зажигаем зеленый,int Time_5 = 24;          // гасим зеленыйint Time_6 = 25;          // зажигаем зеленый,int Time_7 = 26;          // гасим зеленыйint Time_8 = 27;          // зажигаем зеленый,int Time_9 = 28;          // момент зажигания желтого сетодиода (зеленый гасим)int Time_10 = 33;         // гасим желтый  // Инициализируем порты «Led» как выходные  // Начальное состояние светодиодов:  digitalWrite(RedLed, HIGH);  digitalWrite(YelLed, LOW);  digitalWrite(GrnLed, LOW);  if (millis() — Previous > 1000)    Previous = millis();        // устанавливаем новое состояние previous         digitalWrite(RedLed, HIGH);         digitalWrite(YelLed, HIGH);         digitalWrite(GrnLed, LOW);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, HIGH);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, LOW);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, HIGH);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, LOW);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, HIGH);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, LOW);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, HIGH);         digitalWrite(RedLed, LOW);         digitalWrite(YelLed, HIGH);         digitalWrite(GrnLed, LOW);         digitalWrite(RedLed, HIGH);         digitalWrite(YelLed, LOW);         digitalWrite(GrnLed, LOW);

Читайте также:  Мощные струбцины канта своими руками

Скачать: Sketch.

В своей работе я использовал Arduino uno. Но это не означает, что нельзя использовать другую плату Arduino. 

Итак, прежде чем приступить к программированию, соберем схему (скачать схему нарисованную во Fritizing):

На схеме видно, что используются 6 светодиодов, подключенных к выходам Arduino «D8, D9, D10, D11, D12, D13» через резисторы, ограничивающие величину пропускаемого через светодиоды тока. Алгоритм работы по изменению цветов представим в табличном виде, где по оси абсцисс откладываем время в секундах:

На графике выделим цветом точки, где происходит изменения состояния светодиодов.

Теперь, когда видим алгоритм работы светофора, изменим предыдущую программу:

int RedLed_1 = 13;             // Порт 13, красный светодиодint YelLed_1 = 12;             // Порт 12, желтый светодиодint GrnLed_1 = 11;             // Порт 11, зеленый светодиодint RedLed_2 = 10;             // Порт 13, красный светодиодint YelLed_2 = 9;             // Порт 12, желтый светодиодint GrnLed_2 = 8;             // Порт 11, зеленый светодиодlong Previous = 0;           // устанавливаем значение Mills() от которого будем считатьint val = 0;                // переменная для переключений// установим времена изменения состояний светодиодов (на графике выделены жирным)  // Инициализируем порты «Led» как выходные  pinMode(RedLed_1, OUTPUT);     pinMode(YelLed_1, OUTPUT);  pinMode(GrnLed_1, OUTPUT);  pinMode(RedLed_2, OUTPUT);     pinMode(YelLed_2, OUTPUT);  pinMode(GrnLed_2, OUTPUT);  // Начальное состояние светодиодов:  digitalWrite(RedLed_1, HIGH);  digitalWrite(YelLed_1, LOW);  digitalWrite(GrnLed_1, LOW);  digitalWrite(RedLed_2, LOW);  digitalWrite(YelLed_2, LOW);  digitalWrite(GrnLed_2, HIGH);  if (millis() — Previous > 1000)    Previous = millis();        // устанавливаем новое состояние previous         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, HIGH);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, HIGH);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, HIGH);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, HIGH);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, HIGH);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, HIGH);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, HIGH);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, HIGH);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, HIGH);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, HIGH);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, LOW);         digitalWrite(YelLed_1, HIGH);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, HIGH);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, HIGH);         digitalWrite(YelLed_2, HIGH);         digitalWrite(GrnLed_2, LOW);         digitalWrite(RedLed_1, HIGH);         digitalWrite(YelLed_1, LOW);         digitalWrite(GrnLed_1, LOW);         digitalWrite(RedLed_2, LOW);         digitalWrite(YelLed_2, LOW);         digitalWrite(GrnLed_2, HIGH);

Скачать: Sketch.

Источник: https://www.sites.google.com/site/firstepelectronic/proekty/svetofor

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

Так как проект является контроллером светофора, схема состоит из множества светодиодов (по сути, 12), поскольку мы применяем светофоры на 4-х стороннем перекрестке. Проект представляет собой простое представление контроллера светофора,  следовательно не используются другие дополнительные компоненты.

Нам нужно три светодиода красного, желтого и зеленого цветов на каждом перекрестке. Пересечение разделено на четыре полосы: Lane1, Lane 2 Lane 3 и Lane 4.

Все светодиоды подключены к цифровым вводам / выводам Arduino UNO через соответствующие токоограничивающие резисторы 1 кОм.

Все соединения выполнены в соответствии с принципиальной схемой. Ниже представлена полная схема подключения.

Для сборки проекта нам потребуется следующие элементы которые можно приобрести на Алиэкспресс (ссылки кликабельны) :

Работа над проектом контроллера светофора

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

В этом проекте с использованием Arduino UNO реализована простая система светофоров для 4-х стороннего пересечения. Хотя это не идеальная реализация для реальных сценариев жизни, она дает представление о процессе, стоящем за системой управления световым сигналом

Целью проекта является реализация простого контроллера светофора с использованием Arduino UNO, где управление трафиком осуществляется в заранее заданной системе синхронизации. Работа над проектом очень проста и объясняется ниже.

Рассмотрим следующий рисунок gif, показывающий цикл операций светофора. Проект также осуществляется таким же образом.

int Lane1[] = {13,12,11}; // Lane 1 Red, Yellow and Green
int Lane2[] = {10,9,8};// Lane 2 Red, Yellow and Green
int Lane3[] = {7,6,5};// Lane 3 Red, Yellow and Green
int Lane4[] = {4,3,2};// Lane 4 Red, Yellow and Green

void setup()
{
for (int i = 0; i < 3; i++) { pinMode(Lane1[i], OUTPUT); pinMode(Lane2[i], OUTPUT); pinMode(Lane3[i], OUTPUT); pinMode(Lane4[i], OUTPUT); } for (int i = 0; i < 3; i++) { digitalWrite(Lane1[i], LOW); digitalWrite(Lane2[i], LOW); digitalWrite(Lane3[i], LOW); digitalWrite(Lane4[i], LOW); } } void loop() { digitalWrite(Lane1[2], HIGH); digitalWrite(Lane3[0], HIGH); digitalWrite(Lane4[0], HIGH); digitalWrite(Lane2[0], HIGH); delay(7000); digitalWrite(Lane1[2], LOW); digitalWrite(Lane3[0], LOW); digitalWrite(Lane1[1], HIGH); digitalWrite(Lane3[1], HIGH); delay(3000); digitalWrite(Lane1[1], LOW); digitalWrite(Lane3[1], LOW); digitalWrite(Lane1[0], HIGH); digitalWrite(Lane3[2], HIGH); delay(7000); digitalWrite(Lane3[2], LOW); digitalWrite(Lane4[0], LOW); digitalWrite(Lane3[1], HIGH); digitalWrite(Lane4[1], HIGH); delay(3000); digitalWrite(Lane3[1], LOW); digitalWrite(Lane4[1], LOW); digitalWrite(Lane3[0], HIGH); digitalWrite(Lane4[2], HIGH); delay(7000); digitalWrite(Lane4[2], LOW); digitalWrite(Lane2[0], LOW); digitalWrite(Lane4[1], HIGH); digitalWrite(Lane2[1], HIGH); delay(3000); digitalWrite(Lane4[1], LOW); digitalWrite(Lane2[1], LOW); digitalWrite(Lane4[0], HIGH); digitalWrite(Lane2[2], HIGH); delay(7000); digitalWrite(Lane1[0], LOW); digitalWrite(Lane2[2], LOW); digitalWrite(Lane1[1], HIGH); digitalWrite(Lane2[1], HIGH); delay(3000); digitalWrite(Lane2[1], LOW); digitalWrite(Lane1[1], LOW); }

Источник: http://www.electronica52.in.ua/proekty-arduino/kontrol-trafika-na-arduino—svetofor-arduino-diy-

Ссылка на основную публикацию
Adblock
detector