Magisk färg kopiera kameleont lampa (6 / 7 steg)
Steg 6: Anden i lampan
UM, om du kan tänka på en förmån, låt mig veta, jag har problem med att en.
Jag har inkluderat koden som en textfil, måste du öppna den i en textredigerare och sedan kopiera och klistra in den i Arduino-miljö. Eller, om du föredrar, bara öppna programvaran Arduino och följa med skriva det när vi går.
För emulering lampan jag använder min anpassade Moodlamp bibliotek, kan du få biblioteksfiler och dokumentation på min andra RGB Instructable, RGB Moodlamp med anpassade bibliotek. Annars kan du bara kopiera färg sensorn hantering av koden och utgång till din RGB lampa på din föredragna sätt.
Så låt oss titta på koden.
Börja med den första bilden, eller följa med textfilen.
Vi börjar med en include-deklaration följt av ett par förklaringar.
Include-uttrycket är för Moodlamp-biblioteket. Deklarationen under är bara att säga att vår instans av Moodlamp kommer att kallas lampa.
Sedan satt vi upp ett par platshållare.
Först är en matris att vi kommer att använda ta stiften som lysdioder är anslutna till. Kom ihåg att vi kopplade vår sensor lampor till de samma pin-koder.
De andra bör vara tillräckligt tydligt av anteckningarna i bilden, om inte, aldrig är rädd, de är bara några platshållare för värden som vi kommer att använda senare.
För den genomsnittliga behandlingen är inte speciella, det fick egen bild eftersom det nästan förbises.
När alla våra uttalanden har gjorts, måste vi nu att skriva setup-funktionen. Vi börjar genom att tilldela sensor utgångsstift. Vi behöver inte deklarera den analoga ingången på sensorn och lampor stiften är tas om hand av Moodlamp biblioteket.
Då vi börja seriell kommunikation så att vi kan få några felsökningsinformation tillbaka från vår lampa.
Efter det kan vi fortsätta våra loop funktion. Slingan är kod som Arduino kommer att köra igen och igen. Som ni ser kräver vi några funktioner.
Först kallar vi checkBalance för att se om balansen har in och ställa in den om det behövs. (När det visar)
Så vi kolla färgen under sensorn. När vi har en färg, vi skriver ut det på skärmen och ange färg på lampan. Sista anropet till getReading gör ingenting användbart alls, lämnat det där av en slump. Nåja, jag kunde hävda att jag bara var att hålla lampan från att vara för tomgång.
Så låt oss titta på de olika funktionerna.
CheckBalance är söt rak-vidarebefordra, kontrollerar den om en balans finns och om inte, då det skiljer det genom att funktionen setBalance.
Låt oss titta på funktionen setBalance, det är den längsta.
Först puls vi ljus röd två gånger och sedan vit med Moodlamp biblioteket. Detta är att varna operatören att vita scan håller på att ske. Lämnar lampan vit (alla tre färg på) lämnar så mycket störande ljus som möjligt för vår baseline-skanningar som håller dem lika balanserad.
Vad följande avsnitt inte är ljus röd, sedan grön, grön sedan lysdioder medan du tar en sensor avläsning vid varje steg. Detta ger oss vissa uppgifter om hur mycket av varje färg reflekterades tillbaka till sensorn. Dessa värden bör vara hög eftersom det är vitt, som bör återspegla en lott för varje färg.
Om innebörden inte är sluta sig till, måste du placera ett urval av vita (ett kort eller ett papper) under sensorn samtidigt här sökningen sker. Hela varar ungefär tre sekunder. Genomsökningen mindre än 1.
När du är klar med scanning vit kommer vi scanna svart. Det finns några varningslampor igen, en fördröjning och sedan Skanna. Här kommer du ett svart eller grå prov under lampan. Vi kommer att prata lite mer på vad ditt prov bör senare.
När balanserande skanningar är slutförda, lampan slocknar och vi ange ett booleskt värde om balanserande värden har fastställts till true.
När saldona har ställts in, vårt program kommer nu att börja kontrollera färgen under sensorn, chansen att i den fysiska världen du fortfarande inte har tagit bort den från din svarta prov, men Skitsamma, vi talade om koden.
Om du följde vad som hände med balanserande scan, är vi ganska mycket gör samma sak. Den stora skillnaden är att vi använder några matte för att balansera våra läser nu. I grunden ändrar vi vår behandling baserat på de högsta och lägsta möjliga läsningar, och gör det ett värde vi kan använda, nämligen mellan 0-255(roughly). Vilket ger oss en ganska rättvis representation av färg.
Efter att sätta vi helt enkelt färg. Vi behöver bara snurra siffrorna lite, eftersom ofta matematik ovan returnerar större eller mindre än våra acceptabla värden. Sedan vi variablerna röd grön och blå och använda Moodlamp biblioteket för att underlätta visar färgen.
Jag glömde nästan nämna den getReading funktionen som blir bara genomsnitt läsning för gånger antal avläsningar. Inte strickly nödvändigt, som en läsning verkar tillräckligt, men jag visste inte att på tiden.
Två utskriftsfunktionerna är för felsökning ändamål, och helt enkelt skriva ut våra läsningar till den seriella porten. Ja vet jag jag kalla en i slingan, men du inte behöver. Jag gillar bara rullning nummer ibland. Plus att jag utskrift av det till bearbetning under testning, för att se exakt vad färg sensorn är att se. Jag ska försöka hitta tid att dokumentera och ladda upp den skissen i en nära framtid, men för nu är du på egen hand. (Inte hårt om du är bekant med bearbetning och seriell kommunikation)
När du har skrivit din kod, ladda upp den till lampan och börja spela. Genom att spela menar jag testa... men på ett roligt sätt.