Card10: Auf die Hardware der card10 zugreifen

Aus xinux.net
Zur Navigation springen Zur Suche springen

Die auf MicroPy basierende Firmware der card10, Pycardium, beinhaltet eine Modulbibliothek mit deren Modulen sich die einzelnen Bauteile, welche an den Microcontroller angeschlossenen, ansteuern lassen:

LEDS

Auf der card10 befinden sich mehrere LED:

  • 4 RGB LED an jeweils einer der Ecken

Cornerleds2.jpg

  • 11 RGB LED über dem Display

Rowleds.jpg

  • 3 einfarbige sogenannte Rocket-LED in den Farben Rot, Grün und Blau.

Cornerleds.jpg

Um die LED anzusteuern muss zuerst das Modul "leds" aus der Python Bibliothek importiert werden. Das macht man mit dem Befehl:

import leds

Nun kann man die LEDS direkt mittels dem passenden Befehl ansteuern:

leds.set(led,color=(r,g,b))

Beispiel:

leds.set(5, color=(255,0,0))

lässt die LED mit der ID 5 Rot aufleuchten.

Die ID der LEDS sind wie folgt aufgeteilt:

  • 0 - 10 : LED Reihe über dem Display
  • 11 - 14 : Die vier LED in den Ecken der card10

Die als Rocked-LED bezeichneten LED werden mit dem Befehl

leds.set_rocket(led,wert)

angesteuert. Der „led“ Parameter steht hierbei für die entsprechende LED (0 – 2). Der „wert“ Parameter bestimmt die Helligkeit der aktivierten LED (0 – 31).

Beispiel:

leds.set_rocket(0,31)

Das Beispiel lässt die blaue LED mit der maximalen Helligkeit leuchten.

Weitere Befehle zur LED Steuerung sind:

leds.clear()

Schaltet alle RBG LED ab.

leds.dim_top(wert)

Legt die Helligkeit der oberen LED fest. Der Parameter „wert“ reicht dabei von 1 (Standard) bis 8 (sehr hell). Als obere LED gelten die LED in den Ecken oben links und rechts, sowie die LED Reihe über dem Display.


leds.dim_bottom(wert)

Legt die Helligkeit der unteren LED fest. Der Parameter „wert“ reicht dabei von 1 (Standard) bis 8 (sehr hell). Als untere LED gelten die zwei LED an den beiden unteren Ecken der card10


leds.gay(wert)

Lässt die RGB LED Reihe über dem Display in Regenbogenfarben leuchten. Der „wert“ Parameter gibt dabei das Offset des Farbspektrums an.

Display

Die Display-Klasse erlaubt es auf das LCD-Display der card10 zuzugreifen um Grafik oder Text darzustellen. Um sie zu nutzen muss man sie zuerst importieren. Das geschieht mit dem Befehl:

import display

Mit

display.open()

initialisiert man das Display um ihm dann Anweisungen zu geben(Text darstellen oder Pixel plazieren).

display.open().update()

aktualisiert man das Display um die vorher eingegebenen Befehle

display.close()

schließt das Display und gibt die Ressourcen die es belegt hat frei. Vergleichbar mit dem schließen einer Datei.

Display.open().print(‚text‘, fg=(r,g,b), bg=(r,b,g),posx=0,posy=0, font=3)

gibt einen bei „text“ eingebenen String aus. Zu beachten ist das die Parameter optional sind also auch weggelassen werden können. Lässt man sie weg, werden Standardwerte genommen. Die Parameter (ausser dem selbsterklärenden „text“) sind: fg = Textfarbe (standard schwarz)

bg = Hintergrundfarbe mit der der Text unterlegt wird (standard transparent)

posx = Position auf der x-Achse auf der der erste Buchstabe des Textes dargestellt wird (Standard ist 0, Bereich 0 - 159)

posy = Position auf der y-Achse auf der der erste Buchstabe des Textes dargestellt wird (Standard ist 0, Bereich 0 - 79)

font = Der Schriftsatz welcher für den Text verwendet wird. (Standard ist 4)

display.open().pixel(x,y,col=(r,g,b))

erstellt man einen Pixel. X = X Koordinate an der er erstellt wird. (Bereich 0 – 159)

Y = Y Koordinate an der er erstellt wird. (Bereich 0 – 79)

col = Legt die Farbe des Pixels fest (r,g,b)

display.open().line(xs, ys,xe,ye,col(r,g,b),dotted=False,size=1)

erstellt man eine Linie

XS = x-Start Koordinate der Linie (Bereich 0 – 159)

YS = y-Start Koordinate der Linie (Bereich 0 – 79)

XE = x-End Koordinate der Linie (Bereich 0 – 159)

YE = y-End Koordinate der Linie (Bereich 0 – 79)

col = Legt die Farbe der Linie fest (r,g,b)

dotted = Bestimmt ob die Linie gestrichelt ist oder nicht. Dies wird erreicht indem jeder zweite Pixel weiß dargestellt wird. Bei einer weißen Linie wird jeder zweite Pixel etwas größer dargestellt.

size = Bestimmt die Dicke der Linie (Bereich 1 – 8)

display.open().rect(xs,ys,xe,ye,col=(r,g,b),filled=True,size=1)

erstellt man ein Rechteck

XS = x-Start Koordinate der Linie (Bereich 0 – 159)

YS = y-Start Koordinate der Linie (Bereich 0 – 79)

XE = x-End Koordinate der Linie (Bereich 0 – 159)

YE = y-End Koordinate der Linie (Bereich 0 – 79)

col = Legt die Farbe der Linie fest (r,g,b)

filled = bestimmt ob das Rechteck ausgefüllt wird (True - False)

size = bestimmt die Dicke der Linie mit der das Rechteck gezeichnet wird (Bereich 1 – 8)

display.open().circ(x,y,rad,col=(r,g,b),filled=True,size=1)

erstellt man einen Kreis

X = x Koordinate für den Kreismittelpunkt (Bereich 0 – 159)

Y = y Koordinate für den Kreismittelpunkt (Bereich 0 – 79)

rad = bestimmt den Radius des Kreises

col = Legt die Farbe des Kreises fest (r,g,b)

filled = bestimmt ob das Kreis ausgefüllt wird (True - False)

size = bestimmt die Dicke der Linie mit der das Kreis gezeichnet wird (Bereich 1 – 8)

Die Knöpfe

An der card10 befinden sich insgesamt 4 Knöpfe. Zwei auf jeder Seite.

Knopf rechts oben: Der Power Button. Wird der Power Button länger als 6 Sekunden gedrückt schaltet er die card10 aus. Ein kurzer Druck versetzt sie in den sleep-Modus oder stoppt ein laufendes Script.

Knopf unten rechts: Der Up Button. Sollte programmiert werden um in Menüs die Auswahl nach oben zu verschieben.

Knopf oben links: Der Select Button. Sollte programmiert werden um eine Auswahl zu bestätigen.

Knopf unten links: Der Down Button. Sollte programmiert werden um in Menüs die Auswahl nach unten zu verschieben.

Die Bezeichnung der Knöpfe und ihre Funktion in dieser Aufzählung ist rein willkürlich gewählt. Im Grunde genommen kann man die Buttons nach eigenem Belieben programmieren so dass sie Funktionen übernehmen, welche zu dem Script was man erstellt hat passen.

Das Modul um auf die Knöpfe zugreifen zu können importiert man mit

import buttons

Die Abfrage der Buttons geschieht über eine sogenannte Maskierung. Vereinfacht ausgedrückt ist erlaubt eine Maskierung es, ein Array auf einfache Weise mit einem gegebenen Wert zu vergleichen und je nach Abfrageergebnis die gewünschten Daten aus dem Array zu extrahieren. In unserem Fall bezieht sich die Abfrage darauf welcher Knopf gedrückt wird.

Mit

buttons.read(buttons.BOTTOM_LEFT | buttons.BOTTOM_RIGHT)

zum Beispiel startet man die Abfrage der unteren beiden Knöpfe. Zu beachten ist dabei dass der buttons Befehl Case Sensitive ist. Weiterhin sollte der Befehl in einer Schleife laufen wenn man ihn sinnvoll nutzen möchte da ansonsten nur ein mal für wenige Millisekunden abgefragt wird.