Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
Hej! Jag ska visa dig hur du programmerar ett trafikljus för Arduino i C ++ med en slutlig tillståndsmaskin med hjälp av YAKINDU Statechart Tools. Detta kommer att visa kraften hos statliga maskiner och kan användas som en plan för ytterligare projekt.
Tillbehör
Du behöver bara en Arduino, några tryckknappar, lysdioder, bygel och motstånd.
Hårdvara
- 2x tryckknapp
- 2x trafikljus eller så kan du använda lysdioder med 220 Ohm motstånd
- 2x 10k Ohm motstånd
- Bakbord
- Hoppare
- Arduino Uno/Mega (eller någon annan, som fick minst 8 GPIO)
programvara
- YAKINDU Statechart -verktyg
- Eclipse C ++ IDE för Arduino
Steg 1: Definiera hur det fungerar: Trafikljus för fotgängare
Till en början måste vi ange hur trafikljuset för fotgängare ska fungera. Jag har försökt sammanfatta punkterna:
- Två trafikljus används - ett för bilarna, det andra för fotgängarna
- Trafikljus kan tändas med en knapp
- Fotgängare kan begära att korsa gatan genom att trycka på en knapp
- Släckt trafikljus indikeras genom att båda gula lysdioderna blinkar
- Efter att ha tänt väntar trafikljuset i 10 sekunder i säkert läge
- Efter säkert läge har bilar alltid en grön fas tills en fotgängare startar en begäran
- Fotgängares begäran om korsning indikeras av växlande gul lysdiod
Dessutom finns det vissa tidshändelser beroende på hur ett trafikljus fungerar.
Steg 2: Bygg kretsen
Låt oss börja konfigurera kretsen. I mitt exempel, som du kan se på förhandsgranskningsbilden, har jag använt en Arduino Mega 2560, men varannan Arduino med minst åtta GPIO borde vara bra. Dessutom har jag köpt några 5V -trafikljus på Amazon. Sök bara efter Traffic Light Arduino. Annars kan du helt enkelt använda sex olika lysdioder. Dessutom behöver du två tryckknappar och två 10k Ohm motstånd.
De tre vänstra lysdioderna används för biltrafiken och de tre högra lysdioderna för fotgängarna, där den gula kan indikera en begäran.
Steg 3: Skapa State Machine
Så som du kan se finns det två huvudstater med sammansatta medlemmar - state on och state off. Du kan växla mellan båda tillstånden genom att använda händelsen onOff, som är ansluten till ON/OFF -knappen. I utgångsläget, avstängt, börjar båda gula lysdioderna blinka varje sekund. När trafikljuset har tänts startar det i Safestate. Efter 10 sekunder hanteras trafikljusets normala beteende. Den röda och gula lysdioden tänds i StreetPrepare -tillståndet och trafikljuset blir grönt efter 2 sekunder till. Från och med nu väntar statsmaskinen på fotgängarförfrågan, som är ansluten till den andra knappen. Efter att ha skickat händelsen kommer förfrågan att indikeras genom att växla den gula lysdioden varannan sekund i PedWating -tillståndet. 7 sekunder senare byts trafikljuset till gult först och sedan till rött tills fotgängarna får signalen att gå i fotgängargrönt tillstånd. Efter detta aktiveras PedestrianRed och cykeln upprepas. Detta kan bara avbrytas genom att släcka trafikljuset igen.
Steg 4: Kör exemplet
Steg 5: Genererad C ++ - kod
Den genererade C ++-koden är ett klassiskt switch-case för att hantera tillståndsmaskinen. Detta är bara ett kodavsnitt av hur det ser ut:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); för (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_rea (ha sönder; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); ha sönder; } standard: paus; } clearInEvents (); }
Steg 6: Få exemplet
Hela exemplet är redo att kompilera och köra. Den levereras med YAKINDU Statechart Tools, som är gratis för icke-kommersiellt bruk. Efter nedladdning kan du importera exemplet direkt i verktyget:
Arkiv -> Ny -> Exempel -> YAKINDU Statechart Exempel -> Nästa -> Trafikljus (C ++) för Arduino
> HÄR kan du ladda ner YAKINDU Statechart Tools <<
Du kan börja med en 30 dagars provperiod. Efteråt måste du få en licens, som är gratis för icke-kommersiellt bruk!
Rekommenderad:
Gör ditt eget solid state -relä: 4 steg (med bilder)
Skapa ditt eget halvledarrelä: I det här projektet kommer vi att titta på halvledarreläer, ta reda på hur de fungerar och när vi ska använda dem och i slutändan skapa vårt eget DIY Solid State -relä. Låt oss börja
Hur man kontrollerar glödlampan med hjälp av Arduino UNO och Single Channel 5V Solid State Relay Module: 3 steg
Hur man kontrollerar glödlampan genom att använda Arduino UNO och Single Channel 5V Solid State Relay Module: Beskrivning: Jämfört med det traditionella mekaniska reläet, Solid State Relay (SSR) har många fördelar: det har en längre livslängd, med en mycket högre tändning/ avstängd hastighet och inget ljud. Dessutom har den också bättre motståndskraft mot vibrationer och mekanisk
Finite State Machine på en MSP430: 6 steg
Finite State Machine på en MSP430: Jag ska visa dig hur du programmerar en MSP430G2 Launchpad med Finite State Machines (FSM) med YAKINDU Statechart Tools direkt i Texas Instruments Code Composer Studio. Denna handledning innehåller sex steg: Installera YAKINDU Statechart -verktyg som
Arduino Otto Robot Med State Machine: 4 steg
Arduino Otto Robot With State Machine: Projektöversikt I det här projektet vill jag visa dig ett sätt att programmera Otto Robot, som är en Arduino -baserad DIY -robot. Med hjälp av YAKINDU Statechart Tools (gratis för icke-kommersiella) kan vi enkelt använda statliga maskiner för att grafiskt modellera beteendet
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: 8 steg
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: Många sätt att programmera, styra och övervaka ett industrisystem med arduino