Arduino Numitron Cigar Box personlighet testare (6 / 15 steg)
Steg 6: Arduino kod: sekvenser
Den Arduino kod som du kan ladda ner här är inställd för en Adafruit TrinketPro 5v. Du kan använda en Arduino mikrokontroller, jag plockade Adafruit en eftersom den är liten och billig. Jag försökte kommentera koden så att en nybörjare som jag kunde se vad de olika raderna kod. Här är några höjdpunkter för en komplett nybörjare:
Sekvenser: Numitron och lysdioder styrs av sekvenser skickas till SKIFT register. Det finns 9 lysdioder och 7 numitron filament = 16 saker att lysa upp. Skift register 1 handtag 8 av lysdioder. Skiftregister 2 hanterar den senaste LED och numitron. Bitarna är laddade i skift register i 2 uppsättningar 8 (en uppsättning för varje skiftregister) och sedan de 16 bitarna av information skickas till lamporna och numitron.
1. byte sekvens går till den 2: a skiftregister som är numitron. Faktiskt, det kommer in första skiftregister men sedan blir "fördrivna" till den andra när den 2: a uppsättningen på 8 byte kommer i.
Anta att du vill tända alla 9 lysdioder och nummer 9 på numitron. I detta fall alla byte i första skiftregister måste vara "på" och alla av dem i den andra måste vara på utom den sista (se tillbaka kopplingsschema av numitron om detta är förvirrande för dig). Vi behöver två uppsättningar av 8 bitar, som representerar vi kan så här:
B11111111 och B11111110 (där B11111110 får skickas ut först men slutar i 2: a skiftregister)
Uttrycket ovan bör lysa upp nästan allt och är den mest påfrestande sak vi ber systemet att göra - på ~ 20 milliampere per LED eller glödlampa, vi ber mikrokontroller till produktionen 15 x 20 = 300 mA. Inte mycket, men det är 2 x vad TrinketPro är beräknat för. Så, min kod betonar microcontroller styrelsen för 600 millisekunder; det fungerar alldeles utmärkt, men kanske det kommer att brinna ut snabbare än normalt, jag vet inte ännu.
För att lysa upp 8 lysdioder och nummer 8 på numitron gör vi detta:
B1111111 och B01111111
eftersom vi vill ha den första 8 lysdioder på men inte 9 en (som representeras av den 0 som kommer efter den andra B ovan). Resten av sekvensen är så här:
7: B01111111 och B00001110
6: B00111111 och B11111100
5: B00011111 och B01111100
4: B00001111 och B00110110
3: B00000111 och B01101110
2: B00000011 och B11101010
1: B00000001 och B00000110
0: B00000000 och B11011110
Kontrollera koden för att se ovanstående grejer som adruino kod. Jag bröt den i två separata sekvenser. Det finns totalt 4 sekvenser i kodexen. två som används under "vänta för knappen att skjutas" tiden, och 2 som används för att räkna från 9 till 0 under mättiden. Förresten, det finns andra sätt att koda detta, jag vet bara inte dem ännu.