Finite State maskin på en Arduino (1 / 7 steg)

Steg 1: Vad är en Finite-State maskin?



En finite-state maskin, eller Mikronesien för korta, är en maskin (på ett abstrakt sätt) som har en definierad och begränsad antal möjliga uppger varav endast en är aktiv i taget. Stater är anslutna via övergångar. Dessa övergångar har en viss riktning och kan endast överföras genom att riktning – se det som en enkelriktad gata. En övergång har dessutom vissa ingångar och utgångar. Du kan tänka av dessa som ett villkor som du måste uppfylla innan du kan använda enkelriktat, och när du använder det, ges en signal till omvärlden – till exempel, måste du betala en avgift innan du kan använda gatan och sedan bilen får räknas.
Ett mycket grundläggande exempel på en FSM finns i många hus: trycka på en knapp aktiverar ljuset i trapphuset. Efter en viss tid stängs ljuset av automatiskt. Du kan utforma detta som en Mikronesien med två stater: ljus på, och ljus av. En övergång från en stat till en annan och vice versa, och villkoret är att trycka på knappen i en riktning och som en viss tid har gått åt andra hållet. Vi kan modellera detta beteende i ett aktivitetsdiagram, den så kallade tillstånds. Ta en titt på bild 1.

Den fyllda svarta cirkeln markerar startpunkten för tillståndsdatorn (allt måste börja någonstans). Så, om våra maskinen börjar löpa, ljuset är avstängd. Det kvarstår, tills vi använder en strömbrytare – ljus går på sedan och går bort efter 30 sekunder. Trycka på knappen när den är tänd redan gör ingenting, och efter 30 sekunder, ljuset släcks. Denna FSM har inte alla utgångar. Från en traditionell matematiska perspektiv, staten ljus på är likvärdigt med ljuset att vara påslagen, men när vi börjar verkligen att programmera vårt system, naturligtvis vi måste du lägga till någon form av produktionen som faktiskt gör något – som slår på ljuset.

Denna stat maskin fungerar, men är det ett bra system? Är 30 sekunder lång nog? För de flesta förmodligen Ja, men folket på den 10: e våningen kanske inte gillar vårt system. De kan behöva längre än 30 sekunder, låt oss de behöver säga 40 sekunder. Men de behöver vänta 30 sekunder att passera och ljuset stänga aktivera ljuset igen, och de kunde vara mitt i en trappa då. Så, vad vi behöver göra är att timern att nollställas när ljuset är på och trycker på knappen igen. För det, kommer vi att åter modell vårt system, modellering i början av timern som en utgång av våra övergångar och lägga till en annan övergång, som kan ses i bild 2.

Här kan du se två saker:

  • Det är helt okej för en övergång till gå till staten kom från
  • En övergång kanna har en händelsen som ett villkor för att övergången ska ske samt tilldelade utgångar. Den information som lämnas till ett snedstreck är händelsen, informationen till höger är utdata. Händelser betraktas också ingångar till maskinen, och detta kallas en Input-Output-automat.
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...