POV Cylinder med Arduino vederbörlig (4 / 6 steg)
Steg 4: Arduino programvara
Arduino programvaran består av huvudprogrammet (mpc.ino) och följande bibliotek:
- bt - drivrutinen SW för Bluetooth-modul
- LDP8806 - drivrutinen SW för LED strips
- MemoryFree - funktioner för att upptäcka tillgänglig gratis RAM-minne
- mpcgif - uppspelning av GIF-filer i RAM eller Flash-minne
- bilder - inre GIF bilder lagras i Flash
- trace - funktionerna för felsökning av SW
Periodiska produktionen av bilderna till LED strips görs avbrott driven. Det finns två växla ram buffertar. Varje rambuffert innehar en bild med 40 x 151 pixlar. Varje pixel är en en byte färgpalett index. Medan en rambuffert är utdata till LED strips via IRQ- och DMA, tillagas den andra rambuffert av huvudprogrammet (t.ex. genom funktionen avkodning GIF-bilder). Växling av ram buffertar görs av rutinen ram avbrott.
Det finns en ram avbrott per revolutionen utlöstes av IR-sensorn. Ram-avbrott rutin mäter (via en maskinvarutimer) evolution hastighet och program återkommande kolumn avbrotten (en per kolumn, dvs 150 avbrott per varv) med en maskinvarutimer. Rutinen kolumn avbrott utgångar den aktuella kolumnen till LED strips. För prestanda sker skäl produktionen via tre DMA-kanaler som drivs helt parallellt.
Arduino full källkoden finns tillgänglig på github.