Oxocard-Doc

Dokumentation OXOcard


Modul import: from oxosnake import *
(Real- und Simulationsmodus)

(Bemerkung: Wegen beschränktem Speicher können nicht gleichzeitig oxosnake und oxocard, oxocardext importiert werden.)

Globale Konstanten und Funktionen:
RED = (255, 0, 0), GREEN = (0, 255, 0), BLUE = (0, 0, 255), BLACK = (0, 0, 0), WHITE = (255, 255, 255),
YELLOW = (255, 255, 0), CYAN = (0, 255, 255), MAGENTA = (255, 0, 255)

BASE_COLORS = (RED, GREEN, BLUE, WHITE, YELLOW, CYAN, MAGENTA)

Funktion Aktion
makeSnake() erzeugt eine Schlange und stellt sie dar. Diese besitzt einen Kopf (head) und einen nachfolgenden Schwanz (tail)), der beliebig lang sein kann

makeSnake(name = "Monty", size = 4, pos = (1. 4), headColor = (255, 0, 0), tailColor = (0, 200, 0), penColor = (0, 0, 255), bgColor = (0, 0, 0), heading = 0, speed = 50, hidden = False, penDown = False, dim = 1)

optionale benannte Parameter und ihre Standardwerte (heading: Winkel in Grad zu Norden im Uhrzeigersinn in 45 Grad Schritten)

forward(steps)

bewegt die Schlange um die Anzahl Schritte vorwärts. Ohne Parameter steps = 1

left(angle)

ändert die Blickrichtung um gegebenen Winkel im Gegenuhrzeigersinn (in 45 Grad Schritten)

right(angle)

ändert die Blickrichtung um gegebenen Winkel im Uhrzeigersinn (in 45 Grad Schritten)

getName()

liefert den Namen der Schlange zurück

setName(name)

setzt den Namen der Schlange

setSpeed(speed)

setzt die Geschwindigkeit

getX()

gibt die x-Koordinate des Kopfs zurück

getY()

gibt die y-Koordinate des Kopfs zurück

getPos(x, y)

gibt die Position des Kopfs als Tupel zurück

setPos(x, y)

setzt den Kopf an die gegebene Position (Parallelverschiebung des Schwanzes)

setPos(liste)

setzt den Kopf an die gegebene Position

setHeading(dir)

setzt die Blickrichtung. Winkel zu Norden im Uhrzeigersinn in 45 Grad Schritten

getHeading()

gibt die Blickrichtung zurück. Winkel zu Norden im Uhrzeigersinn in 45 Grad Schritten

penDown()

setzt den Stift beim Kopf ab, sodass bei nachfolgenden Bewegungen eine Spur gezeichnet wird

penUp()

hebt den Stift ab, sodass keine Spur gezeichnet wird

show()

macht die Schlage ist sichtbar

hide()

macht die Schlage unsichtbar (sie ist immer noch vorhanden und eine Spur wird immer noch gezeichnet)

isHiden()

gibt True zurück, falls die Schlange unsichtbar ist

clean()

löscht alle Spuren, lässt aber die Schlage, wo sie ist

getSize()

liefert die Länge der Schlange (Kopf + Schwanz)

setHeadColor(color)
setHeadColor(r, g, b)

setzt die Kopffarbe

setTailColor(color)
setTailColor(r, g, b)

setzt die Schwanzfarbe

setPenColor(color)
setPenColor(r, g, b)

setzt die Spurfarbe

setBgColor(color)
setBgColor(r, g, b)

setzt die Hintergrundfarbe

shortenTail()

schneidet das letzte Schwanzelement ab (falls die Schlange länger als 1 ist)

growTail()

Fügt ein zusätzliches Schwanzelement an (erst sichtbar bei der nächsten Bewegung)

intersect()

gibt True zurück, falls sich der Kopf auf einem der Schwanzelemente befindet; sonst wird False zurückgegeben

inPlayground()

gibt True zurück, falls sich eines der Schlangenelement noch im sichtbaren Bereich befindet,: sonst wird False zurückgegeben

headInPlayground()

gibt True zurück, falls sich der Schlangenkopf noch im sichtbaren Bereich befindet,: sonst wird False zurückgegeben

spot(color)
spot(r, g, b)

setzt den Pixel des Hintergrunds an der aktuellen Position des Schlangenkopfs auf die gegebene Farbe. Die Schlange liegt "oberhalb", d.h. verdecken die so gesetzten Pixels

dot(x, y, color)
dot(x, y, r, g, b)

setzt den Pixel des Hintergrundes an der Position (x, y) auf die gegebene Farbe. Die Schlange liegt "oberhalb", d.h. verdeckt die so gesetzten Pixel

getRandomColor()

gibt eine zufällige Farbe aus BASE_COLORS zurück. Bei jedem Aufruf wird eine andere Farbe zurückgegeben, bis alle 7 Farben abgerufen sind

getRandomPos()

gibt eine zufällige Position als Tupel zurück. Bei jedem Aufruf wird eine andere Position zurückgegeben, bis alle 64 Positionen abgerufen sind.

reduceBrightness(color, reduction)

dividiert alle 3 Farbkomponenten um den Faktor r und gibt die neue Farbe zurück. Falls eine Komponente grösser als 0 ist, wird mindestens 1 zurückgegeben, damit die Farbart erhalten bleibt

rgbToInt(color)

gibt das gegebenen RGB-Tupel als Int-Farbwert zurück

intToRGB(color)

gibt den gegebenen Int-Farbwert als RGB-Tupel zurück

dim(dimFactor)

dividiert die 3 Farbkomponenten mit den gegebenen Factor (falls eine Komponente > 0 ist, wird sie nie kleiner als 1, damit die Farbart erhalten bleibt)

enableRepaint(False)

unterdrückt das automatische Rendern des Bildbuffers nach jeder Schlangenbewegung. Es muss mit repaint() selbst gerendert werden. forward(n) mit n > 1 wird als nicht mehr als n Einzelschritte aufgefasst

repaint()

rendert den aktuellen Bildbuffer

dispose()

gibt alle Ressourcen frei und vergrössert dadurch den freien Speicherplatz


Klasse Snake
Es können mehrere Schlangen erzeugt werden. Die zuletzt bewegte Schlange liegt über den anderen und ist vollständig sichtbar.

Funktion Aktion
snake = Snake(name = "Monty", size = 4, pos = (1. 4), headColor = (100, 0, 5), tailColor = (0, 70, 5), penColor = (0, 0, 30), bgColor = (0, 0, 0), heading = 0, speed = 50, hidden = False, penDown = False, dim = 1)

erzeugt ein Snakeobjekt mit den optionalen benannten Paramatern

Alle oben angegebene Funktionene sind auch als Methoden verfügbar. Zusätzlich:

in Touch(nake1, snake2)

gibt True zurück, falls ein Segment der Schlange snake1 und ein Segment der Schlange snake2 übereinander liegen


Modul import: from oxocard import *
(Real- und Simulationsmodus)

(Bemerkung: Zur Einsparung von Hauptspeicherplatz enthält dieser Import die unten mit (*) bezeichneten Funktionen nicht. Für die volle Unterstützung muss importiert werden: from oxocardext import * . Dabei kann es aber bei längeren Programmen einen Memory overflow geben.)

Die Oxocard hat einen 8x8 pixel grosse Matrix mit Farb-LEDs (Neopixels). Diese wird durch die Klasse abstrahiert, die einen 24x24 pixel grossen Bildbuffer (Canvas genannt) mit int Farbwerten für die Farbkomponenten r, g, b mit je einem Bereich von 0..255 enthält.

Es wird ein 8x8 pixel grosser Ausschnitt davon (Window genannt) auf den LEDs dargestellt. Canvas und Window haben ein Koordinatensystem, um die einzelnen Pixel zu identifizieren. Der Ursprung liegt bei beiden oben links und die x-Koordinatenachse zeigt nach links und die y-Koordinatenachse nach unten.

Standardmässig liegt der Ursprung des Koordinatensystem beim (x', y') = (8, 8) also ist das Windows im Canvas zentriert. Mit setOrigin(x, y) kann der Ursprung (Origin) des Windows an die Stelle (x, y) des Canvas verschoben werden.

Die Koordinaten für alle Zeichnungsoperationen sind zwar Windowkoordinaten, werden aber unter Berücksichtigung des aktuellen Origin im Canvas durchgeführt. Canvas-Koordinaten ausserhalb 0..23, 0.23 werden ignoriert.

 

 

Damit stehen im Canvas insgesamt 9 8x8 pixel grosse Bildbereiche (engl Frames) zur Verfügung, die sich im Window darstellen lassen. Die Frames haben eine Nummerierung von 0..7.

Grundsätzlich werden alle Zeichnungsoperation im Bildbuffer ausgeführt. Damit sie auch tatsächich auf dem Neopixel-Display sichtbar werden, muss der Bildbuffer auf den LEDs angezeigt werden, was man rendern nennt.

Das Rendering wird mit der Methode repaint() durchgeführt. Standardmässig ist das automatische Rendering eingeschaltet. Dabei wird bei jeder Zeichnungsoperation das repaint() automatisch aufgerufen.

Oft möchte man bestimmte Zeichnungsoperationen zusammenfassen, bevor man sie als Ganzes sichtbar macht. Dazu schaltet man mit enableRepaint(False) das automatische Rendering aus und führt es an der gewünschten Stelle mit repaint() selbst aus. Es darf ausserhalb des Canvas gezeichnet werden, wobei solche Pixels unsichtbar bleiben.

 

Globale Konstanten und Funktionen::

RED = (250, 0, 0), GREEN = (0, 250, 0), BLUE = (0, 0, 250), BLACK = (0, 0, 0), WHITE = (255, 255, 255),
YELLOW = (255, 255, 0), CYAN = (0, 255, 255), MAGENTA = (255, 0, 255)

BASE_COLORS = (RED, GREEN, BLUE, WHITE, YELLOW, CYAN, MAGENTA)

Funktion Aktion

clear(), clear(color)

setzt alle Pixels des Canvas auf die Farbe color. Ohne Parameter werden alle Pixels gelöscht (color = BLACK)

*clearWindow(), *clearWindow(color)

setzt den Bereich des Canvas, über dem das aktuelle Window liegt,  auf die Farbe color. Ohne Parameter werden die Pixels gelöscht (color = BLACK)

*clearFrame(frameNumber)
*clearWindow(frameNumber, color)

setzt die Pixels des gegebenen Frames auf color. Ohne Parameter werden die Pixels gelöscht (color = BLACK)

setOrigin(x, y)

setzt den Ursprung des Windows auf x, y (auch Punktliste/Tupel). x, y sind positive oder negative Integers. Liegen die Pixels ausserhalb des 24x24 pixel-Bereichs, sind die Pixels schwarz

getOrigin()

gibt den Origin als Tupel zurück

*setFrame(frameNumber)

setzt das Window auf das gegebene Frame

dim(dimFactor)

vermindert die Farbwerte aller Pixels um den gegebenen Faktor. Falls eine gegebene Komponente > 0 ist, wird die reduzierte Farbkomponente nicht kleiner als 1, damit die Farbart erhalten bleibt

enableRepaint(False)

deaktiviert das automatische Neuzeichnen (Rendering) des Windows

repaint()

zeichnet das Window neu

dot(x, y, color)

setzt ein einzelnes Pixel des Canvas an der Position x, y auf die gegebene Farbe

*line(x, y, dir, length, color)

zeichnet eine Linie beginnend an der Position x, y in der gegebenen Richtung mit gegebener Länge und Farbe (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)

*arrow(x, y, dir, length, color)

zeichnet einen Pfeil beginnend an der Position x, y in der gegebenen Richtung mit gegebener Länge und Farbe (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)

*rectangle(ulx, uly, w, h, color)

zeichnet ein Rechteck mit gegebener oberen linken Ecke ulx, uly mit Breite h und Höhe h in der gegebenen Farbe

*fillRectangle(ulx, uly, w, h, color)

zeichnet ein gefülltes Rechteck mit gegebener oberen linken Ecke ulx, uly mit Breite h und Höhe h in der gegebenen Farbe

*circle(xcenter, ycenter, r, color)

zeichnet einen approximativen Kreis mit gegebenem Zentrum xcenter, ycenter und Radius r in der gegebenen Farbe

*fillCircle(xcenter, ycenter, r, color)

zeichnet einen approximativen gefüllten Kreis mit gegebenem Zentrum xcenter, ycenter und Radius r in der gegebenen Farbe

getColor(x, y)

gibt den Farbwert des Canvas an der Stelle (x, y) zurück. Befindet sich (x, y) ausserhalb des Canvas, wird (0, 0, 0) (BLACK) zurückgegeben

getColorInt(x, y)

gibt den Farbwert des Canvas an der Stelle (x, y) zurück (als Integer). Befindet sich (x, y) ausserhalb des Canvas, wird zurückgegeben

image(matrix)

setzt die Pixels aus der gegebenen Pixelmatrix im Bildbuffer ein. Die Einsetzung beginnt beim aktuellen Origin. matrix ist eine Liste oder ein Tupel in folgendem Format:
((c00, c01, c02,.. c07),
(c10, c11, c12,.. c17),
...
(c70, c71, c72,.. c77))
wo c die Farbwerte sind (als RGB-Tupel oder als Farb-Integer

*translate(vector)

verschiebt die Pixels des ganzen Canvas um den gegebenen Verschiebungsvektor. Pixels, die von ausserhalb hineingeschoben werden, sind schwarz

*rotate(centerx, centery, angle)

dreht die Pixel des Canvas mit dem gegebenen Rotationsmittelpunkt (Windowkoordianten) um den gegeben Winkel (in Grad im Uhrzeigersinn). Pixels, die von ausserhalb hineingeschoben werden, sind schwarz

insertBigChar(char, charColor, bgColor)

stellt  ein Zeichen mit Zeichen- und Hintergrundfarbe mit grossem Font dar.  Defaults: charColor = (255, 255, 255), bgColor = (0, 0, 0)

display(chars, charColor, bgColor)

stellt bis maximal zwei Zeichen von chars mit Zeichen- und Hintergrundfarbe dar  (Zahlen werden in Strings umgewandelt). Wird ein negativer Integer übergeben, erscheint ein Minuszeichen unter der linken Ziffer. Defaults: charColor = (255, 255, 255), bgColor = (0, 0, 0)

bigTextScroll(text, textColor, bgColor, speed)

zeigt mit grossem Font einen nach links scrollenden Text mit gegebener Zeichen- und Hintergrundfarbe an. Dieser wird mit einer einstellbaren Geschwindigkeit im Bereich 1..12 verschoben. Defaults: textColor = (255, 255, 255), bgColor = (0, 0, 0), speed = 6)

smallTextScroll(text, textColor, bgColor, speed)

zeigt mit kleinem Font einen nach links scrollenden Text mit gegebener Zeichen- und Hintergrundfarbe an. Dieser wird mit einer einstellbaren Geschwindigkeit im Bereich 1..12 verschoben. Defaults: textColor = (150, 150, 150), bgColor = (0, 0, 0), speed = 5)

getArray()

gibt den 24x24 pixel Canvas als Tupel mit Zeilentupels der Farbwerte zurück

rgbToInt(color)

gibt das gegebenen RGB-Tupel als Int-Farbwert zurück

intToRGB(color)

gibt den gegebenen Int-Farbwert als RGB-Tupel zurück

reduce(color, r)

dividiert alle 3 Farbkomponenten um den Faktor r und gibt die neue Farbe zurück. Falls eine Komponente grösser als 0 ist, wird mindestens 1 zurückgegeben, damit die Farbart erhalten bleibt

getRandomColor()

gibt eine zufällige Farbe aus BASE_COLORS zurück. Bei jedem Aufruf wird eine andere Farbe zurückgegeben, bis alle 7 Farben abgerufen sind

getRandomPos()

gibt eine zufällige Position als Tupel zurück. Bei jedem Aufruf wird eine andere Position zurückgegeben, bis alle 64 Positionen abgerufen sind.

dispose()

gibt alle Ressourcen frei und vergrössert dadurch den freien Speicherplatz


Modul import: from oxobutton import *
(Real- und Simulationsmodus)

Tasten Identifikationen: BUTTON_L1, BUTTON_L2, BUTTON_L3, BUTTON_R1, BUTTON_R2, BUTTON_R3

Funktion Aktion
button = Button(buttonID)    erzeugt einen Button mit gegebener ID
button = Button(buttonID, callback)    erzeugt einen Button mit gegebener ID  und einer Callbackfunktion
button.isPressed() liefert True, falls der Button momentan gedrückt ist; sonst False
button.wasPressed() liefert True, falls der Button seit dem letzten Aufruf geklickt wurde; sonst False


Modul import: from oxoaccelerometer import *
(Real- und Simulationsmodus, im Simulationsmodus muss auch das Modul oxocard importiert werden)

Funktion Aktion
acc = Accelerometer.create()    erzeugt einen Sensor mit Standardwerten: trigger_level = 10, rearm_time = 0.2,  single-click auf allen 3 Achsen und keinem Callback und gibt seine Referenz zurück
acc = Accelerometer.create(callback) dasselbe unter Angabe einer Callbackfunktion
acc = Accelerometer.create(callback, trigger_level = 10, rearm_time = 0.2, click_config = SINGLE_CLICK_X | SINGLE_CLICK_Y | SINGLE_CLICK_Z)   

dasselbe mit benannten Parametern:
trigger_level ist der Triggerpegel im Bereich 1..100 (willkürliche Einheiten), der überschritten werden muss, damit ein Click-bzw. Double-Clickevent registriert wird (kleinere Werte machen den Sensor also empfindlicher) (default: 10)
rearm_time ist die Zeit in Sekunden, während der der Sensor inaktiviert wird, bis er wieder Clickevents registriert (default: 0.2)
Mit click_config kann die Triggerart konfiguriert werden. Or-Kobination von  Accel.SINGLE_CLICK_X
Accel.SINGLE_CLICK_Y
Accel.SINGLE_CLICK_Z
Accel.DOUBLE_CLICK_X
Accel.DOUBLE_CLICK_Y
Accel.DOUBLE_CLICK_Z  

acc.get() gibt ein Tupel mit 3 Float-Werten der Beschleunigungskomponenten (acc_x, acc_y, acc_z) zurück (in m/s^2 im Bereich +-2g)
acc.getX() gibt die x-Komponente der Beschleunigung zurück  (in m/s^2 im Bereich +-2g)
acc.getY() gibt die y-Komponente der Beschleunigung zurück (in m/s^2 im Bereich +-2g)
acc.getZ() gibt die z-Komponente der Beschleunigung zurück (in m/s^2 im Bereich +-2g)
acc.getRoll() gibt den Drehwinkel bei einer Seitwärtsdrehung (in Grad im Bereich -90° bis +90°)
acc.getPitch() gibt den Drehwinkel beim Kippen nach vorne, bzw. nach hinten (in Grad im Bereich -90° bis +90°)
acc.wasClicked() gibt True zurück, falls der Sensor seit dem letztem Aufruf einen Clickevent erfahren hat; sonst False
acc.getTemperature() gibt die Temperatur des Chips zurück (in Grad Celsius, Genauigkeit +- 2 degC)
acc.dispose() gibt alle Ressourcen frei


Modul import: from tcpcom import *
(nur Realmodus)

Klasse Wlan (alle Methoden static):

Funktion Aktion
Wlan.connect(ssid, pwd, timeout = 10, verbose = False) verbindet mit einem Accesspoint (Hostspot, WLAN Router) mit gegebenen SSID und Passwort. Gibt True zurück, falls die Verbindung innerhalb des gegebenen Timeout (in sec) gelingt; sonst wird False zurückgegeben. Mit verbose = True werden Debuginformationen ausgeschrieben
Wlan.isWlanConnected() gibt True zurück, falls eine Verbindung zum Accesspoint besteht
Wlan.getIfConfig() gibt ein Tupel (IP_address, mask, gateway_ip) zurück; None, falls keine Verbindung besteht
Wlan.getMyIPAddress() gibt die IP-Adresse zurück, die der Accesspoint vergeben hat; leerer String, falls keine Verbindung besteht
Wlan.scan() gibt ein Tupel mit Netzwerkinfos über alle gefundenen Accesspoints zurück. Format: ssid (string), channel (int), rssi Signalstärke in dB (int)
Wlan.activateAP(ssid = "ESP", password = "aabbaabbaabb", channel = 10, verbose = False) aktiviert einen Accesspoint mit gegebenen SSID, Passwort und Kanal (1..13). Für password = "" (leer) ist der Zugang passwortfrei

 

Modul import: from mqttclient import MQTTClient
(nur Realmodus)

Klasse MQTTClient (abgeleitet von umqtt.simple.MQTTClient)
(siehe: http://github.com/micropython/micropython-lib/tree/master/umqtt.simple)

Funktion Aktion
client = MQTTClient(host, port = 0,
user = None, password = None)
erzeugt einen MQTT Client unter Angabe der Broker IP- Adresse. Falls nötig, werden die mitgegebenen Authentifizierungsangaben verwendet. Die Verbindung wird noch nicht hergestellt
client.connect(cleanSession = True) erstellt eine Verbindung zum Broker. Falls cleanSession = True ist, werden alle vorher gesendeten Daten des gleichen Clients gelöscht
client.ping() sendet einen Ping-Request an den Server, damit dieser die Verbindung offen hält
client.publish(topic, payload, retries = 10, retain = False, qos = 0) sendet zum gegebenen Topic eine Message (payload). Falls die Verbindung nicht mehr offen ist, wird so oft ein neues connect() gemacht, bis die Zahl retries erreicht ist. Falls retain = True wird diese Message als die letzte  good/retain Message betrachtet. qos ist der Quality of  Service level (nur 0, 1 unterstützt). Gibt True zurück, falls das Publish erfolgreich war; False, falls die Verbindung nicht mehr aufgebaut werden konnte
client.setCallback(onMessageReceived) registriert die Callbackfunktion onMessageReceived(), die beim Erhalt einer Message aufgerufen wird (Funktionsname beliebig)
onMessageReceived(topic, payload) oben registrierte Callbackfunktion mit den Parametern topic und payload (type: string)
client.subscribe(topic, qos = 0 abonniert das gegebene Topic mit dem gegegeben qos level (siehe bei publish())
client.disconnect() schliesst die Verbindung und beendet den internen Subscriber Poll Thread

 

Modul import: from music import*
(nur Realmodus)

Funktion Aktion
playTone(frequency, duration)

spielt einen Ton mit gegebener Frequenz (in Hz) und Dauer (in ms) ab. Frequenzbereich: ca. 100 - 1500 Hz. Die Frequenz kann auch in Notennotation (als String) angegeben werden: 'r', 'C', 'C#', 'D'...,'c', c#, d...,'c2','c2#','d2'...,'c3'.  'r' ist eine Pause, 'C' Beginn der Oktave mit 131 Hz, 'c' Beginn der Oktave bei 262 Hz, 'c2' Beginn der Oktave bei 523 Hz, 'c3': 1046 Hz. Hinter der Notenangabe kann ein Doppelpunkt und ein Verlängerungsfaktor für die Dauer angegeben werden. Beispiel einer Notensequenz:
('c2:3', 'g', 'f#', 'g', 'g#:3', 'g', 'r', 'h:2', 'c2')

Die Funktion blockiert, bis der Ton fertig gespielt ist
playSong(song, duration = 150) spielt die Töne in der Notenliste (oder Tupel) song mit gegebener Dauer duration ab.
beep(n, frequency = 1000) spielt n kurze Tonsignale mit gegebener Frequenz ab

Vordefinierte Songs:
ENTERTAINER, RINGTONE, BIRTHDAY, JUMP_UP, JUMP_DOWN, DADADADUM, POWER_UP, POWER_DOWN, PUNCHLINE, WEDDING, BOOGYWOODY, PRELUDE

 

Modul import: from utils import *
(nur Realmodus)

Klasse Vektor
Funktion Aktion
a = Vector(x, y)

erzeugt ein 2-dimensionales Vektorobjekt mit gegebenen Koordinaten

a = Vector((x, y)) dasselbe mit gegebenem Koordinatentupel (oder Liste).
a = Vector() dasselbe mit den Koordinaten (0, 0)
c = a.add(b) gibt einen neuen Summenvektor der beiden Vektoren a und b zurück
c = a.sub(b) gibt einen neuen Differenzvektor der beiden Vektoren a und b zurück
c = a.mult(k) gibt einen neuen Vektor mit skalarer Multiplikation zurück
print(a) schreibt die Komponenten aus
a[0], a[1] Komponenten in Indexschreibweise (lesend und schreibend)



Klasse I2C_com

(nur Realmodus)

Funktion Aktion
i2c = I2C_com(i2c_address, scl = Pin(22), sda = Pin(21)

erzeugt ein I2C-Schnittstellenobjekt mit gegebener I2C-Adresse an den gegebenen Pins für SCL und SDA

i2c.readReg(cmd) liest ein einzelnes Byte an der gegebenen Registeradresse cmd (int) (Rückgabewert: int)
i2c.writeReg(cmd, data) schreibt ein Datenbyte data (int) an der gegebenen Registeradresse cmd (int)
i2c.readBlock(cmd, len) liest eine Folge von Bytes beginnend bei der gegebenen Registeradresse cmd (int). Rückgabewert: Liste mit ints
i2c.writeBlock(cmd, data) schreibt eine Folge von Bytes beginnend bei der gegebenen Registeradresse cmd (int). data ist eine Liste mit ints
i2C_com.dispose() gibt den I2C-Port wieder frei (für alle Geräte)

from machine import Pin, I2C
i2c = I2C(scl = Pin(21), sda = Pin(22))
devices = i2c.scan()
liefert alle I2C-Geräteadressen, die an den gegebenen Pins für SCL und SDA angeschlossen sind.