Ардуино светофор: Урок 5. Светофор на Arduino UNO. Arduino моделирование в Tinkercad.

Уроки по робототехнике — Урок №2. Светофор на Arduino

Для занятия необходима установленная на компьютерах среда программирования miniBloq и драйвера для Arduino.

Макетные провода папа-папа

от 4 шт 

 

Контроллер Arduino UNO + провод

1 шт

Светодиод Зеленый

1 шт

Беспаечная макетная плата

1 шт

Светодиод Красный

1 шт

Резистор 220 Ом

3 шт

Светодиод Желтый 1 шт      

 

Добрый день, ребята.  

На прошлом занятии мы познакомились с Arduino. Если вы еще этого не сделали, то обязательно перейдите к предыдущему занятию, так будет понятнее.

Сегодня я предлагаю вам собрать свой собственный светофор. Это достаточно просто.

 

Для начала давайте взглянем на схему (Рис.1)

Рис.1. Схема сборки проекта Светофор

 

Обратите внимание, что все светодиоды подключены длинными ножками (анодами)

 к пинам на arduino:

зеленый светодиод подключен в 13 пину,

желтый — к 12 пину,

а красный — к 11 пину.

А короткими ножками (катодами) к резисторам на 220 Ом.

 

Внимание: ни в коем случае нельзя подключать все три светодиода к одному резистору.

 

Начнем сборку

 

Рис.2 Необходимые компоненты

 

Соединяем GND (Минус) на ардуино с синей (минусовой) шиной на макетной плате. (Рис.3)

Возьмите за правило делать так всегда, так работать намного удобнее.

Рис.3

Начнем подключение с зеленого светодиода. Напомню, что подключаем мы его к 13 пину длинной ножкой (Рис.4)

Рис.4 Подключение зеленого светодиода

 

Далее подключим желтый светодиод к 12 пину. (Рис.5)

Рис.5 Подключение желтого светодиода

 

И красный к 11 пину (Рис.6)

Рис.6 Подключение красного светодиода

 

Осталось запрограммировать наше устройство. (Рис.7)

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

Рис.7 Программа «светофор»

 

На этом сборка завершена. Вы молодцы!

Если вы вдруг что-то не поняли, то можете посмотреть видео с этим уроком.

Простой пример светофора — XOD

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

  1. Зеленый — иди
  2. Желтый — остановись, если сможешь
  3. Красный — стой!

Каждое состояние активно в течение некоторого временного интервала, и когда все заканчивается, то начинается с начала и повторяется снова и снова.

Давайте сделаем модель устройства светофора с несколькими электронными частями и 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 может показаться трудным с первого взгляда. Да, это немного сложнее, чем на традиционных императивных языках, но не так сложно, если вы запомните шаблон:

  1. Поймите последовательности состояний
  2. Для каждого состояния создайте патч-ноду
  3. На каждом патче состояния используйте импульсные входы и выходы для входа и выхода из состояния
  4. Создайте соединительный патч, который соединяет все состояния вместе
  5. Определите входной импульс для первого состояния

Проект светофора Arduino — Pi My Life Up

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

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

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

Это руководство даст вам общее представление о подключении схем к Arduino и покажет некоторые основы кодирования.

В видео ниже на этой странице показаны все этапы создания этого крутого светофора.

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

Оборудование

Оборудование, которое я использовал в этом проекте светофора Arduino, указано ниже.

Рекомендуется

Видео

Ниже представлено короткое видео, в котором показаны все этапы сборки и запуска светофора с помощью Arduino.

Более подробная письменная версия руководства находится прямо под видео.

Adblock удаляет видео? Поддержите нас, подписавшись на наш сервис без рекламы.

Схема светофора Arduino

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

  • Контакт 2 подключается к положительному полюсу зеленого светодиода.
  • Контакт 3 Подключается к положительной ножке желтого светодиода.
  • Контакт 4 подключается к плюсовой ножке красного светодиода.
  • Добавьте резистор 100 Ом к каждой из отрицательных ветвей светодиода и подключите его к GND.

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

Код светофора Arduino

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

Во-первых, нам нужно объявить наши переменные, они используются для хранения данных, на которые мы можем ссылаться в нашем коде.

Например, переменная « GREEN » представляет контакт, к которому подключен зеленый светодиод.

Хотя переменная « DELAY_GREEN » представляет собой количество времени в миллисекундах, мы будем задерживать выполнение программы.

Теперь нам нужно настроить контакты так, чтобы они работали как выход, а не как вход. Функция « pinMode » принимает два параметра: номер контакта и режим . (выход или ввод)

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

Теперь для каждого светодиода нам нужно создать функцию. Как видите, функция « green_light() » включит зеленый светодиод, выключив желтый и красный светодиоды.

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

Вы должны всегда тестировать свой код, прежде чем загружать его в Arduino, вы можете сделать это, нажав кнопку подтверждения (Tick). Это позволит вам узнать, есть ли какие-либо ошибки в вашем коде, и позволит вам внести изменения, чтобы он был правильным.

Надеюсь, вам понравился этот проект светофора Arduino, если у вас есть какие-либо вопросы или комментарии, не стесняйтесь оставлять комментарии ниже.

Кодирование 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 , затем устанавливаю для каждого вывода высокий или низкий уровень в соответствии с требованиями для каждого состояния светофора.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *