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

Stap 1: Wat is een eindige-State Machine?


Een eindige toestandsmachine of FSM voor korte, is een machine (op een abstracte manier), die een bepaalde en eindige aantal mogelijke heeft staat van die slechts één actieve tegelijk. De Staten zijn aangesloten via overgangen. Deze overgangen hebben een bepaalde richting en kunnen alleen worden doorgegeven in die richting – denk aan het als een one-way street. Een overgang heeft bovendien bepaalde ingangen en uitgangen. U kunt denk van deze als een aandoening die je vervullen moet voordat u het eenrichtingsverkeer kunt gebruiken, en wanneer u het gebruikt, een signaal wordt gegeven aan de buitenwereld-bijvoorbeeld, hebt u een vergoeding te betalen voordat u de straat gebruiken kunt en vervolgens uw auto wordt geteld.
Een heel eenvoudig voorbeeld van een FSM komt voor in veel huizen: drukken op een knop activeert het licht in het trappenhuis. Na een bepaalde tijd schakelt het licht automatisch uit. U kan dit model als een FSM met twee staten: licht aan, en licht uit. Er is een overgang van de ene staat naar de andere en vice versa, en de voorwaarde is dat de druk op de knop in één richting en die een bepaalde tijd verstreken is in de andere richting. We kunnen dit gedrag in een diagram, de zogenaamde toestandsdiagram model. Neem een kijkje op foto 1.

De gevulde zwarte cirkel markeert het ingangspunt van de toestandsmachine (alles moet ergens beginnen). Dus, als onze machine begint te lopen, het licht is weg. Het blijft als dat, totdat we gebruiken dan een lichtschakelaar – het licht gaat op en gaat uit na 30 seconden. Door de knop te drukken wanneer het lampje al doet niets brandt, en na 30 seconden gaat het lampje uitgaat. Deze FSM beschikt niet over alle uitgangen. Vanuit een traditionele wiskundige perspectief, de Braziliaanse Light On komt overeen met het licht wordt ingeschakeld, maar wanneer we echt beginnen te programmeren van ons systeem, natuurlijk zullen wij moeten toevoegen een soort uitvoer die eigenlijk doet iets-zoals het inschakelen van het licht.

Deze machine staat werkt, maar is het een goed systeem? 30 seconden lang genoeg is? Voor de meeste mensen waarschijnlijk ja, maar de mensen op de 10e verdieping zou niet ons systeem. Ze wellicht langer dan 30 seconden, laten we zeggen moeten ze 40 seconden. Maar ze wachten op de 30 seconden moeten geschiedde en het licht uit te schakelen het licht opnieuw te activeren, en ze zou dan in het midden van een trap. Dus, wat we moeten doen is om de timer opnieuw worden ingesteld wanneer het lampje brandt en de toets opnieuw wordt ingedrukt. Daarvoor zullen we opnieuw onze systeem, model modelleren van het begin van de timer als uitgang van onze overgangen en het toevoegen van een andere overgang, zoals kan worden gezien in foto 2.

Hier ziet u twee dingen:

  • It's perfectly okay voor een overgang naar de staat die het vandaan
  • Een overgang kan een gebeurtenis als een voorwaarde voor die overgang gebeuren hebben evenals toegewezen uitgangen. De informatie die is overgelaten aan de slash is de gebeurtenis, de informatie aan de rechterkant is de output. Gebeurtenissen worden ook beschouwd als inputs voor de machine, en dit heet een Input-Output-automaat.

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