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!

Se Steg
Relaterade Ämnen

En liten te Timer (TTT) maskin för Arduino och ATtiny

TinyTeaTimmer (TTT) är en implementering för ett litet tillbehör som enkelt kan monteras och programmeras med hjälp av en strömbrytare, en knapp, 1 eller 2 lysdioder, en liten servomotor och en Arduino ombord eller en ATTiny processor.Du kan hitta fi...

Papper Man: en maskin skapad av Arduino och NFC.

Papper är en maskin som består av Arduino, NFC sköld, termoskrivare och en pappersmodell skal – Iron Man.Du kan direkt skickade meddelanden från din mobil till papper man tack vare NFC skölden, och papper man ska spotta ut av utskrift med termisk skr...

Arduino ändlig tillståndsmaskin och parallellbearbetning

En ändlig tillståndsmaskin är diagram används för att organisera aktiviteter för att styra flera insdustrial system (produktion, värmare, pump, transportörer...).Alla dessa sytems med stater (förknippas med en "åtgärd", dvs: start, kör, stoppa)...

Enkla självbalanserande Robot med Galileo Gen 2

Efter volontärarbete på den lokala mini Maker Faire, och att få en chans att spela med Intel Galileo Gen 2 Arduino styrelsen, var jag motiverad att hitta ett maker projekt för mig själv. Efter en snabb undersökning av alternativen och mina intressen...

Bop med FPGA ombord

Välkommen till Bop det med FPGA styrelsen Instructable,Projektet arbetar med CPE 133 på Cal Poly, San Luis Obispo. Detta projekt skapades av Ian Nielsen och Omri Nissan. Utanför koder var inblandade på olika platser och nämns i den slutliga rapporten...

DIY Tilt Sensor minne spelet

Hur man bygger en FPGA DIY minne spelet.Team projekt: Minne Blitz. Av: Bit för Bit ProductionsKim LarssonDana CarverMegan VanHumbeckDetta projekt är för våra ECE2220 Digital Logic system kurs vid University of Manitoba. Inspirerad av de handhållna sp...

Nexys3 LED Timer spel

Detta är en handledning för hur man gör timer spel. Timer spelet är inspirerat av den lätta arkadspelet, spelet där ett ljus rör sig längs en sträng av lampor och du försöker stoppa det röda ljuset att vinna ett pris. Detta spel är olika i att när du...

Arduino Mini CNC Plotter-maskin från dvd-enheter

I detta projekt kommer jag visa dig hur man enkelt bygga din egen billiga Arduino Mini CNC Plotter!Detta projekt är en uppdatering från min tidigare cnc, med bättre konstruktion och med mer precision.Jag bestämde mig att göra detta detaljerad guide a...

Hur man gör en Arduino Powered CNC-maskin

Stegvisa instruktioner om hur man bygger en låg kostnad CNC-maskin med en Arduino Uno!Steg 1: Fabricera en bas och x-axeln slädeRoller skate hjul kommer att användas att skapa x-axeln släden. En kombination av 2 in och 1 i stål slangar bildar basen a...

Arduino tända dimmer

Un système qui imite les cyklar du jour.Ett system för dagen ljus simulering med hjälp av RTC.Steg 1: IntroduktionCE-système va permettre d'imiter un spaken de soleil (LV) et un coucher de soleil (CO), une fois par jour. Cet appareil est destiné surt...

Quiz Game Controller med hjälp av "Ljus och ljud Buzzers" och Arduino

fara stil frågesport spel är favoriter för att skapa spänning och pedagogiska instruktioner samtidigt. Lärare, summer camp rådgivare och även industrin pedagoger hitta denna typ av spel för att skapa intresse och engagemang från deltagarna.Tanken bak...

Sallad för livet - Arduino 101 baserad automatiserad Controller för Hydroponics, Aeroponics, kretsloppsodling, Etc. Intellekten Curie

SAMMANFATTNINGEn enhet som kan användas till att styra upp till 4 olika hydroponiska/Aeroponic system på en gång. Enheten kommer att styra komponenter i systemet och meddelande till en LCD-skärm och tillåter användaren att anpassa inställningar via B...

Rube Goldberg bearbetar med maskin

Låt mig förklara maskinen är inte bara ett begrepp utan även nygamla av senaste teknik för att åstadkomma en ny uppgift. I våra kedjereaktion maskin har vi Arduino controller att driva en motor som flyttar ett ljus bredvid en sträng. Ljuset brinner s...

Hemautomation - lägga till reläer till Arduino

Hur du väljer reläer – handlar om makt.När du väljer ett relä för anslutning till din Arduino måste du övervägaen) makt (spänning och ström) vad du vill slå på och av ochb) makt (spänning och ström) krävs för att driva reläet (dvs. att vitalisera rel...

Gasbrännare Controller

jag är en homebrewer, att göra all säd extrahera öl.Jag håller på att automatisera min bryggeri, som jag gör bara för skojs skull, som automation inte är verkligen behövs på en process som tar 5 timmar och har ca tio minuter av verkligt arbete!Min br...

FPGA solpanel Optimizer

Solceller: Maximal irradians upptäcktSolceller konvertera ljus till elektricitet med hjälp av silikon eller några andra halvledarmaterial genom att absorbera fotoner med tillräckligt med energi för att slå elektronerna fria så att de kan flöda som en...

Fofoque-mig: Vox Populi--en motoriserad allmänheten system

Baserat på några tidigare arbete vi har gjort med megafoner i offentliga utrymmen, inbjöds mig och min kompanjon, Radamés Ajna, att delta i en utställning kallad multituden, curerad av Lucas Bambozzi och Andrea Caruso Saturnino.Utställningen byggde p...

Juni 2014 Bulid natt: LittleBits reglaget blinkar

Detta Instructable kommer att bli enklare än de andra littleBits bygganden från H3 Labs för denna bygga natt. Jag bestämde mig att markera Arduino programmering aspekten snarare än fysiska projektet.Det kräver endast några delar:Dator (att ladda skis...

Flera blinkande lysdioder i olika

I denna tutorial ska jag visa dig hur blinka flera lysdioder i olika takt på Arduino-liknande nämnder använder VIPER.Blinkar en LED är känd som "Hej världen av inbäddade enheter"... men med VIPER kan vi göra det roligare. Vi kan blinka många lys...