-
Martin Winter authoredMartin Winter authored
- Dokumentation zur LED-Matrix
- Die LED-Matrix
- Basisfunktionen des Displays
- update
- clear()
- brightness
- power_on()
- power_off()
- get(i: int, j: int)
- set(i: int, j: int, state: bool)
- on(i: int, j: int)
- off(i: int, j: int)
- toggle(i: int, j: int)
- blit ( source: list[list[int | bool]], source_offset: tuple[int, int] = (0, 0), dest_offset: tuple[int, int] = (0, 0))
- Vordefinierte Bilder und Annimationen
- Vordefinierte Bilder
- Buchstaben
- Vordefinierte Annimationen
- scroll(message, duration=5, speed = 15)
- random(duration=5, speed = 100):
- rustle(duration=5, speed = 10)
- arrows(duration=5, direction = "right", speed = 10):
- Eigene Annimationen
Dokumentation zur LED-Matrix
An dieser Stelle wird beschrieben, wie du mit dem LED-Matrix-Display arbeiten kannst.
Die LED-Matrix
Die LED-Matrix besteht aus 8 Reihen und 8 Zeilen. Du kannst die LEDs einzeln ansteuern oder ganze Bilder auf das Display "malen". Die LEDs sind in einem Koordinatensystem angeordnet. Die LED ganz unten links hat die Koordinaten (0,0).
y ^ | | | | | | | | +--------> x
Basisfunktionen des Displays
Um das Display zu programmieren weren diverse Funktionen in sogenannten Bibliotheken bereitgestellt. Ein einfaches Basisprogramm, welches den Lauftext "Hallo Welt!" anzeigt ist im folgenden zu sehen.
from time import sleep, time, ticks_ms
from machine import Timer
from myfrabuled import WEMOSMatrixLEDShield
from font8x8 import letter
from pictures import *
from animations import *
shield = WEMOSMatrixLEDShield()
while True:
scroll("Hallo Welt!",5,30)
In den ersten sieben Zeilen werden alle Bibliotheken eingebunden, die du benötigst. In der neunten Zeile wird die Display-Objekt angelegt. In der while-Schleife läuft das eigentliche Programm ab. Hier wird eine vordefinierte Animation aufgerufen.
update
Usage:
shield.update()
Liest das Bild im Speicher und zeigt es auf dem Display an.
clear()
Usage:
shield.clear()
Löscht das aktuelle Bild im Speicher.
brightness
Usage:
shield.brightness()
Setzt die Helligkeit des Displays. Darf Werte zwischen 0 und 7 annehmen.
power_on()
Usage:
shield.power_on()
Schaltet das Display an.
power_off()
Usage:
shield.power_off()
Schaltet das Display an.
get(i: int, j: int)
Usage:
shield.get(3,5)
Gibt den aktuell gesetzten Werte im Speicher wieder.
set(i: int, j: int, state: bool)
Usage:
shield.set(3,5,1)
Setzt im Speicher den Bildpunkt (3,5) auf an.
on(i: int, j: int)
Usage:
shield.on(3,5)
Schaltet den angegebenen Bildpunkt im Speicher an.
off(i: int, j: int)
Usage:
shield.off(3,5)
Schaltet den angegebenen Bildpunkt im Speicher aus.
toggle(i: int, j: int)
Usage:
shield.toggle(3,5)
Invertiert den angegebenen Bildpunkt im Speicher. Aus 1 wird 0, aus 1 wird 0.
blit ( source: list[list[int | bool]], source_offset: tuple[int, int] = (0, 0), dest_offset: tuple[int, int] = (0, 0))
Usage:
picture = [[0,0,0,0,0,0,0,0],
[0,1,1,0,0,1,1,0],
[0,1,1,0,0,1,1,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,1,0,0,0,0,1,0],
[0,0,1,1,1,1,0,0],
[0,0,0,0,0,0,0,0]]
shield.blit(picture)
Bilder bestehen aus einer sogenannten Bitmap. Das sind zwei verschachtelte Listen, die nur Nullen und Einsen enthalten. Eine 1 steht dabei für eine eingeschaltete LED, eine 0 für eine ausgeschaltete LED. Mit der Funktion wird die Bitmatrix in den Speicher geschrieben.
Vordefinierte Bilder und Annimationen
Vordefinierte Bilder
Die Funktion get_picture liefert die Bitmatrix von bereits definierten Bildern. Folgende Bilder sind bereits definiert:
- clear
- heart
- smiley
- cross
- diamond
- r_arrow
- l_arrow
- u_arrow
- d_arrow
Um ein Bild anzuzeigen muss der folgende Code verwendet werden.
picture = get_picture("heart")
shield.blit(picture, (0, 0))
shield.update()
sleep(0.8)
Buchstaben
Eine spezielle Form der Bilder sind Buchstaben. Dies könnt ihr ebenso anzeigen lassen. Die Funktion letter gibt euch die Bitmatrix eines Buchstabens wieder. Das folgende Code-Beispiel zeigt dir, wie du z.B. den Buchstaben R anzeigen lassen kannst.
shield.blit(letter("R"), (0, 0))
shield.update()
sleep(0.8)
Vordefinierte Annimationen
Neben den vordefinierten Bilder, gibt es auch schon ein paar vordefinierte Annimationen, die du verwenden kannst.
scroll(message, duration=5, speed = 15)
Mit der Funktion kannst du eine Textnachricht anzeigen lassen.
- message - Dies ist der Text, der angezeigt wird
- duration - Dies ist die Dauer, wie lange der Text angezeigt werden soll [Optional]
- speed - Dies ist die Scroll-Geschwindigkeit des Texts [Optional] Codebeispiel:
scroll("Hallo Welt!",10)
random(duration=5, speed = 100):
Mit der Funktion werden die Bildpunkt zufällig ein- oder ausgeschaltet
- duration - Dies ist die Dauer, wie lange der Text angezeigt werden soll [Optional]
- speed - Dies ist die Geschwindkeit [Optional] Codebeispiel:
random(10)
rustle(duration=5, speed = 10)
Mit der Funktion erzeugt ein Bildrauschen
- duration - Dies ist die Dauer, wie lange der Text angezeigt werden soll [Optional]
- speed - Dies ist die Geschwindigkeit [Optional] Codebeispiel:
rustle(10)
arrows(duration=5, direction = "right", speed = 10):
Mit der Funktion können Pfeile angeigt werden die sich bewegen.
- duration - Dies ist die Dauer, wie lange der Text angezeigt werden soll [Optional]
- direction -
- speed - Dies ist die Geschwindigkeit [Optional] Codebeispiel:
arrows(1, "left", 30)
Eigene Annimationen
Ihr könnt natürlich auch eigene Annimationen entwerfen. Annimationen sind eine abfolge von Bildern. Um die Sach für euch zu vereinfachen gibt es ein paar Funktionen, die euch helfen können
Die Funktionen shift_up, shift_down, shift_left und ***shift_right *** verschieben das Bild um eine Reihe bzw. Spalte in die gewünschte Richtung. Codebeispiel:
row = [0,1,1,0,0,1,0,1]
shift_up(bitmap, row)
Der erste Parameter gibt das Bild an, das verschoben werden soll. Dadurch wird auf der anderen Seite eine Reihe bzw. eine Zeile frei. Mit dem zweiten Parameter könnnt ihr angeben, was dort angezeigt werden soll. Gebt ihr den zweiten Parameter nicht an, dann wird eine leere Zeile bzw. Spalte eingefügt.
Mit den Funktionen get_row und get_column könnt ihr den Inhalt einer Spalte bzw. Zeile zurückgeben lassen. Der erste Parameter ist die Bitmap, der zweite Parameter die Zeilen bzw. Spalten-Nummer. Denkt daran, dass beim Zählen mit der 0 begonnen wird.
Beispiel für eine eigene Annimation:
heart = get_picture("heart")
for i in range(8):
shield.blit(heart, (0, 0))
shield.update()
shift_down(heart)
sleep(0.5)
Die Basis für die Annimation ist das Herz. Mit shift_down wird das Herz nach unten verschoben. Ihr seht als ein Herz, das nach unten verschwindet.