Wir nennen es mal Kunst mit dem 8x8 Display

Wir nennen es mal Kunst mit dem 8x8 Display Titelbild

Folgende Teile braucht ihr für die Anleitung

Spiele Programmieren mit der LED Matrix Produktbild

Spiele Programmieren mit der LED Matrix | 19.95€

8x8 LED Matrix mit MAX7219 Chip  Produktbild

8x8 LED Matrix mit MAX7219 Chip | 5.95€

Wir nenne es Kunst

Bevor wir uns an das erste Spiel machen, wollen wir erstmal eine kleine Wiederholung machen und dabei noch ein wenig abstrakte Kunst erzeugen. Deswegen fangen wir mit dem nächsten Programm einfach mal an.

import RPi.GPIO as gpio
import max7219.led as led
from random import randint
import time

matrix = led.matrix()

while True:
  for i in range(8):
    for j in range(8):
      matrix.pixel(i,j,randint(0,1))
      time.sleep(0.0002)

Wenn du dieses Programm ausführst, sollte dir abstrakte Kunst auf der Matrix angezeigt werden.

Bis zur while-Schleife in Zeile 8 sollte dir alles bekannt vorkommen. Das Ziel ist recht einfach: wir wollen jede einzelne LED in der Matrix ansprechen und dann mit randint(0,1) darüber zufällig die LED an- und wieder ausschalten. Doch dafür müssen wir erstmal alle Reihen und Spalten durchgehen. Dazu benutzen wir zuerst die for-Schleife in Zeile 9, um alle Zeilen durchzugehen. Die for-Schleife kann das nicht direkt, wir müssen erst einen kleinen Umweg machen. Mit range(8) erstellen wir eine Liste mit den Zahlen 0 bis 7. Wenn wir diese mit print() ausgeben, würde Folgendes im Terminal erscheinen: [0, 1, 2, 3, 4, 5, 6, 7]. Mit der for-Schleife können wir also Objekte in der Liste durchgehen. Diese wird dann in i gespeichert. Heißt, beim ersten Mal ist i gleich 0, beim zweiten Mal ist i gleich 1 und so weiter.

Das Selbe machen wir in Zeile 10 nochmal, damit wir auch die ganzen Spalten durchgehen. Diese werden in der Variable j gespeichert. In Zeile 11 müssen wir dann nur noch die .pixel()-Funktion aufrufen und übergeben dann die x und y Koordinaten, die in den Variablen i und j gespeichert sind. Als dritten Parameter wird dann noch der Zufallsgenerator übergeben.

Damit der Spaß auch nicht zu schnell zu Ende ist, übergeben wir in Zeile 12 zusätzlich noch eine kleine Pause. Die Pausenzeiten kannst du natürlich auch noch weiter variieren und auf deine eigenen Bedürfnisse anpassen.

Von der Kunst zum Bild

Jetzt haben wir uns genug mit der Kunst beschäftigt. Natürlich können wir auch selbst eigene Bilder erstellen. Eine Möglichkeit dafür ist das Benutzen von multidimensionalen Listen. Während eine Liste so aufgebaut ist:

liste = [1,5,2]

gibt es hier noch eine Dimension mehr:

mListe = [[1,2], [5,4]]

Dabei gilt das gleiche Nummerierungsprinzip. Heißt, print[liste[1]) gibt 5 aus. Weil es das zweite Element ist. (Auch hier wird bei 0 angefangen zu zählen). print(mListe[1]) gibt [5,4] aus und print(mListe[1][1]) gibt 4 aus. Diese multidimensionale Liste eignet sich auch perfekt, um viele x und y Koordinaten zu speichern. So haben wir auch unsere Krake nachgebaut.



import max7219.led as led
import time

device = led.matrix()

krake = [[2,1],[3,1],[4,1],[5,1],
    [1,2],[3,2],[4,2],[6,2],
    [1,3],[2,3],[3,3],[4,3],[5,3],[6,3],
    [1,4],[3,4],[4,4],[5,4],[6,4],
    [1,5],[6,5],
    [1,6],[2,6],[3,6],[4,6],[5,6],[6,6],
    [0,7],[1,7],[3,7],[4,7],[6,7],[7,7]]

for i in krake:
    device.pixel(i[0],i[1],1)

Damit die Krake leserlich bleibt, haben wir für jede Zeile auf der Matrix eine neue Zeile im Code gemacht. In Zeile 14 und 15 geben wir diese dann aus. Über die uns schon bekannte for-Schleife gehen wir zuerst jede Unterliste durch und nehmen dann in Zeile 15 mit i[0] und i[1] die Koordinaten für Krake. Am Ende kommt dann unser Logo raus. Sieht ein wenig pixelig aus, hat dafür aber auch seinen ganzen eigenen Charme.

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!