Finite State maskin på en Arduino (2 / 7 steg)
Steg 2: Manuellt genomföra Mikronesien på en arduino
När vi vill genomföra detta beteende på Arduino, kan koden se ut så i denna gist. Koden är inget för speciellt, programsatsen switch-fallet bara innehåller ett fall för varje möjligt läge och kontrollerar inuti där om övergången villkoren är uppfyllda. I så fall ändras staten.
Som ni kan se, är koden ganska enkel. Men kan ni tänka er vad som händer när du inte har 2, men 10 eller 100 stater? Detta är inte ovanligt för en verkliga Mikronesien. Koden blir oläslig och kan nå längder av flera tusen rader. Också normalt, vill vi planera Mikronesien på ett grafiskt sätt, eftersom vi behöver för att kunna se vad den faktiskt gör så fort som möjligt. Sedan vi fortfarande behöver den faktiska tillståndsdatorn-kod, och vi måste vara säkra på att vår grafiska design och våra handskrivna koden faktiskt göra samma sak. Detta kan vara en stor fråga.
Tänk på det: för varje stat som våra FSM har vår kod behöver en "case" uttalande, och för varje övergång till andra stater, vi behöver en om eller en case-sats inuti finns. Om vi skulle ha en tillståndsdator där varje stat kan nå alla andra stater (det mest extrema fallet), skulle vår kod växa med Nilsson fyrkant, där n är antalet stater. Så, skulle vi ha 3 fall för 3 stater, med 3 ifs inuti, så koden längden skulle vara proportionell mot 9. När vi har 10 stater som inte är mycket mer, kodlängd skulle stå i proportion till 100, och med 20 stater, koden är redan fyra gånger längre. En grafisk representation av som FSM skulle vara lättare att förstå, och det skulle vara trevligt om vi inte skulle behöva hantera alla dessa switch case uttalanden. Om du är bekant med netlists som beskriver scheman för simulatorer – vill vi inte att utforma scheman med netlists, heller. Så, vad gör vi i stället? Se i nästa steg!