DIY glödande armband (7 / 10 steg)
Steg 7: Programmering av ATtiny85
Programmet använder 5 DIO stift att byta lysdioder och läsa en knapp stat.
En riktigt cool funktion i denna kod är faktumet att det faktiskt sätter ATtiny85 in i energisparläge när inte i använda, utvidga standby ackumulatorn liv mycket. Dessutom stängs programmet av ADC i början av varje program att spara ännu mer makt.
Varje gång knappen trycks, växlar animeringen mellan dessa lägen (i ordning):
- Alla på
- Fram/tillbaka (se bilder)
- Ljus målningsläge (bara pekaren finger LED på)
- Allt bort
Beskrivning: Detta är den funktion som kallas runt varje några millisekunder att kontrollera knappen tillståndet:
booleska debounce() {
läser ett knappläge, väntar på att bosätta sig, läser och sedan returnerar staten
sanna: pressad, falskt: Kolfiberförstärkt
Om knappen trycktes i samma program cykel inte gör något
IF(ABS(Counter-debounceCounter) < 1) return false;
IF(digitalRead(readPin)) {//if knappen trycks
Delay(27); vänta för övergång
debounceCounter = counter; skapa en kontrollpunkt (används ovan)
återvända digitalRead(readPin); Läs igen
}
returnera false; om ingenting hänt
}
Uppdelning
IF(ABS(Counter-debounceCounter) < 2) return false;
- ABS() är en inbyggd funktion för att hitta det absoluta värdet (i mitt fall jag använder det för att hitta skillnaden mellan förseningar)
- (counter-debounceCounter) är gången sedan den sista knappen tryck (i programmet cykler)
- < 1 gör att funktionen fungerar endast om du trycker på knappen sker inom olika program cykler
- returnera false tvingar programmet att returnera false eftersom det är inom samma program cykel