Lys upp med Neopixel

Neopixel

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.

html_image

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.

Anslutning av Neopixel

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 VGND och Data Input. På kopplingsplattan kopplar vi sedan Neopixel-ringen i serie med en 100 Ω-resistor (behövs för modellen i bokens komponentkit). 

html_image

Illustration gjord med komponenter från Fritzing (fritzing.org). CC BY-SA 3.0

Sätt färg på lysdioder

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: 

  • en byte-konstant för vilket GPIO-stift som Neopixel-ringen är kopplad till
  • en byte-konstant för hur många lysdioder Neopixel-ringen består av
  • en byte-variabel för hur starkt Neopixel-ringen ska lysa (0-255).

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). 

html_image

Förbättra tärningen

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. 

html_image

Längst upp i vår sketch gör vi följande saker:

  • inkluderar biblioteken för Neopixel, servo och knapp
  • bestämmer GPIO-pin för Neopixel-ringen
  • bestämmer antalet pixlar i Neopixel-ringen
  • bestämmer ljusstyrkan på pixlarna i Neopixel-ringen
  • skapar en Neopixel-ring, en knapp och ett servo.

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

Senast ändrad: 2017-02-27
NeopixelAnslutning av NeopixelSätt färg på lysdioderFörbättra tärningen
Bli medlem i dagGör som nästan 2 miljoner andra och ta del av erbjudanden samt förmåner när du handlar!

Som medlem får du:

  • Exklusiva medlemserbjudanden
  • Poäng på allt du handlar
  • 100 dagars öppet köp
  • Se dina köp på kjell.com
Som medlem hos Kjell & Company kan du köpa utvalda medlemsvaror till extra bra priser, samla poäng och få bonuscheckar, samt ta del av unika medlemserbjudanden. Du får även förtur till vår kundservice, utökat öppet köp och förlängd garanti på utvalda varumärken.Läs mer om medlemskapet
Alltid tryggt att handla hos Kjell
Fri frakt

Vi bjuder på frakten när du handlar för mer än 300:-

Fri retur

Fria returer i alla våra butiker.

Snabba leveranser

1-2 arbetsdagar leveranstid

Hämta i butik

Reservera online och hämta ut i butik samma dag

Medlem i

Medlem i trygg e-handel

Du betalar enkelt

Får din beställning levererad med

Du kan handla från både

Det verkar som att du använder en gammal webbläsare, det kan göra att allt inte fungerar eller ser ut som det borde.