Anpassade LED Touch ljus fixtur (8 / 11 steg)
Steg 8:
Jag brukade WinAVR att sammanställa och USB Pocket programmerare från Sparkfun ladda ner koden till AVR chip, men du kan använda AVR Studio och oavsett programmerare du är van vid; Tänk bara på att ändra makefile på motsvarande sätt. AVR fuse bitar är standardvärden.
Programmet drift
I grund och botten väntar uC i viloläge tills det är vaknat av en maskinvaruavbrott från touch sensor. Sedan vänder det lysdioderna i en låg stat. När sensorn är rörd igen, ändras läget från låg till medium, och igen till hög efter en annan touch. En sista touch av fixtur kommer att stänga av belysningen och sätta uC tillbaka för att sova, väntar på att bli väckt av touch sensor. Denna cykel upprepas på obestämd tid.
Två header-filer används. Först är min egna AVR.h fil som innehåller många användbara makron som kräver andra krävs huvuden. Andra är den sleep.h filen som ingår i WinAVR.
Programmet startar genom initierar AVR chip: stänga av oanvända funktioner, ange I/O portar, minska system klockfrekvens (för mer makt besparingar), ställa in Timer 0 för en 122 Hz puls, att aktivera PIN-koden ändra avbrott för touch sensor och gör att kraften ner viloläge.
Fylls sedan i en evighet loop som bara gör en sak: kontrollera om sömn är aktiverat. Om sömn är aktiverad, sätts uC för att sova för att vänta på touch sensor maskinvaruavbrott.
Endast en avbrottshanterare används: stiftet ändra avbrott för touch sensor. Denna rutin kontrollerar status för lysdioderna och beslutar att aktivera dem, öka ljusstyrkan (pulse bredd) eller stänga av dem därför när som helst fixturen vidrörs. Den rymmer också programmet i en loop tills fixturen är inte längre att bli rörd.
LED pulsen sköts helt av maskinvarufunktioner för uC. Det enda som måste göras i koden är att aktivera eller inaktivera timern 0 utdata ansluten till LED driver.