Neopixel är ett bibliotek och en familj av LED-produkter. Namnet är egentligen amerikanska Adafruits konsumentvänliga benämning för chippen WS2801/11/12. Produkterna tillverkas dock av många olika tillverkare. Produktutbudet består av allt från ringar i olika storlekar (likt den som följer med i bokens tillhörande komponentkit) till lister i olika längder.
Neopixel-ringar i två storlekar
Lysdioderna på Neopixel-produkter är av RGB-typ och alla lysdioder är individuellt adresserbara. All adressering sker av Neopixel-produktens inbyggda mikrokontroller i kombination med Neopixel-biblioteket. Det räcker därför med tre kablar (plus, minus och data) för att ansluta en Neopixel-ring med 24 lysdioder till ett utvecklingskort.
De flesta Neopixel-ringar levereras utan anslutningskablar. För att ansluta komponentkittets Neopixel-ring börjar vi med att löda fast anslutningskablar till punkterna PWR +5 V, GND och Data Input. På kopplingsplattan kopplar vi sedan Neopixel-ringen i serie med en 100 Ω-resistor (behövs för modellen i bokens komponentkit).
I följande exempel vill vi bygga en enkel sekundvisare som tänder eller släcker alla lysdioder på ungefär en sekund. Vi kommer att använda delay-funktionen för att räkna fram en sekund åt gången. Den är inte så exakt och i Håll tiden med Arduino använde vi därför en annan lösning.
Vi börjar med att importera biblioteket Adafruit_NeoPixel och definiera tre variabler:
Obs! Varje lysdiod kan dra upp till 60 mA på högsta ljusstyrka (1,4 A totalt). Det kan inte nätaggregatet i det tillhörande komponentkittet leverera. Den högsta rekommenderade ljusstyrkan är därför 100.
Del 1/4 av NeopixelSecond.ino
Vi skapar sedan ett nytt Neopixel-objekt som vi kallar ring. Utöver argumenten för GPIO-stift och pixelantal beskriver vi vilken typ av Neopixel-produkt vi har (NEO_GRB
Del 2/4 av NeopixelSecond.ino
I setup-funktionen startar vi ringen och sätter ljusstyrkan.
Del 3/4 av NeopixelSecond.ino
I loop-funktionen skriver vi två for-loopar. Den ena for-loopen stegar igenom pixlarna (från nummer 0 till nummer 23) och ändrar färgen från svart (av) till en färg. Den andra for-loopen gör samma sak fast tvärtom.
Med setPixelColor-metoden anger vi först vilken pixel vi vill ändra färg på och sedan vilken färg den ska få. Vi kan ange vilken färg som helst utifrån färgens RGB-värde (vi väljer Kjell & Companys profilblå färg som har RGB-värdet 0, 118, 189). Med show-metoden uppdaterar vi sedan värdet på den aktuella pixeln.
Del 4/4 av NeopixelSecond.ino
Anledningen till att vi valde en fördröjning på 42 millisekunder är att looparna körs 24 gånger. Det blir drygt en sekund (1008 ms) per tändning eller släckning.
Här följer en översikt över andra vackra färger (Kjell & Companys profilfärger).
Tärningen från Bygg en tärning kan göras ännu häftigare med hjälp av en Neopixel-ring. Vi vill att Neopixel-ringen "roterar" medan spelaren håller knappen intryckt och att servot visar kastutfallet när spelaren släpper knappen.
Längst upp i vår sketch gör vi följande saker:
Lägg märke till att vi använder ett annat servo-bibliotek än i Styr ett servo. Det beror på att det IDE-inbyggda servo-biblioteket störs av Neopixel-ringen. Som tur är har Adafruit gjort ett bibliotek vid namn Ticoservo som fungerar på samma sätt men inte störs av Neopixel (biblioteket måste installeras innan det kan användas).
Del 1/5 av RollDice3.ino
I setup-funktionen startar vi Neopixel-ringen och knappen. Vi kopplar servot till GPIO-stift 9 och fyller på med resten av setup-koden från det första tärningsbygget.
Del 2/5 av RollDice3.ino
Loop-funktionen skriver vi om helt. Vi inleder med en if-sats som startas när någon trycker på knappen. Det första som då sker är att ljusstyrkan ställs upp och Neopixeln uppdateras. Sedan körs en while-loop så länge som knappen inte har släppts upp. Den while-loopen anropar funktionen rainbowCycle. När knappen väl släpps upp körs en for-loop som successivt dimrar ned Neopixelns lysdioder. När lysdioderna har släckts anropas funktionerna upDown och setDice.
Del 3/5 av RollDice3.ino
UpDown- och setDice-funktionerna gör samma sak som tidigare.
Del 4/5 av RollDice3.ino
RainbowCycle och wheel är två nya funktioner. De gör att färgerna blandas och snurrar på ett mycket elegant vis. Grundkoden är ett konstverk i sig och är skriven av Adafruit som ett av deras exempel. Fler vackra exempel finns under Exempel på Fil-menyn.
Del 5/5 av RollDice3.ino
Som medlem hos oss får du alltid lite mer. Som till exempel låga medlemspriser, unika kampanjer, 100 dagars öppet köp och bonuscheckar. Dessutom sparas alla dina köp i ditt medlemskap så att du slipper spara papperskvitton för eventuella returer. Ditt medlemskap är helt digitalt och helt kortlöst. Och väldigt smidigt.
Läs mer