Finite State Machine op een Arduino (2 / 7 stap)

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!

Gerelateerde Artikelen

How to Make een Arduino Powered CNC Machine

How to Make een Arduino Powered CNC Machine

Stapsgewijze instructies over het bouwen van een low-cost CNC machine beheerd met behulp van een Arduino Uno!Stap 1: Een basis en een x-as slee fabricerenRoller skate wielen worden gebruikt voor het maken van de slee van de x-as. Een combinatie van 2
YouTube Stats weergeven op een 320 x 240 Pixel LCD-scherm met een Arduino Uno

YouTube Stats weergeven op een 320 x 240 Pixel LCD-scherm met een Arduino Uno

Deze kleine Instructable zal u tonen hoe te een 320 x 240 pixel LCD scherm aangesloten op een Arduino Uno met een schild netwerk ook gebruiken, om te tonen stats voor Youtube-kanalen.Ik heb dit gemaakt als ik wilde om te zien hoeveel abonnees en stan
Hoe een arduino gebaseerde 3-axis CNC machine draad

Hoe een arduino gebaseerde 3-axis CNC machine draad

Ik heb een aantal tutorials over hoe te bouwen van het platform voor een 3-assige CNC freesmachine.  Ik heb niet gezien dat iemand het lastig onderwerp van de elektronica aan te pakken.Hier nu is mijn poging om dit te doen.Stap 1: onderdelenHebt u no
Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

(Opmerking-Dit is mijn 20e instructable! Dank aan iedereen volgende en commenting.on mijn projecten en aan de medewerkers die dit mogelijk maken. Deze site heeft zeker maakte me brengen mijn A game aan de workbench.)De Auduino granulaire synth door P
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
Beheersing van een karakter-LCD met een Arduino

Beheersing van een karakter-LCD met een Arduino

Hallo! Vandaag zal ik introduceren karakter LCD's en laten zien hoe ze op een Arduino aansluiten.Het is allemaal heel eenvoudig en gebruikt slechts 6 PINS met interface!Opmerking: het beeld is niet de mijne en komt uit http://www.micro-examples.com/p
De wijzerplaat van een roterende telefoon aan een Arduino interface

De wijzerplaat van een roterende telefoon aan een Arduino interface

een oude roterende telefoon kan worden gebruikt voor een aantal doeleinden in uw projecten Arduino - het als een roman als invoerapparaat gebruiken, of gebruik van de Arduino interface een roterende telefoon naar uw computer.Dit is een zeer basisgids
Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

In dit instructable zullen we gebruiken een potentiometer op een Arduino Uno om controle van een MIDI-CC in Ableton Live. Een MIDI CC staat voor continue Controller, dat wil zeggen een getal in het bereik van 0 tot 127 inclusieve te moduleren iets me
Bijhouden van uw auto met een Arduino gebaseerde Lojack

Bijhouden van uw auto met een Arduino gebaseerde Lojack

De autodiefstal van de is een echte slepen! Verhoog uw kansen van het herstellen van uw auto door het installeren van deze eenvoudige Arduino gebaseerde tracker in uw auto.Dit project is vrij eenvoudig, en zou een goed project voor een nieuwe Arduino
Het laden van programma's op een Arduino UNO van Atmel Studio 7

Het laden van programma's op een Arduino UNO van Atmel Studio 7

In deze korte Instructable gaan we om te leren hoe om een programma aan de Raad van een Arduino UNO met behulp van Atmel Studio in plaats van de Arduino IDE te laden. Dit is handig wanneer u wilt ontwikkelen een programma met meer vooruitgangseigensc
Online grafieken met niets, maar een Arduino, Ethernet-Shield en Sensor

Online grafieken met niets, maar een Arduino, Ethernet-Shield en Sensor

Tot slot heb ik besloten om enkele van mijn bestaande projecten opgemaakt op instructables. Dit is aangepast van mijn project Super Graphing datalogger.Wat is de Super Graphing Data Logger (SGDL)? Het is een Arduino project dat integreert gegevensreg
Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

na het dragen van mezelf spelen van Wii Boksen, ik kreeg aan het denken zou het niet geweldig als ik zou kunnen dit gebruiken om te controleren mijn robot, (op zoek naar mijn linkerhand).Op zoek rond het internet vond ik een schare van mensen die soo
Hoe maak je een Arduino web Server

Hoe maak je een Arduino web Server

In dit voorbeeld, zal u uw Ethernet-Shield en je Arduino te maken van een eenvoudige webserver gebruiken. Met behulp van de Ethernet-bibliotheek zal uw apparaat hebben de capaciteit om het antwoord van een HTTP-aanvraag met uw Ethernet-shield. De Eth
TL verlichting met een Laser Pointer en een Arduino

TL verlichting met een Laser Pointer en een Arduino

een paar leden van de Alpha één Labs Hackerspace hou niet van de harde licht weggegeven door tl armaturen.  Ze wilden een manier om te kunnen gemakkelijk te controleren de afzonderlijke armaturen, misschien met een laserpointer?Ik heb recht op.  Ik e