Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Definer hvordan det fungerer: Trafikklys for fotgjenger
- Trinn 2: Bygg kretsen
- Trinn 3: Opprette State Machine
- Trinn 4: Kjøre eksemplet
- Trinn 5: Generert C ++ - kode
- Trinn 6: Få eksemplet
Video: State Machine on Arduino - et fotgjengerlys: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Hei! Jeg skal vise deg hvordan du programmerer et trafikklys for fotgjenger for Arduino i C ++ med en endelig datamaskin ved å bruke YAKINDU Statechart Tools. Dette vil demonstrere kraften til statlige maskiner og kan brukes som en plan for videre prosjekter.
Rekvisita
Du trenger bare en Arduino, noen trykknapper, lysdioder, jumper og motstander.
Maskinvare
- 2x trykknapp
- 2x trafikklys eller du kan bruke lysdioder med 220 Ohm motstander
- 2x 10k Ohm motstander
- Brødbrett
- Genser
- Arduino Uno/Mega (eller andre som har minst 8 GPIOer)
Programvare
- YAKINDU Statechart Tools
- Eclipse C ++ IDE for Arduino
Trinn 1: Definer hvordan det fungerer: Trafikklys for fotgjenger
Først må vi spesifisere hvordan fotgjengerlyset skal fungere. Jeg har prøvd å oppsummere punktene:
- To trafikklys brukes - ett for bilene, det andre for fotgjengere
- Trafikklys kan slås på med en knapp
- Fotgjengere kan be om å krysse gaten ved å trykke på en knapp
- Slått av trafikklys indikeres ved å blinke begge gule lysdiodene
- Etter å ha slått på, venter trafikklyset i 10 sekunder i sikker modus
- Etter sikker modus har biler alltid en grønn fase til en fotgjenger starter en forespørsel
- Fotgjengerforespørsel om kryssing er indikert med vekslende gul LED
I tillegg er det noen tidshendelser avhengig av måten et trafikklys fungerer på.
Trinn 2: Bygg kretsen
La oss begynne å sette opp kretsen. I eksempelet mitt, som du kan se på forhåndsvisningsbildet, har jeg brukt en Arduino Mega 2560, men annenhver Arduino med minst åtte GPIO bør være bra. I tillegg har jeg kjøpt noen 5V trafikklys på Amazon. Bare søk etter Traffic Light Arduino. Ellers kan du ganske enkelt bruke seks forskjellige lysdioder. Videre trenger du to trykknapper og to 10k Ohm motstander.
De tre venstre lysdiodene brukes for biltrafikk og de tre høyre lysdiodene for fotgjengere, der den gule kan indikere en forespørsel.
Trinn 3: Opprette State Machine
Så, som du kan se, er det to hovedstater med sammensatte medlemmer - tilstand på og av. Du kan bytte mellom begge tilstandene ved å bruke hendelsen onOff, som er koblet til PÅ/AV -knappen. I utgangstilstanden, av -tilstanden, begynner begge gule lysdiodene å blinke hvert sekund. Når trafikklyset er slått på, starter det i Safestate. Etter 10 sekunder vil den typiske oppførselen til trafikklysene bli håndtert. Den røde og gule LED -lampen slås på i StreetPrepare -tilstanden, og trafikklyset blir grønt etter 2 sekunder til. Fra nå av venter statsmaskinen på fotgjengerforespørselen, som er koblet til den andre knappen. Etter at hendelsen er sendt, vil forespørselen bli indikert ved å veksle den gule LED -en hvert sekund i PedWating -tilstanden. 7 sekunder senere byttes trafikklyset til gult først og deretter til rødt til fotgjengere får signalet om å gå i fotgjengergrønn tilstand. Etter dette aktiveres PedestrianRed og syklusen gjentas. Dette kan bare avbrytes ved å slå av trafikklyset igjen.
Trinn 4: Kjøre eksemplet
Trinn 5: Generert C ++ - kode
Den genererte C ++-koden er en klassisk switch-case for å håndtere logikken til tilstandsmaskinen. Dette er bare en kodebit av hvordan det ser ut:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_rea; gå i stykker; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); gå i stykker; } standard: pause; } clearInEvents (); }
Trinn 6: Få eksemplet
Hele eksemplet er klart til å kompilere og kjøre. Den leveres med YAKINDU Statechart Tools, som er gratis for ikke-kommersiell bruk. Etter nedlasting kan du importere eksemplet direkte i verktøyet:
Fil -> Ny -> Eksempel -> YAKINDU Statechart -eksempler -> Neste -> Trafikklys (C ++) for Arduino
> HER kan du laste ned YAKINDU Statechart Tools <<
Du kan starte med en 30 dagers prøveperiode. Etterpå må du få en lisens, som er gratis for ikke-kommersiell bruk!
Anbefalt:
Lag ditt eget solid state -relé: 4 trinn (med bilder)
Lag ditt eget solid state -relé: I dette prosjektet vil vi se på solid state -reléer, finne ut hvordan de fungerer og når de skal brukes, og til slutt lage vårt eget DIY Solid State -relé. La oss komme i gang
Finite State Machine på en MSP430: 6 trinn
Finite State Machine på en MSP430: Jeg skal vise deg hvordan du programmerer en MSP430G2 Launchpad med Finite State Machines (FSM) ved hjelp av YAKINDU Statechart Tools direkte i Texas Instruments Code Composer Studio. Denne opplæringen inneholder seks trinn: Installere YAKINDU Statechart Tools som
Arduino Otto Robot Med State Machine: 4 trinn
Arduino Otto Robot With State Machine: Project Oversikt I dette prosjektet vil jeg vise deg en måte å programmere Otto Robot, som er en Arduino -basert DIY -robot. Ved å bruke YAKINDU Statechart Tools (gratis for ikke-kommersielle) kan vi enkelt bruke statlige maskiner til å grafisk modellere oppførselen
State Machine og Multitasking på Arduino med SPI -utvidere: 3 trinn
State Machine and Multitasking on Arduino With SPI Expanders: I forrige uke ba jeg om å lage et system for å styre fyrverkeri med en arduino. Den trengte om lag 64 utganger for å kontrollere brannene. En måte å gjøre det på er å bruke IC -utvidere. Så to løsninger er tilgjengelige:- en I2C-ekspander, men den trenger inverter når du
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: 8 trinn
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: Mange måter å programmere, kontrollere og overvåke et industrisystem med arduino