Guide: Få Neopixel og LED-Strip til at virke
Du skal bruge følgende:
- En Raspberry Pi Pico Microcontroller
- Et Pico Robotics board
- To Neopixel / En LED-Strip
- En batteriboks
- Ledninger
- Et breadboard (kun ved brug af NeoPixel)
Beskrivelse af Neopixel
En Neopixel er en lysdiode, der kan lyse i alle regnbuens farver. Neopixels er lette at sætte sammen i en kæde - man forbinder bare output på den ene med input på den næste, o.s.v., og hele kæden kan styres med kun en enkelt output pin på pico’en.
For let at kunne styre neopixels fra Pyton skal du følge guiden til at installere biblioteket til den til sidst i dette dokument.
Prøv at bygge dette kredsløb:
Skriv følgende program i Thonny og prøv det:
Vi forbinder i dette tilfælde in på den første neopixel med GP28 på pico’en. Vi tager Spændingen (+ og -) fra batteriforsyningen til Pico Robotics Board’et
import time
from neopixel import Neopixel
pixels = Neopixel(2, 0, 28, "GRB")
yellow = (255, 100, 0)
orange = (255, 50, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
red = (255, 0, 0)
while True:
pixels.brightness(50)
pixels.fill(orange)
pixels.show()
time.sleep(1)
pixels.fill(blue)
pixels.show()
time.sleep(1)
Beskrivelse af koden
- De to første linjer er biblioteker der anvendes
- I linjen pixels = Neopixel(2, 0, 28, "GRB") fortæller vi at vi gerne vil lave en kæde med 2 neopixels. 0’et er ikke vigtigt, og derefter fortæller vi den at vi vil styre kæden med GP28 benet på pico’en, og at rækkefølgen af farverne for den type neopixel vi bruger er Grøn, Rød, Blå - “GRB”.
- I de næste linjer definerer vi nogle variabler til at holde nogle farver, hvor vi sætter mængden af hhv rød, grøn og blå, der skal blandes. Værdien for hver grundfarve skal være mellem 0 og 255 - hvor 255 er helt rød, grøn eller blå.
- Derefter sætter vi lysstyrken for alle pixels til 50% med linjen pixels.brightness(50)
- Så bruger vi kommandoen fill, til at give samme farve til alle neopixels i kæden - pixels.fill(orange).
- For at få vist de farver og den lysstyrke vi har sat for vores neopixels er det nødvendig at bruge kommandoen show() - pixels.show(). Det skal man altså gøre hver gang man har lavet ændringer i farverne for ens neopixelkæde.
- Farven sættes for begge neopixel til hvid (255, 255, 255).
Note: Der findes også kommandoer til at sætte farven for en enkelt neopixel i en kæde: pixels.set_pixel(2, (255, 255, 255)) pixels.show().
Opgave: Prøv at lave et program, hvor dine 2 neopixels skifter mellem farverne gul og grøn, så den ene er gul mens den anden er grøn og omvendt.
LED-Strip
Mange LED-strips med RGB-lys bruger også LED’s af Neopixel-typen og kan derfor erstatte de individuelle neopixels i eksemplet ovenover (se eksemplet nedenunder). Nogle strips kan man lodde på på de små kobberbaner, der er gjort synlige mellem hver neopixel, der sidder på strip’en. LED strips kan afkortes ved at klippe dem over midt i kobberbanen - der er ofte en streg, der indikerer, hvor man kan klippe. LED strips har en retning, styringssignalet skal løbe fra Pico’en og til enden af strip’en. Dette er også indikeret på de fleste strips med små pile. Det er også oftest tydeligt indikeret ved hver neopixel eller kobberbanerne, hvad der er +5V, Signal (In eller Out) og hvad der er GND. Signalet er altid i midten.
Opdateret kredsløb: Erstat Neopixels fra forrige kredsløb med LED-Strips
Indhent information i datablad
Der kan være forskel på, hvilken type NeoPixel der sidder på forskellige strips, og dermed også, hvordan styresignalet skal være. Hvis der står hvilken type NeoPixel der sidder på strip’en kan man næsten altid finde et datablad på den (søg på dens navn på google), og så find, hvor der står hvad type den er.
Tag f.eks. WS2812B, som er en af de mest benyttede neopixels til RGB LED Strips.
På sidste side i databladet (https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) står der følgende
Og der kan man se at rækkefølgen på data er GRB, hvilket så er det der skal skrives ind i programmet:
pixels = eopixel(10,0,0,"GRB") |
De første 3 parametre er beskrevet tidligere og den sidste parameter er en streng, i dette tilfælde “GRB”, der angiver datarækkefølgen som den type neopixel man anvender, forventer. Altså den vi fandt i databladet ovenover.
Opgave: Test nu LED-Stripsene ved at erstatte kodedelen med den givne linje kode ovenfor.