Stap 2: Handmatig implementeren de FSM op een arduino
Wanneer we willen om dit probleem op de Arduino, kan de code er uitzien zoals in deze kern. De code is niets te speciaal, de instructie switch-case gewoon bevat één geval voor elke mogelijke staat en controles binnen daar als de overgang voorwaarden is voldaan. Als dat zo is, wordt de status gewijzigd.
Zoals u zien kunt, is de code heel simpel. Maar kunt u zich voorstellen wat er gebeurt als u niet over 2, maar 10 of 100 Staten beschikt? Dit is niet ongewoon voor een levensechte FSM. De code wordt onleesbaar en lengtes van meerdere duizenden lijnen kan bereiken. Ook, normaal, willen wij de FSM van plan op een grafische manier, omdat we moeten kunnen zien wat het eigenlijk doet zo snel mogelijk. Vervolgens moeten we de werkelijke toestandsmachine-code, en we moeten er zeker van dat onze grafisch ontwerp en onze handgeschreven code eigenlijk hetzelfde doen. Dit kan een groot probleem.
Denk eraan: voor elke staat onze FSM heeft, moet onze code één "case"-statement, en voor elke overgang naar andere Staten, we moeten een als of een case statement binnen is er. Als we een statusmachine waar elke staat elke andere staat (het meest extreme geval hadden) kan bereiken, zou onze code groeien met het kwadraat van n, waarbij n staat voor het aantal staten. Dus, wij hadden 3 gevallen voor 3 Staten, met 3 ifs binnen, dus de lengte van de code zou evenredig tot en met 9. We hebben 10 Staten, die niet veel meer is, de lengte van de code zou evenredig aan 100 als met 20 staten, de code is al vier keer langer. Een grafische weergave van die FSM zou gemakkelijker te begrijpen, en het zou leuk zijn als we niet zouden moeten omgaan met al deze switch case-statements. Als u bekend bent met de netlijst die beschrijven van schema's voor simulatoren-willen wij niet ontwerpen schema's met de netlijst, hetzij. Dus, wat doen we in plaats daarvan? Zien in de volgende stap!