TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
neopixels

2. NEOPIXELS

 

 

DU LERNST HIER...

 

NeoPixels in verschiedenen Anordnungen anzusteuern.

 

 

WAS SIND NEIPIXELS ?

 

NeoPixels sind Farb-LEDs, mit einer roten, grünen und blauen LED und einer eingebauten Logikschaltung, die dafür sorgt, sie mit nur 4 Anschlüssen seriell hintereinander geschaltet werden können und trotzdem jede LED einzeln in Farbe und Helligkeit ansprechbar ist. Im Consumerbereich werden die LEDs vor allem für  Beleuchtungen auf Streifen verbaut (LED-Strip) oder zu Pixelanzeigen quadratisch oder rechteckig angeordnet (LED-Matrix). Es gibt aber auch andere Anordnungen, beispielsweise auf Kreisen (LED-Ring).

NeoPixels enthalten den WS2812B-Chip. Zur Ansteuerung sind lediglich eine Versorgungsspannung von 3 - 5 V, GND und eine Datenleitung nötig, die an einen GPIO-Output-Port angeschlossen wird.

 

Kurze NeoPixel-Anordnungen (bis ungefähr 24 Pixels) können mit der internen Stromversorgung der Oxocard, also mit VDD (3.3V) und GND direkt gespiesen werden.

 
 

Für längere Anordnungen ist eine externe Spannung von 5V nötig. Für die Speisung mit einer PowerBank kannst du ein USB-Kabel auftrennen und die 5V separat herausführen. Ein solches Kabel ist auch für andere Schaltungen zweckmässig, bei denen du externe 5V benötigst. Du kannst es auch zusätzlich als externe Stromversorgung für die Oxocard verwenden.  

Mit Schrumpfschlauch isolieren
Entzwei schneiden, verdrillen, zusammenlöten
 

 

Fertig stellen

 

 

Bemerkung: PowerBanks haben die Eigenschaft, dass sie bei kleiner Belastung nach einer bestimmten Zeit automatisch abschalten. Um dies zu vermeiden, kann man sie mit einem externen Widerstand von 100 Ohm mit 50 mA ständig belasten.


 

MUSTERBEISPIELE

 

Mit MicroPython sprichst du die NeoPixels wie eine Liste mit Farbtupels (r, g, b) mit r, g, b = 0..255 an. Diese Liste ist über eine Instanz der Klasse NeoPixel zugänglich, bei deren Instanzierung du den Anschlusspin, die Anzahl Pixels und den Parameter timing = True angibt, der besagt, dass die NeoPixels vom Typ WS2812B sind. Nach der Zuweisung neuer Werte der Liste musst du jeweils noch die Methode write() aufgerufen werden, damit die LEDs die neuen Werte auch wirklich anzeigen.

Das folgenden Programm zeigt fortlaufend auf einem Ring (oder Streifen) mit 24 Pixels, der an IO19 angeschlossen ist, die Farben rot, grün und blau. Um ein Pixel zu löschen, setzt man seine Farbe auf (0, 0, 0).

Programm:

from machine import Pin
from neopixel import NeoPixel
from time import sleep

nbLeds = 24
ioPin = 19
np = NeoPixel(Pin(ioPin), nbLeds, timing = True)

def sequence(color):
    for n in range(0, nbLeds):
        np[n] = color
        np.write()
        sleep(0.01)

while True:
    sequence((20, 0, 0))
    sequence((0, 0, 0))
    sequence((0, 20, 0))
    sequence((0, 0, 0))
    sequence((0, 0, 20))
    sequence((0, 0, 0))
► In Zwischenablage kopieren

Mit NeoPixels lassen sich schöne farbige Zufallsmuster erzeugen, beispielsweise die Simulation eines Feuers.

Programm:

from neopixel import NeoPixel
from machine import Pin
from random import randint
from time import sleep

ioPin = 19
nbLeds = 24
np = NeoPixel(Pin(ioPin), nbLeds, timing = True)

while True:
    for _ in range(0, 50):
        for id in range(0, nbLeds):
            red = randint(0, 50)
            green = randint(0, 50)
            blue = randint(0, 50)
            np[id] = (red, green, blue)
        np.write()
        sleep(randint(10, 100) / 1000)
    for color in range (0, 128):
        for id in range(0, nbLeds):
            np[id] = (color, 0, 0)
        np.write()
    for color in range (0, 128):
        for id in range(0, nbLeds):
            np[id] = (128 - color, color, 0)
        np.write()
    for color in range (0, 128):
        for id in range(0, nbLeds):
            np[id] = (0, 128 - color, color)
        np.write()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

NeoPixel sind Farb-LEDs mit einem eingebauten Controller, damit Farbe und Intensität jeder LED einzeln eingestellt werden kann. Sie werden über eine einzige Datenleitung angeschlossen.

 

 

ZUM SELBST LÖSEN

 

 

1.

Auf langen LED-Strips mit eng anliegenden NeoPixels lassen sich interessante Muster erzeugen, so etwa eine schlangenartige Bewegung.

2.

Es gibt auch NeoPixels in einer matrixartigen Anordnung (quadratisch oder rechteckig). Beschaffe eine LED-Matrix und erzeuge damit farbige Bilder.

3.

Orientiere dich im Internet, welches Datenprotokoll verwendet wird, damit die NeoPixels einzeln angesprochen werden können.