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.

30-1_1.png

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

30-2_1.png

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

30-3_1.png

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. 

30-4_1.png

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
Få mer. Bli medlem!

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
Medlem i trygg e-handel
KUNSKAP OCH TILLBEHÖR TILL HEMELEKTRONIK© Copyright 2024 Kjell & Company
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.