Fractal Lamp (3 / 22 steg)
Steg 3: programmering
Eftersom jag använder PICAXE mikrokontrollanter koden är skriven i den grundläggande varianten används av PICAXE programmering Editor. Här presenteras ett problem eftersom den grundläggande varianten inte stöder den formel som behövs för beräkningarna av ljusintensiteten. Varför behövs en formel för något sånt? Detta inkluderar ljusintensiteten väl människors uppfattning av nästan alla sensoriska data är exponentiell. Således, för att skapa ett ljus som skulle blekna linjärt en kod måste att skrivas som skulle tillåta en exponentiell relation mellan avsedda ljusstyrka och PWM-värde skall vara möjligt. Tredje bilden visar förhållandet mellan avsedda ljusstyrka och PWM-värde. Förhållandet beräknades först och fixade i Excel, however tack till koden begränsningar nämnde tidigare jag skapat tre mycket stora referensregister, en för varje färg, i stället genom att manuellt kopiera över värdena från Excel.
Båda koden för mottagaren och fjärrkontrollen har om-funktioner i dem för att kontrollera om nya data (RF eller ADC value) är annorlunda än den tidigare. Detta stoppar den micro controller från att gå igenom onödiga loopar i koden och därför gör det mer lyhörd. .Bas filerna finns i zip-mappen med alla andra filer som lampa.
En glitch jag märkte efter att ha byggt min krets var att lysdioder skulle flimra ständigt så länge fjärrkontrollen var på men när det var inte flimret slutat. Jag sluta sig till från det att konstant RF paketen från fjärrkontrollen var att avbryta flödet av koden på mottagarsidan. Detta borde inte vara möjligt eftersom pwmout är en konstant bakgrund rutin som ändras bara när det anges att. Hur som helst för att fixa detta jag omprogrammeras mottagarsidan för att ha en mycket mindre arbetscykel och som löste problemet.
Att programmera PICAXE chips jag använder PICAXE utveckling styrelsen, det finns många alternativ till programmering PICAXE chips men det är bästa förklarade här.