Juni 2014 Bulid natt: LittleBits reglaget blinkar (4 / 4 steg)
Steg 4: Vad skissen gör
Skissen är ganska enkel, men det illustrerar fortfarande flera programmeringsbegrepp.
Första initierar skissen flera variabler som används senare i skissen. Tillsammans med stiften ska vi använda, vi initiera variabeln för minimi- och blink-priser, två till store tidsvärden, och en för om lampan ska vara på eller av.
Eftersom dessa variabler initieras utanför någon funktion, är de i global omfattning. Detta innebär att de kan användas och ändras någonstans i koden och förändringarna som kommer att finnas kvar. Detta kommer att bli viktigt senare.
Nästa är funktionen setup(). Här använder vi pinMode() för att ställa in stiften, en för indata (reglaget) och en för utgång (LED). Då vi läser värdet från skjutreglaget... du behöver inte vänta tills loop() att läsa ett värde som stiftet i ställa in.
Efter setup() kör loop() om och om igen tills power kopplas. Vi inte att initiera alla variabler här eftersom allt vi behöver är redan i global omfattning.
Först får vi aktuell tid genom att ringa millis() och att sätta det i t.
Nästa läser vi värdet av Skjut Dimmer till sldr_val. Jag noterar här att de värden vi får här bör vara 0 till 1023, men Skjut Dimmer kanske inte ger så höga värden.
Nu kontrollerar vi om vi ska göra något. Vi gör detta genom att jämföra tid som förflutit sedan den föregående iterationen av loop() till blink_val. När loop() körs första gången har tidigare tid (l) och blink_val redan ställts in på 0, så detta fortfarande fungerar. Om tillräckligt med tid har gått, är det dags att göra något, så vi går in blocket "om" och börja göra saker.
Vi skickar värdet av den glida Dimmer (som vi bara läsa) till seriell bildskärmen.
Nästa uppdatera vi värdet för blink_val med en bilt i funktion som kallas map() (Läs mer om det på http://arduino.cc/en/Reference/Map). Karta tar en variabel och hantera det ett område till ett annat område. Det första området är vad Skjut Dimmer värdet kan vara, och andra är vad vi vill; Vi har redan initierats gränserna för denna spänner överst i skissen som min_rate och max_rate.
Nu har vi ett uppdaterat värde för blink_rate att jämföra med tiden passerade från denna iteration av loop() till senare.
Nästa steg skriver till stift LED är på, därmed LED på och stänga. Syntaxen som används för detta är mycket kompakt, så jag ska förklara det.
Ett anrop till digitalWrite() tar två argument: PIN-koden och värdet att skriva. Vår första argumentet här är variabeln för LED stift, led_pin. Det andra argumentet är inte ett värde, eller ens en variabel... det är ett uttryck.
Eftersom detta stift är i ett digitalt läge, det kan bara förstå två värden: sant eller falskt. Konstanterna höga och låga är alias sant och falskt, så när du använder hög, du faktiskt passerar sant.
Anyway, tillbaka till våra uttryck. Det är en ternär operatör, som är lite av förkortning för if/else kodblock. Vi har lindade den ternära operatorn inom parentes för tydlighetens skull. De är tyvärr inte dokumenterade i avsnittet Referens för Arduino webbplats, så Läs här.
En ternär operatör består av tre delar. Den första delen är ett annat uttryck som ternär operatör utvärderas. Den följs av ett frågetecken.
Den andra delen är värdet som returneras av en ternär operatör om den första delen utvärderas som sant. Det är följt av ett kolon.
Den tredje delen är värdet som returneras av den ternära operatorn om den första delen inte utvärdera till den äkta (med andra ord, falskt).
Vår första del är våra variabel o, som är den boolean vi definierat överst på skissen. Vår andra del är hög, och vår andra del är låg.
Så om o är sant, hög är skrivet till stift, är annars låg skriven.
Andra programmering veteraner kommer nog säga "men du kan bara passera o direkt och inte bry sig med en ternär", och det är just eftersom o är ett booleskt värde och det kommer att vara falskt (som HIGH är ett alias av) eller falskt (som låg är ett alias av). Jag använde det här för att illustrera vad en ternär operatör gör.
Efter det förbereda vi för framtiden. Vi Invertera o (sant blir falskt, falskt blir sant), uppdatera sedan den föregående tid l till värdet av den nuvarande tiden t.
Men det finns en annan sak som händer här. Genom att använda o detta sätt i kombination med LED, har vi skapat en tillståndsdator för LED. I elektronik är en tillståndsdator
En enhet som kan vara i en av ett antal stabila förhållanden beroende på dess tidigare skick och till nuvärdet av dess ingångar.
Vår stat maskin har endast två stater, på och av.