Finite State maskin på en Arduino (1 / 7 steg)
Steg 1: Vad är en Finite-State maskin?
En finite-state maskin, eller Mikronesien för korta, är en maskin (på ett abstrakt sätt) som har en definierad och begränsad antal möjliga uppger varav endast en är aktiv i taget. Stater är anslutna via övergångar. Dessa övergångar har en viss riktning och kan endast överföras genom att riktning – se det som en enkelriktad gata. En övergång har dessutom vissa ingångar och utgångar. Du kan tänka av dessa som ett villkor som du måste uppfylla innan du kan använda enkelriktat, och när du använder det, ges en signal till omvärlden – till exempel, måste du betala en avgift innan du kan använda gatan och sedan bilen får räknas.
Ett mycket grundläggande exempel på en FSM finns i många hus: trycka på en knapp aktiverar ljuset i trapphuset. Efter en viss tid stängs ljuset av automatiskt. Du kan utforma detta som en Mikronesien med två stater: ljus på, och ljus av. En övergång från en stat till en annan och vice versa, och villkoret är att trycka på knappen i en riktning och som en viss tid har gått åt andra hållet. Vi kan modellera detta beteende i ett aktivitetsdiagram, den så kallade tillstånds. Ta en titt på bild 1.
Den fyllda svarta cirkeln markerar startpunkten för tillståndsdatorn (allt måste börja någonstans). Så, om våra maskinen börjar löpa, ljuset är avstängd. Det kvarstår, tills vi använder en strömbrytare – ljus går på sedan och går bort efter 30 sekunder. Trycka på knappen när den är tänd redan gör ingenting, och efter 30 sekunder, ljuset släcks. Denna FSM har inte alla utgångar. Från en traditionell matematiska perspektiv, staten ljus på är likvärdigt med ljuset att vara påslagen, men när vi börjar verkligen att programmera vårt system, naturligtvis vi måste du lägga till någon form av produktionen som faktiskt gör något – som slår på ljuset.
Denna stat maskin fungerar, men är det ett bra system? Är 30 sekunder lång nog? För de flesta förmodligen Ja, men folket på den 10: e våningen kanske inte gillar vårt system. De kan behöva längre än 30 sekunder, låt oss de behöver säga 40 sekunder. Men de behöver vänta 30 sekunder att passera och ljuset stänga aktivera ljuset igen, och de kunde vara mitt i en trappa då. Så, vad vi behöver göra är att timern att nollställas när ljuset är på och trycker på knappen igen. För det, kommer vi att åter modell vårt system, modellering i början av timern som en utgång av våra övergångar och lägga till en annan övergång, som kan ses i bild 2.
Här kan du se två saker:
- Det är helt okej för en övergång till gå till staten kom från
- En övergång kanna har en händelsen som ett villkor för att övergången ska ske samt tilldelade utgångar. Den information som lämnas till ett snedstreck är händelsen, informationen till höger är utdata. Händelser betraktas också ingångar till maskinen, och detta kallas en Input-Output-automat.