Newer
Older
# 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
## 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.
```python
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:
```python
shield.update()
```
Liest das Bild im Speicher und zeigt es auf dem Display an.
### clear()
Usage:
```python
shield.clear()
```
Löscht das aktuelle Bild im Speicher.
### brightness
Usage:
```python
shield.brightness()
```
Setzt die Helligkeit des Displays. Darf Werte zwischen 0 und 7 annehmen.
### power_on()
Usage:
```python
shield.power_on()
```
Schaltet das Display an.
### power_off()
Usage:
```python
shield.power_off()
```
Schaltet das Display an.
### get(i: int, j: int)
Usage:
```python
shield.get(3,5)
```
Gibt den aktuell gesetzten Werte im Speicher wieder.
### set(i: int, j: int, state: bool)
Usage:
```python
shield.set(3,5,1)
```
Setzt im Speicher den Bildpunkt (3,5) auf an.
### on(i: int, j: int)
Usage:
```python
shield.on(3,5)
```
Schaltet den angegebenen Bildpunkt im Speicher an.
### off(i: int, j: int)
Usage:
```python
shield.off(3,5)
```
Schaltet den angegebenen Bildpunkt im Speicher aus.
### toggle(i: int, j: int)
Usage:
```python
shield.toggle(3,5)
```
Invertiert den angegebenen Bildpunkt im Speicher. Aus 1 wird 0, aus 1 wird 0.
## blit
```ython
blit(source: list[list[int | bool]], source_offset: tuple[int, int] = (0, 0), dest_offset: tuple[int, int] = (0, 0))
```
* source - Die Bitmatrix die in den Speicher geschrieben werden soll
* source_offset - Wird benutzt, wenn nur ein Ausschnitt aus der Bitmatrix verwendet werden soll. Gibt des Startpunkt an [Optional]
* dest_offset - Wird benutzt, wenn nur ein Teil des Speichers geschrieben werden soll. Gibt es Startpunkt an [Optional]
Codebeispiel:
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
```python
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.
```python
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.
```python
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:
```python
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:
```python
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:
```python
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:
```python
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:
```python
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:
```python
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.