Vinka JT - Larson Scanner med Joule tjuv (4 / 9 steg)
Steg 4: Firmware funktioner
Reglera Joule tjuv utspänning (microcontroller tillförselspänning)
Firmware övervakar matningsspänningen från med A/D omvandlare - istället för att ansluta en av input stiften att matningsspänningen, A/D-omvandlare prover byggdes fast referensspänningen med matningsspänningen som den A/D referensspänningen. Resultatet är inverterad antalet matningsspänningen. A/D resultatet fungerar till vara: 512/supply_voltage. Jämföra detta nummer mot förutbestämd tröskel för att slå på/av Joule tjuv kretsen effektivt reglerar matningsspänningen. Denna spänning är satt något lägre än Zener diod spänningen av 5.1V att undvika att låta Zener dioden shunt spänningen - slösa energi.
Kontrollera om växeln-knappen trycks
Firmware också rutinmässigt kontrollerar du om knappen trycks. Eftersom växeln knappen är multiplexed med pin som styr Joule tjuven, är jobbet lite knepigt.
Firmware ändras först pin från utgång till ingång läge. Vilket innebär att stiftet blir hög impedans. Uttrycka det blir annorlunda, Joule tjuv krets avstängd. Vid denna punkt, bör pin spänningen gå lågt, om inte knappen växeln är stängd. Så firmware enkelt läser pin status och vänder den PIN-kod till produktionen läge. Detta händer ungefär varje 8 millisekunder eller 125 gånger/sekund.
Nu kontrolleras knappen staten mot timern att se om det höll länge nog. Om för kort, ignoreras den knapp push som ett ljud. Om push är tillräckligt lång, en räknarens värde ökas för att kontrollera för enkel eller dubbel kranar. Firmware väntar en förutbestämd tidsperiod för en annan knapp tryck. När den tiden ute, skapas en händelse singel/dubbel klicka på, eller knappen nedtryckt.
Animera lysdioderna
Den viktigaste funktionen av alla - animera nu lysdioder! Jag använder ordet animera eftersom Wave JT inte bara "blink" lysdioder, men ändrar LED ljusstyrka smidigt upp och ned i full 8-bitars nivåer.
Animeringen motorn fungerar på ett parametriskt sätt. Det tar några parametrar för att ange; bas uppdateringsfrekvens (speed), riktningen av rörelse (vänster/höger), tröskelvärdet som en ledde utlöser den angränsande ledde till att börja med att ändra ljusstyrkan bland annat. Du kan skapa oändliga mönster av animering genom att ändra dessa parametrar.