TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
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.
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)) 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() |
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 |
|