Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad.
Сегодня в Arduino уроке рассмотрим излюбленный пример школ робототехники, светофор на Arduino. Реализация светофора на Arduino популярна, благодаря наглядному примеру работы распространённого устройства, который мы встречаем ежедневно. Помимо этого, при реализации алгоритма работы светофора можно использовать как минимальные знания в программировании Ардуино, так и более сложные алгоритмы. Что позволяет реализовать светофор с любыми знаниями в программировании.
Цель урока: Светофор на Arduino UNO.
Познакомиться подробнее с алгоритмом работы устройства, которое мы видим практически ежедневно. А также разобрать несколько вариантов написания программы реализации светофора на Arduino.
Что такое светофор?
Светофор — оптическое устройство, подающее световые сигналы, регулирующие движение автомобильного, железнодорожного, водного и другого транспорта, а также пешеходов на пешеходных переходах.
Наиболее распространены светофоры с сигналами (обычно круглыми) трёх цветов: красного, жёлтого и зелёного. В некоторых странах, в том числе и в России, вместо жёлтого используется оранжевый цвет. Сигналы могут быть расположены как вертикально (при этом красный сигнал всегда располагается сверху, а зелёный — снизу), так и горизонтально (при этом красный сигнал всегда располагается слева, а зелёный — справа). При отсутствии других, специальных светофоров, они регулируют движение всех видов транспортных средств и пешеходов.
В некоторых городах России, Украины и других стран устанавливаются светофоры с увеличенным красным сигналом (300/200/200 mm). Такие светофоры распространены в Санкт-Петербурге, Киеве, Риме и других городах.
Повсеместно распространены основные сигналы светофоров:
- красный сигнал светофора запрещает проезд за стоп-линию (при её отсутствии за светофор),
- жёлтый обязывает сбросить скорость и быть готовым к тому, что светофор через 0,5 — 1 сек переключится на красный,
- зелёный — разрешает движение со скоростью, не превышающей максимальный уровень для данной автотрассы.
Алгоритм смены сигналов светофора на Arduino.
На просторах интернета нашел иллюстрацию отображающую алгоритм работы светофора.
Как видим, светофор должен работать вот по такому алгоритму:
- Светит только красный цвет светофора.
- Не выключая красный сигнал светофора, включаем желтый.
- Выключаем красный и желтый, включаем зеленый.
- Выключаем зеленый сигнал светофора, включаем желтый.
После чего цикл повторяем с красного сигнала светофора на Arduino.
На сайте Портал ПК делал данный урок года 2 назад. После чего мне написали достаточно много комментариев по поводу того, что нужно добавить мигание зеленым сигналом светофора. В данном уроке исправим недоработку и сделаем мигание зеленым сигналом светофора.
Как подключить светодиоды к Arduino UNO?
Схема подключения не очень сложная и для подключения нам понадобится макетная плата, 3 светодиода и 3 резистора наминало 220 Ом. А также Arduino UNO и соединительные провода.
Все соединяем по схеме.
Как собрать схему в Tinkercad смотрите в видео, которое располагается вверху статьи.
Скетч светофора на Arduino UNO.
Реализовать программу светофора на Arduino можно различными способами. Сперва рассмотрим работу светофора по алгоритму, который изображён на картинке выше.
Для этого создадим переменные и инициализируем пины как выход.
Если вы не понимаете, что написано в данных строчках, посмотрите предыдущие Arduino уроки.
В основном цикле loop() можно все реализовать, используя функции digitalWrite() и delay(). В итоге должен получиться вот такой код.
Скетч достаточно простой и без мигания зеленым цветом светофора.
А чтобы заставить мигать зеленый светодиод воспользуемся функцией for(), которую рассматривали в предыдущем уроке: Урок 4. Arduino – цикл for.
Цикл позволяющий мигать зеленым светодиодом будет таким:
При желании данный код можно немного модернизировать. Так как мы изучили булевые переменные в: Урок 3. Два светодиода. Создадим переменную
Цикл выполняется 6 раз, так как при каждом выполнении цикла мы меняем булевую переменную с HIGH на LOW и наоборот. И выполняем либо включение светодиода, либо включение. По этой причине количество раз выполнения цикла увеличивается в 2 раза.
Конечный вариант кода светофора на Arduino будет вот таким:
Загружаем код в Arduino UNO.
Arduino UNO уроки для начинающих можно использовать не только в симуляторе, но и программировать реальную Arduino UNO. Для этого полученный код можно скопировать в Arduino IDE и загрузить в отладочную плату. Подробнее о загрузке кода смотрите в предыдущем уроке.
Понравился Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Урок 7 — Светофор на Arduino своими руками. Пишем скетч используя функции
В данном уроке сделаем самый простой светофор из трех светодиодов . Работать он должен вот по такой схеме.
1. Светит только красный цвет нашего будущего светофора.
2. Не выключая красный сигнал светофора включаем желтый .
3. Выключаем красный и желтый включаем зеленый.
4. Выключаем зеленый сигнал светофора включаем желтый.
После чего цикл повторяем с красного сигнала светофора.
Для урока нам понадобится:
Подключим три LED к плате Arduino UNO . У нас получиться вот такая схема.
Скетч выглядит так
Для управления светодиодами используем функции digitalWrite().
Давайте заменим стандартную функции digitalWrite() на свою функцию Led().
Функция принимает две переменные pin — пин светодиода и status — состояние светодиода HIGH или LOW.
В итоге получим вот такой скетч
Как видно по скетчу код стал больше, а функции используют для уменьшения объема кода и упрощения логики. Но мы на этом простом примере посмотрели что такое функция и как передавать переменные в функции в среде разработки arduino IDE.
Понятие что такое функции и как их объявлять пригодиться нам в следующем уроке.
Ест вопросы смотрите видео там подробно описываю программу светофора на Arduino.
Следующий урок: Светофор из 3 светодиодов для машин и 2 для пешеходов на Arduino
Если у вас чего то нет для выполнения данного урока, Вы можете посмотреть в каталоге. Там собранные комплектующими от проверенных продавцов по самым низким ценам.
Понравилась статья? Поделитесь ею с друзьями:
Эксперимент № 4. Светофор на Ардуино
Вступление
Становится уже интереснее. Давайте соберем модель светофора!
В этом эксперименте не будет новых знаний по Ардуино, зато мы изучим пару новых фишек программирования.
Давайте решим как должен работать наш светофор:
- Предположим, сначала горит зеленый.
- Затем, когда его время истекает, он начинает мигать; предположим, что с интервалом в 1 сек. 3 раза.
- Потом ненадолго зажигается желтый (1сек).
- И включается красный.
- Спустя несколько секунд цикл повторяется
Необходимые компоненты
- 3 LED M5: красный, зеленый и желтый
- 3 резистора на 220R
Схема
Соберем вот эту схему:
Схема сборки светофора на ардуино
Сборка аналогична опыту 2, но тут у нас уже 3 светодиода, и мы задействуем 3 цифровых порта. Каждый светодиод должен быть защищен своим резистором 220 Ом.
Обратите внимание на полярность светодиода: длинная ножка – это плюс, который подключается к цифрому порту, а короткая ножка соединяется с массой (GND).
Сопротивление ставится в разрыв цепи, все равно с какой стороны светодиода – плюса или земли. На схеме сопротивление поставлено со стороны земли (GND).
Вы можете использовать любые цифровые пины ардуино от 2 до 12. Сделайте это как вам удобней, но не забудьте скорректировать номера пинов в скетче.
Скетч
Наш первый скетч выглядит вот так:
Результат
Светофор горит как задумано:
Модель светофора на ардуино.
Объяснение
В скетче даны подробные комментария.
Обратите внимание, что, согласно лучших практик, все параметры приложения, сразу вынесены в глобальные константы в начале скетча. Всегда старайтесь выносить все параметры в глобальные константы в начале скетча. Это облегчит модернизацию и настройку и в дальнейшем.
Для простоты настройки и тестирования светофора, введен мультипликатор, коэффициент, с помощью которого можно изменять скорость работы светофора:
Цикл for
В скетче мы встретили новое ключевое слово языка C/С++ – for, с помощью которого нужная подпрограмма выполняется циклически заданное число раз. Рассмотрим ее пример:
i – это переменная, которая хранит номер текущего цикла. Назовем ее счетчиком. Счетчик может начинаться с любого числа. В данном случае он равен 0.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Делаем светофор с Arduino
В продолжение курса по обучению работы с микроконтроллером Arduino собирём трёх-цветный светофор с несколькими режимами работы. Научимся управлять сразу несколькими светодиодами, а также реализуем задержку в неблокирующем режиме (без использования функции delay).
В продолжение нашего знакомства с Arduino сегодня мы рассмотрим следующий простейший пример – светофор, какой мы видим каждый день на дорогах, который будет включаться, и выключаться по нажатию кнопки.
Необходимые компоненты
- 3 светодиода (зелёный, жёлтый и красный)
- Push-кнопка
- 3 резистора на 220 [Ом]
- Резистор на 10 [кОм]
Сбор схемы
Соединяем 13 пин Arduino с длинной ногой зелёного светодиода, а короткую ногу через резистор в 220 [Ом] соединяем с “землёй”. Аналогично соединяем жёлтый светодиод через 12 пин и красный через 11 пин. 7 пин через резистор 10 кОм подключим к “земле” и к кнопке.
Схема, необходимая для работы светофора собрана, теперь необходимо подключить кнопку, для управления им.
При установке кнопки есть некоторая хитрость – кнопку надо устанавливать на разделительную полосу между двумя половинками брэдборда.
Теперь подключаем кнопку. Тут всё очень просто – кнопка проводит в обоих направлениях, в отличие от различных диодов, поэтому нет никакой разницы, какой из контактов будет соединён с землёй. Соедините один контакт кнопки с портом №7 Arduino и этот же контакт соедините через резистор в 10 [кОм] с Землёй, а другой с питанием в 5 [В] – рельса со значком +.
ВАЖНО!! Во всех схемах Земля должна быть всегда одна – для всех подключаемых элементов.
Сборка на этом закончена! Приступаем к программированию Arduino!
Программируем Arduino
Код достаточно прост. Если светофор выключен, то просто мигает жёлтым, иначе включаем и выключаем определённые светодиоды через определённые промежутки времени.
Конечно, вместо столько сложного метода мы могли бы использовать простую задержку методом delay(), однако в использовании функции delay() есть один очень большой минус, который не должна обладать наша программа. Во время паузы – процессор не реагирует на другие операции, таким образом, во время задержки, например, на горение красного светодиода, сколько кнопку не нажимай – светофор не выключиться. Чтобы выключить светофор – вам придётся попадать по кнопке в тот момент, когда изменяется состояние светодиода, что, согласитесь, очень неудобно. Поэтому мы используем метод millis(), которые возвращает количество миллисекунд, прошедшее с момента запуска приложения, и отсчитываем нужные нам интервалы времени.
Ну что, сохраняем нашу программу (скетч) и загружаем её в Arduino. Смотрим что у нас получилось.
Задавайте любые, интересующие Вас, вопросы, а я отвечу на них в комментариях к этому посту. До скорых встреч!
Урок 6. Arduino светофор для машин и пешеходов.
В планах писать еще один урок про светофоры на Arduino не было. Но в группе Facebook написали, что данный светофор реализован не совсем правильно, нужно как минимум сделать секцию для пешеходов. В дальнейшем есть планы снять урок про Arduino светофор для машин и пешеходов со звуковым уведомлением и кнопкой. Но на данном этапе это большой скачок вперед и с теми знаниями, которые вы получили из предыдущих уроков, сделать подобный светофор не получится. Поэтому сделал простой вариант Arduino светофора для машин и пешеходов.
Цель урока: Arduino светофор для машин и пешеходов.
Закрепить полученные знания в предыдущих уроках, и повторить работу с циклом for() и булевыми переменными.
Светофор для пешеходов.
Такие светофоры регулируют движение пешеходов через пешеходный переход. Как правило, он имеет два вида сигнала: разрешающий и запрещающий. Обычно для этой цели используют соответственно зелёный и красный свет. Сами сигналы имеют различную форму. Чаще всего используют сигналы в виде силуэта человека: красный — стоящего, зелёный — идущего. В 1970-е годы в городах СССР использовались пешеходные светофоры иного вида — прямоугольной формы; с красным сигналом в виде надписи «стойте» и зелёным в виде надписи «идите» (такие светофоры показывают крупным планом в фильме Следствие ведут ЗнаТоКи. Несчастный случай).
Современные светофоры для пешеходов дополнительно оборудуют также звуковыми сигналами, предназначенными для слепых пешеходов, а иногда и табло обратного отсчёта времени (впервые появились во Франции в 1998 г.).
Алгоритм работы светофора для машин и пешеходов.
Алгоритм работы одного светофора найти в интернет можно. Но вот как взаимодействуют 2 светофора: для машин и для пешеходов, данной информации нет. В группе на facebook мне скинули вот такую иллюстрацию.
Но тут нет информации о мигании зеленого цвета и прочих этапах взаимодействия автомобильного и пешеходного светофоров. Скорее всего, данную информацию можно найти в технической документации по светофорам, но у нас урок по программированию Arduino и заморачиваться поисками тонкостей работы светофора я не стал. Прошу отнестись с пониманием, если что-то работает не так как нужно. А если у вас есть информация, которая позволит дополнить или подправить урок, пишите в комментариях.
Алгоритм работы трех секционного светофора для машин останется без изменений. К режиму работы добавим работу двухсекционного светофора для пешеходов.
Схема подключения Arduino светофора для машин и пешеходов.
Схему подключения возьмём из Урока 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad. И добавим 2 светодиода, которые будут имитировать работу светофора для пешеходов.
В итоге схема подключения Arduino светофора для машин и пешеходов примет вид.
Скетч Arduino светофора для машин и пешеходов.
За основу возьмём код из 5 урока. Если вы не смотрели данный урок, рекомендую ознакомиться с ним прежде, чем приступать к данному уроку.
Добавим необходимую информацию, чтобы инициализировать пины подключения светофора для пешеходов. Светодиоды подключены к 5 и 6 пинам, соответственно нужно добавить.
К алгоритму работы трехсекционного светофора добавим работу светофора для пешеходов. Для этого алгоритм менять не придётся. Достаточно прописать в нужных местах включение и выключение сигналов светофора для пешеходов.
Каждую строчку, которую добавил в код, расписывать не буду, об этом подробно рассказываю в видео. Для более правильной работы нужно добавить мигание зеленым цветом светофора для пешеходов. Поэтому добавим цикл по аналогии работы светофора для машин. Для этого нужно создать дополнительную переменную:
И сам цикл мигания светодиодом.
В итоге у нас получится вот такой код.
Как видим, код Arduino светофора для машин и пешеходов получился не многим сложнее управления одним светофором для машин.
Загружаем код Arduino светофора для машин и пешеходов в Arduino UNO.
Arduino UNO уроки для начинающих можно использовать не только в симуляторе, но и программировать реальную Arduino UNO. Для этого полученный код можно скопировать в Arduino IDE и загрузить в отладочную плату. Подробнее о загрузке кода смотрите в предыдущем уроке.
Понравился Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!