Простой пример светофора — XOD
Светофор — хороший пример устройства, которое выполняет свою работу последовательно. В простейшей форме светофор имеет три состояния:
- Зеленый — иди
- Желтый — остановись, если сможешь
- Красный — стой!
Каждое состояние активно в течение некоторого временного интервала, и когда все заканчивается, то начинается с начала и повторяется снова и снова.
Давайте сделаем модель устройства светофора с несколькими электронными частями и XOD.
Схема
Обзор структуры программы
Создайте новый проект в XOD и назовите его что-то вроде этого my-traffic-light
. Теперь у вас есть программа с одним патчем main
. Что дальше?
У нас есть законченый концепт, который мы собираемся реализовать. Есть несколько способов это сделать. Рассмотрим один из них. Основная идея состоит в том, чтобы иметь одну патч-ноду для каждого состояния и соединительный (общий) патч, который будет связывать все ноды патча вместе.
state-green
state-yellow
state-red
main
— соединительный патч
Мы планируем (a) создать наброски для всех патчей с состояниями (state), (b) создать основной патч, и © после этого завершить патчи с состояниями (state). Вы можете делать все наоборот, если для Вас это имеет больше смысла.
У нас уже есть main
, поэтому создайте патчи состояний. Нажмите “File → New Patch” (или Ctrl + N) и введите новое имя патча. Повторите три раза.
Примечание:
Хотя именование патчей состояния с помощью префикса state-
не обязательно,
но это будет неплохой идеей и упростит понимание.
Теперь нам нужен механизм, позволяющий патч-нодам общаться друг с другом. Общая идия заключается в том, чтобы добавить импульсный вход на патчах состояний, чтобы начать это состояние, и добавить импульсные выходы, чтобы уведомить о завершении состояния.
Добавьте пару xod/patch-nodes/input-pulse
и xod/patch-nodes/output-pulse
каждого патча состояния:
Теперь каждое из наших состояний имеет вход и выход. Мы можем подключить их в цепочке, так что, когда одно состояние завершает работу, оно дает контроль над следующим состоянием. Давайте сделаем это на main
:
Мы дали более короткие названия нашим нодам: “Green,” “Yellow,” и “Red”, чтобы текст мог соответствовать ширине.
Приятно, не так ли? Вы видите, как устройство должно работать графически.
Выполнение патчей состояния
Хорошо, у нас есть шаблон патча состояния (state), давайте наполним его. Перед тем, как это сделать, Вы ответите на несколько вопросов.
- Что нужно сделать в state?
- Когда он должен выйти?
- Что он должен делать прямо перед выходом?
В нашем случае, когда мы входим в состояние (state), он должен включить соответствующий светодиод. Затем он должен подождать несколько секунд, выключить светодиод и выйти. Довольно просто. Сделайте это для
state-green
:
Установите соответствующие значения для led
’ пина (установим значение 2-го порта) и значение пина T
ноды delay
(установим 3 секунды, отлично подходит для нашего эксперимента).
Мы сделали зеленый. А как же желтый и красный? Просто скопируйте патч state-yellow
и state-red
. Не забудьте ввести PORT
и T
значения. Используйте копировать / вставить, чтобы сделать это быстро.
Примечание Умный xoder увидит шаблон и избежит дублирования, создав патч-ноду со всей логикой, вставленной внутри. И он будет прав, но ради краткости урока мы сделали иначе.
Выполнение последовательности
Мы почти закончили. Осталось только запустить выполнение. Посмотрите еще main
:
Хотя состояния правильно привязаны, ничего не привязано к включению в первоначальное состояние (т.е.state-green
). Мы хотим, чтобы наш светофор начинал работу сразу, когда устройство включено. Таким образом, импульс от
boot
ноды является лучшим выбором:
Наконец, загрузите программу на свою плату и посмотрите, как она себя ведёт.
Ого, это работает! Почти. Как только красное состояние завершается, светофор ничего не делает. Давайте исправим это.
Создание цикла
Устройство приостанавливается после последнего состояния, потому что ничто не возвращает его обратно в первоначальное состояние. Мы могли бы связать последний DONE
импульс состояния с первым SET
импульсом состояния, чтобы завершить цикл, но, к сожалению, XOD не позволяет этого сделать.
XOD запрещает циклы в графике программы, чтобы избежать возможных взаимоблокировок. В нашем конкретном сценарии невозможны взаимоблокировки, потому что мы используем delay
ноды, но XOD пока недостаточно умен, чтобы понять это.
К счастью, так называемые “defer nodes” (отложенные ноды) здесь помогают нам. Они могут сломать любой цикл и сказать XOD: “Эй, я тот момент, когда ты можешь перевести дух, если настал тупик”.
Примечание Вы можете спросить, почему XOD не добавляет отложенную ноду на каждую ссылку. Это возможно, но при этом будет возникать больше проблем, чем решений. Во-первых, исполняемая модель будет разбита, чтобы транзакции перестали быть атомарными. Во-вторых, каждая отложенная нода должна хранить несколько байтов данных, которые потребляют драгоценное ОЗУ. Чтобы избежать проблем, вы вынуждены размещать их вручную.
Мы имеем дело с импульсами, поэтому мы будем использовать defer-pulse
ноды для разрыва цикла.
Упс. Входному пину state-green
ноды не разрешено иметь линки из boot
и defer-pulse
одновременно. Но мы можем легко решить это, добавив ноду any
:
Ура! Отлично сработано. Загрузите программу и посмотрите, как она работает. Поиграйтесь со значениями тайм-аута, попробуйте запустить последовательность из другого состояния, добавьте еще три светодиода, чтобы сформировать дополнительный светофор.
Результат
Если у вас возникли проблемы с попыткой повторить руководство, загрузите готовый проект и откройте его в среде IDE.
Вывод
Выполнение вещей последовательно в XOD может показаться трудным с первого взгляда. Да, это немного сложнее, чем на традиционных императивных языках, но не так сложно, если вы запомните шаблон:
- Поймите последовательности состояний
- Для каждого состояния создайте патч-ноду
- На каждом патче состояния используйте импульсные входы и выходы для входа и выхода из состояния
- Создайте соединительный патч, который соединяет все состояния вместе
- Определите входной импульс для первого состояния
Программирование светофора
Войдите , пожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Войти Регистрация. Я хочу показать, как пишется программа для управления технологическим оборудованием на ПЛК. Выбранный мной для данной задачи Quantum является самым мощным и дорогим ПЛК данного производителя.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:
Прайс-листы, цены:
Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам.
Содержание:
- Воркшоп «Основы электроники и программирование Arduino. Создание „умного“ светофора»
- Практическая работа № 14 «Светофор»
- Светодиодные светофоры в плоском корпусе
- IZOLAB на iForum 2016
- Светофор на Ардуино
- CODESYS форум
- Светодиодные светофоры в плоском корпусе
- Презентация по информатике Создание модели дорожного светофора.
Программирование микроконтроллера
- Потрогать информатику руками. Часть 2
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Программирование микроконтроллеров AVR. Светофор на ATmega8
Воркшоп «Основы электроники и программирование Arduino. Создание „умного“ светофора»
Мне было задано написать программу с двумя светофорами: пешеходный светофор 2 светодиода — красный и зелёный и светофор для транспорта 3 светодиода — красный,жёлтый и зелёный. Когда на светофоре для транспорта горит красный светодиод, на светофоре для пешеходов зажигается зелёный светодиод.
Когда на светофоре для транспорта горит зелёный светодиод, на светофоре для пешеходов зажигается красный светодиод. Нарисуйте на бумажке алгоритм, а после переведите его в нужные вам операторы.
И где кстати избитый до полусмерти код? Кстати, задача про светофор очень хорошо разложена вот здесь со стр. Покажи в чем у тебя проблема — поможем. Мне тоже вот светофор понадобился. Вчера час бился и сегодня тоже час. Светофор понадобился на макет ЖД. Точней много светофоров, штук 5 для начала, а затем как пойдет.
Потому их на 74HC вешать решено. Не буду расказывать как пилил, сверлил, паял и клеил. В светофоре установлено 2 светодиода, каждый из которых светит красным или зеленым в зависимости от полярности. Изначально предполагалось только простенькое: нижний красный или верхний зеленый. Пока для 1 светофора, остальные еще не готовы. Но код для них легко адаптировать. Не факт что проект будет управлятся атмеловским контроллером, скорей всего перейду на esp, потому не сильно с оптимизацией заиорачивался.
Синие уже купил. Но пока ставить не буду. На ЖД они для маневровых локомотивов и как правило в маленьких светофорах. Это пока не актуально, пока делаю мачтовые светофоры. Вот два желтых я делаю, и два желтых один из которых моргает тоже. Но не достоверно. На ЖД для этого светофоры с 4-я секциями две из которых желтые. Ну не умеют они цвет свечения секции менять А я умею, но это не достоверно. Надеюсь ЖД перейдет на светодиодные светофоры с сменой цвета секции ; Я уже перешел.
Кстати, к холивару о формировании временных интервалы, как правильно: прибавлять к старому времени константу или заменять старое время на полученое из миллис. У меня в коде заменялось. Но через полчасика работы скетча моменты мигания и моменты смены режима свечения заметно расползлись по времени.
В результате полезли артефакты типа очень быстрого промигивания при смене режима. Заменил на прибавление константы к старому времени. Теперь все ок. Что такое Ардуино? Войдите или зарегистрируйтесь , чтобы получить возможность отправлять комментарии 14 ответов [ Последнее сообщение ]. Зарегистрирован: Доброго времени суток! В свою очередь, светофор для пешеходов работает так: Когда на светофоре для транспорта горит красный светодиод, на светофоре для пешеходов зажигается зелёный светодиод.
Войдите или зарегистрируйтесь , чтобы получить возможность отправлять комментарии. Клапауций LDruyan пишет:. ЕвгенийП пишет:. Logik пишет:. А ещё бывает молочно-белый и два жёлтых :. Электропочта для связи:.
Практическая работа № 14 «Светофор»
Светодиодный транспортный светофор совместим с любым дорожным контроллером, соответствующим требованиям ГОСТ Светодиодный транспортный светофор совмещенный с табло обратного отсчета времени красного и зеленого сигнала, предназначенным для отображения желтого сигнала светофора, а так же индикации оставшегося времени свечения зеленого и красного сигналов светофора для повышения безопасности дорожного движения, за счет передачи дополнительной информации о разрешающем и запрещающем сигнале транспортного светофора. Светофор совместим с любым дорожным контроллером, соответствующим требованиям ГОСТ После подключения светофора и подачи красного и зеленого сигналов происходит обучение табло обратного отсчета времени ТООВ в течение 2-х циклов работы светофора. По окончании обучения одновременно с зеленым и соответственно с красным сигналом светофора на ТООВ отображается оставшееся время действия зеленого или красного сигналов светофора соответственно. Параллельно измеряется новое время действия сигналов светофора.
Так уже было несколько вариантов светофоров на ПР. . от Гадир в разделе ПЛК (среда программирования CoDeSys V). Ответов: 6.
Светодиодные светофоры в плоском корпусе
C г. Дистель, Д. Кобак, А. Санкт-Петербургский государственный институт точной механики и оптики технический университет. Отсюда можно скачать полный текст документации в формате pdf кб Отсюда можно скачать приложение 7 кб Исходные тексты 36 кб. Учебный процесс. Шалыто Санкт-Петербургский государственный институт точной механики и оптики технический университет Отсюда можно скачать полный текст документации в формате pdf кб Отсюда можно скачать приложение 7 кб Исходные тексты 36 кб Аннотация Целью настоящей работы является создание программы управления светофором.
IZOLAB на iForum 2016
Войти через. Гарантия возврата денег Возврат за 15 дней. Happyxuan DIY светофор для детей светодиодный Интеллектуальный мини-панель управления Программирование обучающая учебная помощь научная игрушка. С программированием, вы также можете изменить программы для достижения других эффектов. Примечание: Цена указана за 1 комплект.
Автоматический регулировщик дорожного движения под названием светофор, давно стал привычным объектом на городских улицах. Простой алгоритм работы и визуальная наглядность работы данного устройства обусловили его частое использование в качестве объекта моделирования в разнообразных программных приложениях.
Светофор на Ардуино
Андрей Недавно я заинтересовался программированием микроконтроллеров, и для начала остановился на STM Сегодня я хочу познакомиться с библиотекой HAL, собрать на макетной плате небольшую схему и написать управляющую программу. Это работающий макет обычного дорожного светофора. Со светофорами знакомы все, и алгоритм их работы также известен.
CODESYS форум
В первой части статьи см. Да, у черепашек ПервоЛого есть своеобразные органы чувств: датчики. Они позволяют определять:. Возьми в инструментах ключ и, щелкнув им на черепашке, открой ее. На экране появится окно программирования черепашки. На любой вкладке программа действий черепашки записывается в поле ввода команд.
Это работающий макет обычного дорожного светофора. Для программирования используется программа Keil_v5 с библиотекой HAL.
Светодиодные светофоры в плоском корпусе
Светофор — это забавный маленький проект, который может быть завершен менее чем за час. Узнайте, как создать свой собственный — используя Arduino — и как изменить схему для продвинутой модели. Не беспокойтесь, если вы никогда ранее не пользовались Arduino, у нас есть руководство для начинающих. Заметка : Это последняя из серии руководств для начинающих пользователей для Arduino, платформы для создания прототипов электроники с открытым исходным кодом.
Презентация по информатике Создание модели дорожного светофора.

ВИДЕО ПО ТЕМЕ: Не могу написать программу! Что делать! Как начать писать код!
Moderator: Mikhail Shvetsov. Почему SFC именно такой? Beitrag Verfasst: Di Jun 07, am. SFC штука сильная и красивая. Правильную SFC программу легко читать, легко менять, легко обучить сопровождению заказчика.
Мобильный светофор МСGPS предназначен для установки на участках дороги, где проводятся ремонтные работы для регулирования дорожного движения. Данное устройство позволяет разгрузить движение в местах сужения дорожного полотна.
Потрогать информатику руками. Часть 2
Автор: admin , 14 Фев Lazarus , Новости. В этом урока мы продолжим знакомиться с компонентами Lazarus. Смоделировать работу светофора. При запуске проекта панель светофора должна быть пустой. После нажатия на кнопку Пуск лампочки светофора начинают переключатся.
Hello World or First Step установил платформу с оффсайта а дальше? Шаблоны функций 9 Step stepik. Шаблонный класс Array может Многомерные массивы.
Светофор Arduino — это небольшой забавный проект, который вы можете построить менее чем за час. Вот как собрать свой собственный с помощью Arduino и как изменить схему для более продвинутого варианта.
Если вы предпочитаете смотреть это как обучающее видео, мы вам поможем:
Что нужно для сборки контроллера светофора Arduino
Помимо базового Arduino вам понадобятся:
- 1 резистор 10 кОм
- 1 кнопочный переключатель
- 6 резисторов 220 Ом
- Макетная плата
- Соединительные провода
- Красный, желтый и зеленый светодиоды
Для этого проекта подойдет почти любой Arduino, если у него достаточно контактов. Обязательно прочитайте наше руководство по покупке Arduino, если вы не уверены, какая модель вам нужна. Возможно, у вас уже есть эти детали в стартовом комплекте Arduino.
Светофор Arduino: основы
Начнем с малого. Простой, единственный светофор — хорошее место для начала. Вот схема:
Подключите анод (длинная ножка) каждого светодиода к цифровым контактам восемь, девять и десять (через резистор 220 Ом). Подключите катоды (короткая ножка) к земле Arduino.
Код для светофора Arduino
Начните с определения переменных, чтобы вы могли обращаться к источникам света по имени, а не по номеру. Запустите новый проект Arduino и начните со следующих строк:
.Указанный язык: clike не существует'Генерация кода не удалась!!'
Теперь давайте добавим функцию настройки, где вы настроите красный, желтый и зеленый светодиоды как выходы. Поскольку вы создали переменные для представления номеров выводов, теперь вы можете обращаться к контактам по имени:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Функция pinMode настраивает Arduino на использование данного контакта в качестве выхода. Вы должны сделать это, чтобы ваши светодиоды вообще работали. Теперь собственно логика светофора. Вот код, который вам нужен. Добавьте это ниже ваших определений переменных и функции настройки:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Загрузите этот код в Arduino и запустите (убедитесь, что вы выбрали правильную плату и порт в меню Tools > Board и Tools > Port ). У вас должен быть работающий светофор, который меняется каждые 15 секунд, вот так (ускоренный):
Давайте разберем этот код. Функция changeLights выполняет всю тяжелую работу. Это меняет цвет светофора на желтый и красный, а затем обратно на зеленый. Как это называется внутри loop , Arduino будет запускать этот код вечно, каждый раз с 15-секундной паузой.
Функция changeLights состоит из четырех отдельных шагов:
- Зеленый включен, желтый выключен
- Желтый выключен, красный включен
- Желтый включен, красный включен
- Зеленый включен, красный выключен, желтый выключен
Эти четыре шага повторяют процесс, используемый в реальном светофоре. Для каждого шага код очень похож. Соответствующий светодиод включается или выключается с помощью цифровая запись . Это функция Arduino, используемая для установки выходных контактов в состояние HIGH (для включения) или LOW (для выключения).
После включения или отключения необходимых светодиодов задержка заставляет Arduino ждать заданное время. Три секунды в этом случае.
Идем глубже: пешеходный переход Arduino
Теперь, когда вы знаете основы, давайте усовершенствуем их. Добавьте кнопку, чтобы пешеходы могли переключать свет в любое время:
Обратите внимание, что светофор точно такой же, как и в предыдущем примере. Подключите кнопку к цифровому контакту 12. Вы заметите, что к переключателю подключен резистор с высоким сопротивлением 10 кОм, и вам может быть интересно, почему. Это подтягивающий резистор.
Переключатель либо пропускает ток, либо нет. Это кажется достаточно простым, но в логической схеме ток всегда должен течь либо в высоком, либо в низком состоянии (помните, 1 или 0, ВЫСОКИЙ или НИЗКИЙ). Вы можете предположить, что кнопочный переключатель, который на самом деле не нажат, будет в НИЗКОМ состоянии, но на самом деле он называется «плавающим», потому что ток вообще не потребляется.
В этом плавающем состоянии возможны ложные показания, поскольку они колеблются из-за электрических помех. Другими словами, плавающий переключатель не дает надежных показаний ВЫСОКОГО или НИЗКОГО. Подтягивающий резистор удерживает небольшой ток при замыкании ключа, тем самым обеспечивая точное считывание низкого состояния.
В других логических схемах вместо этого вы можете найти подтягивающий резистор, и он работает по тому же принципу, но в обратном порядке, гарантируя, что конкретный логический элемент по умолчанию имеет высокий уровень.
Теперь, в циклической части кода, вместо того, чтобы менять свет каждые 15 секунд, вы будете считывать состояние кнопочного переключателя и менять свет только тогда, когда он активирован.
Код для пешеходного перехода Arduino
Начните с добавления новой переменной для хранения вывода кнопки:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Теперь в функции настройки добавьте новую строку, чтобы объявить переключатель входом. Добавьте линию, чтобы настроить светофор на зеленую сцену. Без этой начальной настройки они будут выключены до первого запуска changeLights .
Указанный язык: clike не существует'Генерация кода не удалась!!'
Вместо этого измените всю функцию цикла на следующую:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Так и должно быть. Вам может быть интересно, почему проверка кнопки происходит дважды ( digitalRead(button) ), разделенных небольшой задержкой. Это разоблачение. Подобно подтягивающему резистору для кнопки, эта простая проверка останавливает код, обнаруживающий незначительные помехи при нажатии кнопки.
При ожидании внутри оператора if в течение 15 секунд светофор не может измениться по крайней мере в течение этого времени. По истечении 15 секунд цикл перезапускается. При каждом перезапуске цикла он снова считывает состояние кнопки, но если она не нажата, , если оператор никогда не активируется, индикаторы никогда не меняются, и программа снова перезапускается.
Вот как это выглядит (ускорено):
Светофор Arduino с соединением
Попробуем более продвинутую модель. Вместо пешеходного перехода измените схему на два светофора:
.Подключите второй светофор к цифровым контактам 11, 12 и 13.
Код для светофора Arduino с соединением
Сначала назначьте новые контакты светофора переменным и настройте их как выходы, как в первом примере:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Теперь обновите свой цикл, чтобы использовать код из первого примера (вместо пешеходного перехода):
Указанный язык: clike не существует'Генерация кода не удалась!!'
Еще раз повторюсь, вся работа выполняется в функции changeLights . Вместо красный > красный и желтый > зеленый , этот код будет чередовать светофоры. Когда один на зеленом, другой на красном. Вот код:
Указанный язык: clike не существует'Генерация кода не удалась!!'
Вот как это выглядит (ускорено):
Светофор Arduino Следующие шаги
На сегодня все. Ваше новое понимание светодиодов и кнопок Arduino применимо ко всем видам различных проектов. Если вы хотите расширить эти светофоры, почему бы не построить четырехстороннюю (или более) развязку с множеством пешеходных переходов и пешеходных светофоров? Вы можете легко запрограммировать множество различных плат Arduino!
Или почему бы не расширить свои новые навыки с помощью более крупного проекта, такого как этот DIY MIDI-контроллер или робот Arduino с Xod? Вы также можете взглянуть на кодирование Arduino с помощью VS Code и PlatformIO.
Изображение предоставлено: androsvector/Shutterstock
Кодирование Arduino: светофоры | simonprickett.dev
Я написал несколько статей, прежде чем использовать светодиоды Low Voltage Labs Traffic Light для Raspberry Pi, но никогда раньше не пробовал это с Arduino. Некоторое время назад я заметил, что они также делают светофоры для Arduino и макетных плат, поэтому я решил попробовать их, используя несколько различных типов плат Arduino, которые у меня были под рукой:0003
- Arduino Uno: идеально подходит для тестирования источников света путем их прямого подключения к разъемам, уже подключенным к Arduino. Эта плата использует порт USB B для питания и подключения данных к Arduino IDE.
- Adafruit Feather Huzzah ESP8266: идеально подходит для использования макетной платы, поскольку на плате есть разъемы в виде ножек, которые прикрепляют все контакты к макетной плате. Эта плата использует порт micro USB для питания и подключения данных к Arduino IDE. Обратите внимание, что вам нужно купить версию платы с прикрепленными разъемами, если вы не хотите припаивать туда свои собственные разъемы.
Как и в случае с различными демонстрационными примерами светофоров, которые я создал с помощью Raspberry Pi и различных языков программирования, я хотел показать, как заставить светофоры отображать схему освещения в Великобритании:
- Красный
- красный + желтый
- Зеленый
- Желтый
- повтор…
Если вам интересно, как запрограммировать светофор для Raspberry Pi, ознакомьтесь с одной или несколькими из этих статей:
- Питон
- Node.
js
- Узел КРАСНЫЙ
- Ява
- С
- Перейти
- Свифт
- Ржавчина
- BASH-скрипты
- .NET/С#
Аппаратная настройка Arduino
Ардуино Уно
Настройка оборудования для Arduino Uno проста… она уже настроена для работы с Arduino IDE, поэтому нет необходимости устанавливать другой загрузчик или что-то еще. К нему также подключены разъемы, поэтому подключение светофоров — это просто их подключение.
Лампы должны быть подключены к заземляющему контакту, за которым следуют три цифровых контакта, которые мы будем использовать в качестве выходов.
Arduino UnoГлядя на приведенную выше схему, мы хотим прикрепить лампочки так, чтобы контакт заземления был соединен с землей, что означает, что красная лампочка будет на 13-м контакте, желтая на 12-м и зеленая на 11-м. Это единственное место на Uno, что эта последовательность контактов происходит.
Adafruit Feather Huzzah ESP8266
Feather Huzzah несколько отличается от Arduino Uno…
- Коллекторы больше похожи на ножки, а не на штекерные разъемы на Uno… поэтому лампочки не будут подключаться к ним напрямую… мы будем использовать макетную плату.
- Расположение контактов отличается от Uno, и нужные нам контакты не расположены рядом друг с другом. Мы решим это, используя перемычки на макетной плате.
- Плата поставляется с интерпретатором Lua, но мы хотим использовать Arduino IDE и написать C, чтобы мы могли поделиться кодом с платой Uno. Для этого нам нужно перепрошить плату, для которой Adafruit предоставляет удобное руководство.
- Это логика 3,3 В, а не 5 В, поэтому мы можем ожидать, что свет будет немного тусклее, чем с Uno. Это также относится и к Raspberry Pi, который тоже 3,3 В.
Вот распиновка для Huzzah, показывающая, где нужны контакты:
Arduino Feather HuzzahВот как мы будем подключать макетную плату, синий прямоугольник здесь показывает, куда вы будете подключать светофоры.
Эскиз макетной платыМы предполагаем, что Feather питается от кабеля micro USB, а не от макетной платы.
Настройка среды разработки Arduino
Нам понадобится Arduino IDE… Я обнаружил, что в Mac OS Catalina мне нужно было получить последнюю бета-версию, чтобы избежать проблем с компиляцией кода в дальнейшем. Это связано с 64-битной природой новых выпусков Mac OS.
Настройка для Arduino Uno
Для Arduino Uno больше ничего не нужно… если вы подключите его к компьютеру с помощью кабеля USB A<->B и выберете «Arduino Uno» в качестве платы и соответствующий порт USB в качестве порта, это все, что вам нужно. делать.
Если ваш компьютер для разработки не работает под управлением Mac OS, вам может потребоваться выполнить другие и/или дополнительные шаги. Их, а также руководство по установке типа платы и порта можно найти на странице «Начало работы с Arduino».
Настройка для Adafruit Huzzah ESP8266
Плата Adafruit требует, чтобы вы загрузили драйвер и получили пакет платы ESP8266 для Arduino IDE. Для этого есть руководство на Adafruit. Вам также понадобится кабель для передачи данных с USB на micro USB, такой же, как вы можете использовать со многими телефонами Android.
Код
Большая часть кода для обеих плат идентична. Там, где он отличается, это номера контактов, используемых для управления светом. Чтобы различать платы во время компиляции, я проверяю, определен ли
ARDUINO_AVR_UNO
, и если да, то использую номера выводов для Uno, в противном случае используются выводы для Huzzah.
#ifdef ARDUINO_AVR_UNO // Ардуино Уно константный байт redLight = 13; константный байт amberLight = 12; константный байт greenLight = 11; #еще // Adafruit Feather Huzzah константный байт redLight = 14; константный байт amberLight = 12; константный байт greenLight = 13; #endif
Остальной код одинаков для обеих плат и работает следующим образом:
- В функции
setup()
, которая запускается один раз при включении платы, я устанавливаю каждый из трех контактов светофора в качестве выходов и устанавливаю их в низкий уровень (выкл.). - В функции
loop()
, которая выполняется непрерывно после вызова единицыsetup()
, я использую бесконечный циклwhile
, затем устанавливаю для каждого контакта высокий или низкий уровень в соответствии с требованиями для каждого состояния светофора.