Stap 7: Programmeren van de ATtiny85
5 DIO pinnen gebruikt voor het inschakelen van LEDs en Lees een knop staat.
Een werkelijk koele eigenschap van deze code is het feit dat het eigenlijk zet de ATtiny85 in de energiebesparende modus wanneer niet in gebruik, verlenging van de standby-batterij levensduur alot. Ook schakelt het programma uit de ADC aan het begin van elk programma om nog meer energie te besparen.
Telkens wanneer de knop wordt ingedrukt, wordt de animatie geschakeld tussen deze modi (in volgorde):
- Alle op
- Terug/weer (zie foto's)
- Lichte schilderij modus (enkel aanwijzer vinger LED op)
- Alle uitschakelen
Beschrijving: Dit is de functie die wordt aangeroepen rond elke paar milliseconden controleren van de status van de knop:
boolean debounce(){ //reads a button state, waits for it to settle, reads, then returns the state //true: pressed, false: unpressed //if the button was pressed in the same program cycle don't do anything if(abs(counter-debounceCounter)<1)return false; if(digitalRead(readPin)){ //if the button is pressed delay(27); //wait for the release debounceCounter = counter; //create a checkpoint (used above) return digitalRead(readPin); //read again } return false; //if nothing happened }
Verdeling
if(abs(counter-debounceCounter)<2)return false;
- ABS() is een ingebouwde functie om te vinden van de absolute waarde (in mijn geval gebruik ik het voor het vinden van het verschil tussen de vertragingen)
- (teller-debounceCounter) is de tijd sinds de laatste knop drukt u op (in programma cycli)
- < 1 zorgt ervoor dat de functie werkt alleen als de druk op de knop zich binnen verschillende programma cycli voordoet
- resultaat false dwingt het programma om terug te keren valse omdat er binnen de zelfde programma cyclus