Der NeoPixel-Baustein besitzt in der oberen linken Ecke (für den Eingang) nur 3 Anschlüsse: +5V, GND,DIN (Eingangssignal). (Das Board besitzt in der gegenüber liegenden Ecke auch 3 Anschlüsse zur Ansteuerung eines weiteren NeoPixel-Bausteins.) Der Baustein soll auch mit der Spannung 3,3 V zu betreiben sein. Hierbei leuchten einige (wenige) LEDs allerdings bei voller Ansteuerung etwas schwächer als die anderen; deswegen empfehle ich, auf den 5V-Anschluss des TTGO zurückzugreifen.
Mithilfe der Abb. 1 erkennt man sofort, wie ich das Muster kodiert habe: Die 8 LED-Zeilen entsprechen den 8 untereinander stehenden Listen im Programmcode; dabei sind in den Variablen W und S die Farbwerte durch folgende Tupel definiert:
Code: Alles auswählen
S = (0, 0, 0) # Schwarz
W = (50, 50, 50) # Farbe für Buchstaben; hier: mattes Weiß
Wie gelangen diese Informationen in das NeoPixel-Modul? Dazu werden die einzelnen Farbwerte zeilenweise mit der folgenden Funktion zum NeoPixel-Modul übertragen:
Code: Alles auswählen
def show(pattern): # Muster auf LED-Panel anzeigen
for i in range(8):
row = pattern[i]
for j in range(8):
cell = row[j] # Farb-Tupel
np[i*8+j] = cell # Farbwert in NeoPixel-Instanz speichern
np.write() # Farbwerte an Neopixel-Modul übertragen
Code: Alles auswählen
show(letter_list[70])
Code: Alles auswählen
show(letter_list[ord('Z')])
Hier nun eine Liste der Funktionen, welche ich implementiert habe:
- copy_list(l1): # Liste kopieren (Durch Liste2 = Liste1 werden nur Pointer übertragen; d. h. eine spätere Änderung von Liste1 wirkt sich auch auf Liste2 aus!)
- change_single_led(x, y, color): # ändert den Farbwert eines NeoPixels / einer LED
- show(pattern): # Muster auf LED-Panel anzeigen
- show_letter(letter): # letter ist eine Zeichenkette der Länge 1
- delete(): # LED-Panel löschen, d. h. den Farbwert auf S = (0, 0, 0) setzen
- rotate_up(pattern): # Muster durch 1 Aufwärts-Shift rotieren; d. h. die Zeilen wandern um 1 Position nach oben; die oberste Zeile wird dabei zur untersten.
- rotate_down(pattern): # Muster durch 1 Abwärts-Shift rotieren
- rotate_left(pattern): # Muster durch 1 Links-Shift rotieren
- rotate_right(pattern): # Muster durch 1 Links-Shift rotieren
- shift_up(new_pattern, active_pattern): # Die obere Zeile von new_pattern wird zeilenweise von unten in active_pattern hineingeschoben;
# insbesondere ist der Rückgabewert new nach 8 Shifts immer gleich black. - shift_down(new_pattern, active_pattern): # wie shift_up, aber Verschiebung in umgekehrter Richtung
- shift_right(new_pattern, active_pattern): # Die rechte Spalte von new_pattern wird von links in active_pattern hineingeschoben;
# insbesondere ist der Rückgabewert new_pattern nach 8 Shifts immer gleich black. - shift_left(new_pattern, active_pattern): # wie shift_right, aber Verschiebung in umgekehrter Richtung
Im Anhang finden Sie ein kurzes Video, einige Quellenangaben sowie ein Programm, in welchem die oben genannten Funktionen nebst einigen Anwendungen zu finden sind.
.