Съдържание:
- Консумативи
- Стъпка 1: Определете как работи: Пешеходен светофар
- Стъпка 2: Изградете веригата
- Стъпка 3: Създаване на машината на състоянието
- Стъпка 4: Изпълнение на примера
- Стъпка 5: Генериран C ++ код
- Стъпка 6: Вземете примера
Видео: Държавна машина на Arduino - пешеходен светофар: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Здравейте! Ще ви покажа как да програмирате пешеходен светофар за Arduino в C ++ с машина с крайни състояния, като използвате YAKINDU Statechart Tools. Това ще демонстрира силата на държавните машини и може да се използва като план за по -нататъшни проекти.
Консумативи
Нуждаете се само от Arduino, няколко бутона, светодиоди, джъмпер и резистори.
Хардуер
- 2x бутон
- 2x светофари или можете да използвате светодиоди с резистори 220 ома
- 2x 10k Ohm резистори
- Платка
- Скачач
- Arduino Uno/Mega (или всеки друг, който има поне 8 GPIO)
Софтуер
- Инструменти за диаграми на състоянието на YAKINDU
- Eclipse C ++ IDE за Arduino
Стъпка 1: Определете как работи: Пешеходен светофар
Първо трябва да уточним как трябва да работи пешеходният светофар. Опитах се да обобщя точките:
- Използват се два светофара - единият за автомобилите, другият за пешеходците
- Светофарът може да се включи с помощта на бутон
- Пешеходецът може да поиска преминаване на улицата с натискане на бутон
- Изключеният светофар се индикира чрез мигане на двата жълти светодиода
- След включване светофарът изчаква 10 секунди в безопасен режим
- След безопасен режим, колите винаги имат зелена фаза, докато пешеходецът започне заявка
- Искането за преминаване на пешеходци се обозначава с превключване на жълт светодиод
Освен това има някои събития във времето в зависимост от начина на работа на светофара.
Стъпка 2: Изградете веригата
Нека започнем настройката на веригата. В моя пример, както можете да видите на изображението за визуализация, използвах Arduino Mega 2560, но всеки друг Arduino с поне осем GPIO трябва да е добре. Освен това купих някои 5V светофари в Amazon. Просто потърсете светофар Arduino. В противен случай можете просто да използвате шест различни светодиода. Освен това се нуждаете от два бутона за натискане и два 10k Ohm резистора.
Трите леви светодиода се използват за автомобилния трафик и трите десни светодиода за пешеходците, където жълтият може да посочи заявка.
Стъпка 3: Създаване на машината на състоянието
Така че, както можете да видите, има две основни състояния със съставни членове - състояние включено и състояние изключено. Можете да превключвате между двете състояния, като използвате събитието onOff, което е свързано към бутона ON/OFF. В първоначалното състояние, изключено, двата жълти светодиода започват да мигат всяка секунда. След като светофарът е включен, той стартира в Safestate. След 10 секунди типичното поведение на светофара ще бъде обработено. Червеният и жълтият светодиод ще се включат в състояние StreetPrepare и светофарът ще светне в зелено след още 2 секунди. Отсега нататък държавната машина чака събитието pedestrianRequest, което е свързано към втория бутон. След изпращане на събитието заявката ще бъде посочена чрез превключване на жълтия светодиод всяка секунда в състояние PedWating. 7 секунди по -късно светофарът първо ще бъде превключен в жълт, а след това в червен, докато пешеходците получат сигнала за преминаване в състояние на пешеходно зелено. След това PedestrianRed се активира и цикълът се повтаря. Това може да бъде прекъснато само чрез повторно изключване на светофара.
Стъпка 4: Изпълнение на примера
Стъпка 5: Генериран C ++ код
Генерираният C ++ код е класически комутатор за обработка на логиката на машината на състоянието. Това е само кодов фрагмент как изглежда:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); за (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {превключвател (stateConfVector [stateConfVectorPosition]) {случай main_region_on_r1_StreetGreen: {main_region_etr; прекъсване; } случай main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (вярно); прекъсване; } по подразбиране: break; } clearInEvents (); }
Стъпка 6: Вземете примера
Целият пример е готов за компилиране и изпълнение. Той се предлага с инструменти за държавни диаграми на YAKINDU, който е безплатен за некомерсиална употреба. След изтеглянето можете да импортирате примера директно в инструмента:
File -> New -> Example -> YAKINDU Statechart Примери -> Напред -> Светофар (C ++) за Arduino
> ТУК можете да изтеглите YAKINDU Statechart Tools <<
Можете да започнете с 30 -дневен пробен период. След това трябва да получите лиценз, който е безплатен за некомерсиална употреба!
Препоръчано:
Шум светофар - DIY 3D печат: 8 стъпки (със снимки)
Шум светофар - DIY 3D печат: Всички хора искат да работят в тишина и е важно да има добра работна среда. Тишината води до ефективна работа. Направихме този проект, за да постигнем това предложение. Шумовият светофар се състои от „светофар“, който управлява dB
Робот Arduino Otto с държавна машина: 4 стъпки
Arduino Otto Robot With State Machine: Преглед на проекта В този проект искам да ви покажа начин за програмиране на Otto Otto, който е базиран на Arduino DIY робот. Използвайки инструментите за диаграми на състоянието на YAKINDU (безплатни за некомерсиални), можем лесно да използваме състоятелни машини за графично моделиране на поведението
Arduino светофар: 3 стъпки (със снимки)
Arduino светофар: Тази инструкция е получена от: Arduino-Traffic-Light-Simulator Използвах чертежа от тази инструкция, за да създам отделен светофар. Направих следните промени: Отворите за светодиоди са по -малки, за 5 мм светодиоди (вместо 10 мм светодиоди)
Държавна машина и многозадачност на Arduino с SPI разширители: 3 стъпки
Държавна машина и многозадачност на Arduino с SPI разширители: Миналата седмица исках да създам система за пилотни фойерверки с arduino. Имаше нужда от около 64 изхода за контрол на пожарите. Един от начините да направите това е да използвате IC разширители. Така че са налични 2 решения:- I2C разширител, но той се нуждае от инвертор, когато
Arduino светофар: 8 стъпки (със снимки)
Светофар Arduino: Този проект е направен с 5 мм светодиоди и хардуер за монтаж на светодиоди T1-3/4 Clear Standard за по-добра визуализация, и така използвайки 3 светодиода за показване на цветовете му червено, жълто и усилвател; Зелено съответно