Stap 4: Firmware functies
Reguleren van Joule dief uitgangsspanning (microcontroller voedingsspanning)
Firmware bewaakt de voedingsspanning met behulp van de A/D converter - in plaats van een van de input pinnen verbinden met de voedingsspanning, A/D converter monsters gebouwd in vaste referentie spanning met behulp van de voedingsspanning als de referentie van de A/D spanning. Het resultaat is het omgekeerde getal van de voedingsspanning. Het resultaat van de A/D werkt als: 512/supply_voltage. Vergelijken van dit nummer tegen vooraf bepaalde drempel te schakelen aan/uit het circuit Joule dief effectief regelt de voedingsspanning. Deze spanning is iets onder de Zener-diode spanning van 5.1V ingesteld om te voorkomen te laten de Zener-diode shunt van de spanning - energie verspillen.
Controleer als de knop Switch wordt geduwd
De firmware controleren ook regelmatig als de knop wordt ingedrukt. Aangezien de knop switch is multiplexed met de pin dat de dief Joule regelt, is de taak een beetje lastig.
De firmware verandert eerst de pin van de output naar input mode. Dat betekent dat de pin hoge impedantie wordt. Zet het wordt een andere manier, Joule dief circuit uitgeschakeld. Op dit punt moet de pin spanning gaan laag, tenzij de knop switch is gesloten. Dus de firmware gewoon leest de Pinstatus en schakelt de pin terug naar de uitvoermodus. Dit gebeurt ongeveer elke 8 milliseconden of 125 keer per seconde.
De knopstatus wordt nu gecontroleerd tegen de timer om te zien als het lang genoeg wordt gehouden. Als te kort, wordt een druk op de knop genegeerd als lawaai. Als de push lang genoeg is, is een teller opgehoogd om te controleren enkele of dubbele kranen. Ingebouwde programmatuur wacht op een vooraf bepaalde periode voor een andere kraan van de knoop. Wanneer er een optreedt time-out, wordt een gebeurtenis gemaakt over enkel/dubbel-kraan, of een knop ingedrukt houdt.
De LED's voorzien van animatie
De belangrijkste functie van alle - animeer nu de LEDs! Ik gebruik het woord animatie omdat Wave JT niet gewoon "blink" de LEDs, maar LED helderheid soepel op en neer in volledige 8 bit niveaus verandert.
De animatie-engine werkt in een parametrische wijze. Het duurt een paar parameters om op te geven; basis vernieuwingsfrequentie (snelheid), de richting van de drempelwaarde van het verkeer (links/rechts), waardoor een gebeurtenis wordt de aangrenzende geleid om te beginnen met het helderheidsniveau o.a. wijzigen. U kunt eindeloze patronen van animatie maken door deze parameters te wijzigen.