display

9. LED-DISPLAY

 

 

DU LERNST HIER...

 

wie du auf dem LED-Display einzelne Punkte, Figuren, Zahlen und Texte anzeigst.

 

 

KOORDINATENSYSTEM, DIMMEN

  Das Modul oxocard verwendet die Klasse OxoGrid, die das Display als Softwareobjekt modelliert.

Die 64 Farb-LEDs (Neopixels) des Displays sind in einer 8x8 Matrix angeordnet und über ihre x- und y-Koordinaten einzeln ansprechbar. Beispielsweise kannst du mit

dot(x, y, color)

die LED an der Position x, y mit der gegebenen Farbe einschalten. color ist die RGB-Farbe und wird als Farbtupel (r, g, b) mit den Farbwerten für rot, grün und blau im Bereich 0..255 angegeben.

 
Du kannst alle LEDs mit dem Befehl clear() ausschalten oder mit dem Befehl clear(color) alle LEDs auf die angegebene Farbe setzen.

Die LEDs leuchten sehr stark, was störend sein kann, wenn du die Oxocard nicht in der Kartonbox eingebaut hast. Mit dem Befehl dim(20) kannst du die Helligkeit generell um den Faktor 20 reduzieren. Damit kannst du bis auf diesen Befehl alle Programme unverändert für eine eingebaute oder nicht-eingebaute Karte verwenden.

 

 

MUSTERBEISPIELE

 

Einzelne LEDs einschalten


Dein Programm soll alle LEDs der Reihe nach einschalten. Ist die x-Koordinate grösser als die y- Koordinate, ist die LED- rot, sonst grün. Damit man das Zeichnen besser verfolgen kann, wird mit dem Befehl sleep(0.1) die Programmausführung in der Wiederholschleife um 0.1 Sekunden angehalten.
 



Programm:

from oxocard import *

for y in range(8):
    for x in range(8):  
        if x > y:
            dot(x, y, RED)
        else:
            dot(x, y, GREEN)        
        sleep(0.1)
► In Zwischenablage kopieren


Schachbrett zeichnen

Mit nur wenigen Programmzeilen kannst du ein Schachbrettmuster zeichnen, indem du überlegst, dass für die weissen Zellen die Summe s = x + y der Koordinaten gerade und für die blauen Zellen ungerade ist.

 

In Python liefert s % 2 den Rest, den es bei der (ganzahligen) Division durch 2 gibt. Für gerade Zahlen ist also s % 2 =  0.

 

 

 


Du durchläufst mit zwei ineinandergeschachtelten for-Schleifen zeilenweise das Display und setzt die Farbe entsprechend auf weiss oder blau.

Programm:

from oxocard import *

for y in range(8):
    for x in range(8):  
        if (x + y) % 2 == 0 :
            dot(x, y, BLUE)
        else:
            dot(x, y, WHITE)  
► In Zwischenablage kopieren

 

Figuren zeichnen

Mit der Funktion rectangle(ulx, uly, w, h, color) kannst du ein Rechteck mit gegebener oberen linken Ecke ulx, uly mit Breite w und Höhe h und der gegebenen Farbe zeichnen. In deinem Beispiel zeichnest du vier konzentrisch angeordnete Quadrate in verschiedenen Farben.

 

 

Zur Einsparung von Hauptspeicherplatz enthält der Import from oxocard import * Funktionen, die spezielle Figuren darstellen, nicht. Um diese zu verwenden muss du den Import from oxocardext import * verwenden. In der Dokmentation sind alle Funktionen, die diesen Import benötigen mit "*" markiert.

Programm:

from oxocardext import *
   
rectangle(0, 0, 8, 8, RED)
rectangle(1, 1, 6, 6, GREEN)
rectangle(2, 2, 4, 4, BLUE)
rectangle(3, 3, 2, 2, YELLOW)
► In Zwischenablage kopieren

Aus der Dokumentation kannst du entnehmen, dass das Modul oxocard auch Befehle für das Zeichnen von Linien, Kreisen und Pfeilen enthält.

 

 

MERKE DIR...

 

Wenn du das Modul oxocard importierst, stehen dir Befehle zum Anzeigen von Punkten, Rechtecken, Kreisen, Linien, Pfeilen, Buchstaben und Zahlen zur Verfügung. Wenn du mehrere Zeichenoperationen durchführst, so werden diese übereinander gezeichnet. Um das Display zu löschen, rufst du clear() auf. Mit clear(color) kannst du auch alle Pixel auf die Farbe color setzen.

 

 

ZUM SELBST LÖSEN

 

 

1.

Ergänze den folgenden Programmcode, so dass die LEDs wie in der Vorlage in den Farben CYAN, YELLOW und MAGENTA leuchten.

from oxocard import *

for y in range(8):
    for x in range(8):  
        if 
            
        elif    
            
        else:
            dot(x, y, MAGENTA)            
        sleep(0.1)
 

2.

Verwende den Befehl

fillRectangle(x, y, collor),

wo (x, y) die Koordinaten des linken unteren Eckpunktes sind, um die nebenstehende Figur zu zeichnen.



3.

Mit dem Befehl arrow(x, y, dir, length, color) kannst du
einen Pfeil zeichnen. (x, y) ist der Anfangspunkt. Die Richtung dir hat die Werte 0: Ost, 1: Nord-Ost, 2: Nord, 3: Nord-West, 4: West, 5: Süd-West, 6: Süd, 7: Süd-Ost).
Lasse einen Pfeil mit Anfangspunkt (3,3) in 45-Schritten im Uhrzeigersinn rotieren (endlos).