TigerJython xx
für Gymnasien
Deutsch   English 

Doc mbRobot, MaqueenPlus und MaqueenPlusV2


Modul mbrobot / mbrobot_plus / mbrobot_plusV2
Modul import: from mbrobot import * / from mbrobot_plus import * /from mbrobot_plusV2 import *
(Real- und Simultionsmodus)

Funktion Aktion
forward() setzt den mbRobot in Vorwärtsbewegung
backward() setzt den mbRobot in Rückwärtsbewegung
left() setzt dem mbRobot in eine Linksdrehung
right() setzt dem mbRobot in eine Rechtsdrehung
leftArc(radius) setzt den mbRobot auf eine Linkskurve mit gegebenem Radius (in m)
rightArc(radius) setzt den mbRobot auf eine Rechtskurve mit gegebenem Radius (in m)
stop() stoppt die Bewegung
setSpeed(speed)

setzt die Geschwindigkeit für die Bewegungen (10 < speed<100), standard 50

calibrate(offset, differential, arcScaling)

kalibriert Motoren, fallsr Roboter nicht geradeaus fährt
offset: minimal Power der Motoren (-10 bis 50)
differential: regelt Links- bzw. Rechtsdrall (-150 bis 150), bei Linsdrall < 0, bei Rechtsdrall > 0
arcScalling: regelt den Radius bei leftArc() und rightArc() (-50 bis 50), falls Radius zugross > 0, falls Radius zu klein < 0

setPID(1) [nur mbrobot_plus]

reduziert die Geschwindigket, der Roboter bewegt sich langsamer
(im Schritttempo)

setPID(0) [nur mbrobot_plus]

PID wird ausgeschaltet, Roboter bewegt sich mit geg. Geschwindigkeit

getDistance() liefert die Distanz (in cm, ungefähr im Bereich 2..200) gemessen mit dem Ultrasonic-Sensor (255: Fehlmessung)
irLeft.read_digital(), irRight.readDigital() Infrarotsensoren liefern 1, falls helle Unterlage; 0, falls dunkle Unterlage.
Maqueen PlusV2 verfügt über 5 IR-Sensoren (irL1, irR1, irL2, irR2, irM)
Maqueen Plus über 6 IR-Sensoren ((irL1, irR1, irL2, irR2, irL3, irR3)
mit irX.read_digital() geben die Sensoren die Werte0 bzw. 1 zurück
setLED(1) Schaltet beide LEDs ein
Beim mbRobot_plus sind verschiedene Farben möglich (1:rot, 2:grün, 3:blau, 4:gelb, 5:pink, 6:cyan, 7:weiss)
setLED(0) Schaltet beide LEDs aus
ledLeft.write_digital(n), ledRight.write_digital(n)

Schaltet die linke bzw. rechte LED ein (n = 1) oder aus (n = 0)
mbRobot_plus: n = 1, 2, 3, 4, 5, 6 oder 7

setAlarm(1) Schaltet Alarm ein (Pipton)
setAlarm(0) Schaltet Alarm aus
setServo(S, angle) Dreht den am Port S1 oder S2 (bzw. P1 oder P2) angeschlossenen Servomotor an die gegebene Winkelposition. (0 <= angle <= 180)
playTone(freq, duration) Spielt einen Ton gegebener Frequenz und Dauer
RobotContext.
enableTrace(True) [nur S]
Soboter hinterlässt Spuren
RobotContext.
enableRotCenter(True) [nur S]
Zeichnet bei Bewegungen auf einem Kreisbogen das Rotationszentrum
RobotContext.
useBackground("sprite") [nur S]
Fügt ein Hintergrundbild für die Simulation mit Licht- oder Colorsensoren hinzu
RobotContext.
setStartPosition(x, y) [nur S]
Setzt den simulierten Roboter an die Position (x, y) im Grafikfenster
RobotContext.
setStartDirection(w) [nur S]
Bestimmt die Startrichtung (0: osten, 90: norden, 180: westen, 270: süden)
RobotContext.
useObstacle("sprite", x, y) [nur S]
Fügt ein Bild mit Transparrenten Hintergrund an die Position x,y hinzu
setBeamAreaColor() [nur S] Setzt die Farbe der Strahlbereichsgrenzen
setProximityCircleColor() [nur S] Setzt die Farbe des Suchkreises
setMeshTriangleColor() [nur S] Füllfarbe der Maschen
eraseBeamArea() [nur S] Löscht die Strahlbereichsgrenzen


Modul mbrobotmot / mbrobot_plus (Motoren einzeln schalten)
(Real- und Simulationsmodus)
Modul import: from mbrobotmot import * / from mbrorobot_plus import *

motL, motR Linker und rechter Motor
motX.rotate(speed) Setzt den linken- bzw. rechten Motor in Bewegung mit der Rotationsgeschwindigkeit speed. Für speed > 0 vorwärts, für speed < 0 rückwärts, speed = 0 stopt die Rotation

 

Direkte Funktionsaufrufe
Modul import: from microbit import *

Funktion Aktion
delay(dt) hält das Programm während dt Millisekunden an
sleep(dt) hält das Programm während dt Millisekunden an
running_time() gibt die Zeit in Millisekunden zurück, seit das Board eingeschaltet oder resetted wurde
panic(n) blockiert das System und zeigt endlos ein "Trauriggesicht" gefolgt von n (für Entwickler)
reset() startet das System neu (führt main.py aus)
temperature() gibt die Temperatur in Grad Celsius zurück (als Float)


Klasse Button

(Real- uns Simulationsmodus)
button_a Objektreferenz (Instanz) des Buttons A
button_b Objektreferenz (Instanz) des Buttons B

Methoden:
is_pressed() gibt True zurück, falls der Button beim Aufruf gedrückt ist; andernfalls False
was_pressed() gibt True zurück, falls der Button seit dem letzten Aufruf (oder dem Start des Programms) gedrückt wurde. Ein erneuter Aufruf gibt False zurück, bis der Button wieder gedruckt wird
get_presses() gibt die Anzahl Tastenbetätigungen seit dem letzten Aufruf (oder dem Start des Programms) zurück. Ein erneuter Aufruf gibt 0 zurück, bis die Taste wieder betätigt wird


Beispiel:
if button_a.was_pressed():
     mache_etwas

Bemerkung:
Im Simulationsmodus drückt man einen Button mit der linken Maustaste. Betätigt man die rechte Maustaste, so wird der Button im gedrückten Zustand gehalten, bis man wieder mit einer Maustaste drückt. Damit kann man das gleichzeitige Drücken der Tasten simulieren.



Klasse Display
(Real- und Simulationsmodus)
display Objektreferenz (Instanz)

Methoden:
set_pixel(x, y, value) setzt die Intenistät des Pixels an der Position x, y. value ist im Bereich 0..9
clear() löscht alle Pixels
show(str) schreibt str auf dem LED-Display aus. Enthält dieser mehrere Zeichen, so werden diese in Laufschrift angezeigt, die auf dem letzten Zeichen stehen bleibt
show(list_of_img, delay = 400, loop = False, wait = True, clear = False) zeigt alle Images der Liste nacheinander an. Falls loop = True ist, wird die Anzeigesequenz endlos wiederholt. Für wait = True ist die Methode blockierend, andernfalls kehrt sie zurück und die Anzeige erfolge im Hintergrund. delay ist die Anzeigezeit pro Bild in Millisekunden (default: 400). Für clear = True wird die Anzeige nach dem letzten Bild gelöscht
show(img) zeigt das img auf dem LED-Display. Ist img grösser als 5x5 pixels, so wird der Bereich x, y = 0..4 angezeigt. Ist img kleiner als 5x5 pixels, sind die fehlenden Pixels ausgeschaltet
scroll(str) zeigt str als Laufschrift. Das letzte Zeichen verschwindet (blockierende Methode)
scroll(str, delay = 150, loop = False, wait = True, monospace = False) zeigt str als Laufschrift. Falls loop = True ist, wird die Anzeigesequenz endlos wiederholt. Für wait = True ist die Methode blockierend, andernfalls kehrt sie zurück und die Anzeige erfolge im Hintergrund. delay ist die Anzeigezeit pro Spalte in Millisekunden (default: 150)

Beispiele:

display.show("A")
display.scroll("Hallo")
display.show([Image.HAPPY, Image.SAD])





Klasse Image
(Real- und Simulationsmodus)
Image(str)

erzeugt eine Objektreferenz (Instanz). str hat das Format "aaaaa:bbbbb:ccccc:ddddd:eeeee:", wo a eine Zahl im Bereich 0..9 ist, welche die Intensität des Pixels angibt. a sind die Werte für die erste Zeile, b für die zweite, usw.

Image() erzeugt eine Objektreferenz (Instanz) mit 5x5 ausgeschalteten Pixels
Image(width, height) erzeugt eine Objektreferenz (Instanz) mit der gegebenen Zahl horizontaler und vertikaler Pixel, die alle ausgeschaltet sind (value = 0)

Methoden:
set_pixel(x, y, value) setzt die Intenistät des Pixels an der Position x, y. value ist im Bereich 0..9
fill(value) gibt ein Image-Objekt zurück, bei dem alle Pixel den gegebenen Wert haben (value = 0..9)
get_pixel(x, y) gibt die Intensität des Pixels an der Position x, y
shift_left(n) gibt ein Image-Objekt zurück, das um n Spalten nach links verschoben ist
shift_right(n) gibt ein Image-Objekt zurück, das um n Spalten nach rechts verschoben ist
shift_up(n) gibt ein Image-Objekt zurück, das um n Zeilen nach oben verschoben ist
shift_down(n) gibt ein Image-Objekt zurück, das um n Zeilen nach unten verschoben ist
copy() gibt einen Klone des Image zurück
invert() gibt ein Image-Objekt mit invertieren Pixels zurück (new_value = 9 - value)
crop(x, y, w, h) gibt einen Bildausschnitt der Breite w und Höhe h zurück. Die obere linke Ecke entspricht dem Pixel x, y des Originalbildes
dest.blit(img, x, y, w, h, xdest, ydest) kopiert vom gegebenen img einen rechteckigen Bereich an der Position x, y mit Breite w und Höhe h in das Image dest an der Stelle xdest, ydest

Operationen:
image_new = image * n gibt ein Image-Objekt zurück, bei dem alle Pixel-Intensitäten mit dem Faktor n multipliziert sind
image_new = image1 + image2 gibt ein Image-Objekt zurück, bei dem die Intensitäten der Pixel von image1 und image2 addiert wurden

Vordefinierte Objekte:

  • Image.HEART
  • Image.HEART_SMALL
  • Image.HAPPY
  • Image.SMILE
  • Image.SAD
  • Image.CONFUSED
  • Image.ANGRY
  • Image.ASLEEP
  • Image.SURPRISED
  • Image.SILLY
  • Image.FABULOUS
  • Image.MEH
  • Image.YES
  • Image.NO
  • Image.CLOCK12, Image.CLOCK11, Image.CLOCK10, Image.CLOCK9, Image.CLOCK8, Image.CLOCK7, Image.CLOCK6, Image.CLOCK5, Image.CLOCK4, Image.CLOCK3, Image.CLOCK2, Image.CLOCK1
  • Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E, Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW, Image.ARROW_W, Image.ARROW_NW
  • Image.TRIANGLE
  • Image.TRIANGLE_LEFT
  • Image.CHESSBOARD
  • Image.DIAMOND
  • Image.DIAMOND_SMALL
  • Image.SQUARE
  • Image.SQUARE_SMALL
  • Image.RABBIT
  • Image.COW
  • Image.MUSIC_CROTCHET
  • Image.MUSIC_QUAVER
  • Image.MUSIC_QUAVERS
  • Image.PITCHFORK
  • Image.XMAS
  • Image.PACMAN
  • Image.TARGET
  • Image.TSHIRT
  • Image.ROLLERSKATE
  • Image.DUCK
  • Image.HOUSE
  • Image.TORTOISE
  • Image.BUTTERFLY
  • Image.STICKFIGURE
  • Image.GHOST
  • Image.SWORD
  • Image.GIRAFFE
  • Image.SKULL
  • Image.UMBRELLA
  • Image.SNAKE
  • Listen: Image.ALL_CLOCKS, Image.ALL_ARROWS

Bemerkung:
Ein MicroBitImage Objekt (kurz ein "Image") ist eine Abstraktion eines realen Pixelbildes und wird erst sichtbar, wenn display.show(img) aufgerufen wird. Das Image kann eine beliebige Zahl horizontaler und vertikaler Pixels (w, h) haben, aber es werden mit show(img) nur die Pixels im Bereich x = 0..4, y = 0..4 angezeigt. (Ist das Image kleiner, so sind die nicht definierten Pixels dunkel.) Für grössere Images kann blit() verwendet werden, um einen Teilbereich auszuschneiden.

Beachte, dass ausser set_pixel() und blit() die Methoden das Image selbst nicht verändern, sondern ein neues Image zurückgeben. Um img zu verändern, muss es also neu zugewiesen werden.

Beispiele:
img = Image(2, 2)
img = img.invert()
display.show(img)



Klasse MicroBitTouchPin
(Real- und Simulationsmodus)
pin0, pin1, pin2, pin8, pin12, pin16 Instanzen für allgemeines Digital-in/Digital-out
pin0, pin1, pin2 Instanzen für Analog-in/Analog-out (PWM)
pin3, pin4, pin6, pin7, pin9, pin10 Instanzen vordefiniert für LED display (display mode)
pin5, pin11 Instanzen vordefiniert für Button A, B (button mode)
pin13, pin14, pin15 Instanzen vordefiniert für SPI (spi mode)
pin19, pin20 Instanzen vordefiniert für I2C (i2c mode)

Methoden:
read_digital() gibt True zurück, falls Pin auf logisch 1 (HIGH) ist; gibt False zurück, falls Pin auf logisch 0 (LOW) ist (Pulldown 10 kOhm)
write_digital(v) falls v = 1, wird der Pin auf logisch 1 (HIGH) gesetzt; fals v = 0, wird der Pin auf logisch 0 (LOW) gesetzt (max. Strom: 5 mA)
read_analog() gibt Wert des ADC im Bereich 0..1023 zurück (Eingangsimpedanz: 10 MOhm)
write_analog(v) setzt den PWM Duty Cycle (v = 0..1023 entsprechend 0..100%) (max. Strom: 5 mA)
set_analog_period(period) setzt die PWM-Periode in Millisekunden
set_analog_period_microseconds(period) setzt die PWM-Periode in Mikrosekunden (> 300)



Klasse Accelerometer
(Real- und Simulationsmodus)
accelerometer Objektreferenz (Instanz)

Methoden:
get_x(), get_y(), get_z() gibt die Beschleunigung in x-, y- oder z-Richtung zurück (int, Bereich ca. -2047 bis +2048, entsprechend ungefähr -20 m/s^2 bis +20 m/s^2, die Erdgeschleunigung von ungefähr 10 m/s^2 wird mitgezählt). x-Richtung: ButtonA-ButtonB; y-Richtung: Pin2-USB; z-Richtung: Normale zu Board
get_values() gibt ein Tupel mit den Beschleunigungen in x-, y- oder z-Richtung zurück (Einheit wie oben)
current_gesture() gibt die aktuelle Geste zurück. Folgende Gesten werden erkannt: " up", " down", " left", " right", " face up", " face down", " freefall", " 3g", " 6g", " 8g", " shake"
is_gesture(name) gibt True zurück, falls die aktuelle Geste gleich name ist
get_gestures()) gibt eine Tupel mit den zuletzt gemachten Gesten zurück. Die letzte Geste ist am Ende des Tupels. Löscht zudem die Gestenhistorie
was_gesture(name) gibt True zurück, falls sich name in der Gestenhistorie befindet


Klasse Compass
(Realmodus)
compass Objektreferenz (Instanz)

Methoden:
calibrate() startet eine blockierende Kalibrierungsroutine, die für genaue Messungen nötig ist. Man muss den micro:bit in verschiedenen Richtungen schief stellen, so dass der blinkende Punkt die Randpixel erreicht und diese anzündet. Erst wenn eine Kreisfigur erstellt ist, fährt das Programm weiter
is_calibrated() gibt True zurück, falls der Sensor kalibriert wurde
clear_calibration() setzt den Sensor auf den nicht-kalibrierten Zustand zurück
heading() gibt den aktuellen Winkel des micro:bit zur Nordrichtung (Grad, int)
get_x(), get_y(), get_z() gibt den aktuellen Wert der x, y oder z-Komponente des Magnetfeldes an der Stelle des Sensors zurück (int, Mikrotesla, keine Kalibrierung nötig)
get_values() gibt ein Tupel der x-, y- und z-Komponenten des Magnetfeldes an der Stelle des Sensors zurück (int, Mikrotesla, keine Kalibrierung nötig)


Klasse NeoPixel
(Realmodus)
Modul import: from neopixel import *)
np = NeoPixel(pin, n)

erzeugt eine Neopixel Objekt (Instanz) mit n Neopixels, die an den gegebenen Pin angeschlossen sind. Jeder Pixel wird durch seine Position adressiert (beginnend bei 0) und seine Farbe wird durch eine Zuweisung eines RGB-Tubels bestimmt, z.B. np[2] = (0, 100, 255) setzt Pixel # 2 auf Rot = 0, Grün = 100, Blue = 255. show() muss aufgerufen werden, damit die Änderung sichbar wird.

(Strips mit WS2812 LEDs unterstützt.)


Methods:
clear()

löscht alle Pixels

show() zeigt die Pixels an. Muss bei jeder Änderung der Farbwerte aufgerufen werden, damit diese sichbar ist

 

Modul music

(Realmodus)
Modul import: from music import *
Funktionen:
set_tempo(bpm = 120) setzt die Anzahl Beats pro Minute (default: 120)
pitch(frequency, len, pin = microbit.pin0, wait = True) spielt einen Ton mit gegebener Frequenz in Hertz während der gegebenen Zeit in Millisekunden. pin definiert den Output-Pin am GPIO-Stecker (default: P0). Falls wait = True, ist die Funktion blockierend; sonst kehrt sie zurück, während der Ton weiter spielt (bis die Abspieldauer erreicht ist oder stop() aufgerufen wird)
play(melody, pin = microbit.pin0, wait = True, loop = False) spielt eine Melodie mit dem aktuellen Tempo.). pin definiert den Output-Pin am GPIO-Stecker (default: P0). Falls wait = True, ist die Funktion blockierend; sonst kehrt sie zurück, während die Melodie weiter spielt (bis die Abspieldauer erreicht ist oder stop() aufgerufen wird). Falls loop = True, wird die Melodie endlos erneut abgespielt
stop(pin = microbit.pin0) stoppt alle Sound-Ausgaben am gegebenen GPIO-Pin (default: P0)

Bemerkungen:
Eine Melodie ist eine LIste mit Strings in folgendem Format: ["note:dauer", "note:dauer",...]
note in musikalischer Notation: c, d, e, f, g, a, h mit optionaler Octavezahl (default: 1): z.B.. c2, d2, ... und optionalem Versetzungszeichen (Halbtonkreuz): c#, d#,... oder c#2, d#2,...
dauer in Anzahl Ticks (optional, defaut: 1)

Vordefinierte Melodien:

  • ADADADUM - Eröffnung von Beethoven’s 5. Sinfonie in C Moll
  • ENTERTAINER - Eröffnungsfragment von Scott Joplin’s Ragtime Klassiker “The Entertainer”
  • PRELUDE -Eröffnung des ersten Prelude in C Dur von J.S.Bach’s 48 Preludien und Fugen
  • ODE - “Ode an Joy” Thema aus Beethoven’s 9. Sinfonie in D Moll
  • NYAN - das Nyan Cat Thema
  • RINGTONE - ein Klingelton
  • FUNK - ein Geräusch für Geheimagenten
  • BLUES - ein Boogie-Woogie Blues
  • BIRTHDAY - “Happy Birthday to You...”
  • WEDDING - der Chorus des Bräutigams aus Wagner’s Oper “Lohengrin”
  • FUNERAL - der “Trauerzug”, auch bekannt als Frédéric Chopin’s Klaviersonate No. 2 in B♭Moll
  • PUNCHLINE - a lustiger Tonclip, nachdem ein Witz gemacht wurde
  • PYTHON - John Philip Sousa’s Marsch “Liberty Bell”, ein Thema aus “Monty Python’s Flying Circus”
  • BADDY - Filmclip aus "The Baddy "
  • CHASE - Filmclick aus einer Jagdszene
  • BA_DING - ein Signalton, der darauf hinweist, dass etwas geschehen ist
  • WAWAWAWAA - ein trauriger Posaunenklang
  • JUMP_UP - für Spiele, um auf eine Aufwärtsbewegung hinzuweisen
  • JUMP_DOWN - für Spiele, um auf eine Abwärtsbewegung hinzuweisen
  • POWER_UP - ein Fanfarenklang, der darauf hinweist, dass etwas erreicht wurde
  • POWER_DOWN - ein trauriger Fanfarenklang, der darauf hinweist, dass etwas verloren gegangen ist



Modul radio:
(Realmodus)
Modul import: from radio import *

Computerkommunikation über Bluetooth

Funktionen:
on() schaltet die Bluetooth-Kommunikation ein. Verbindet mit einem micro:bit mit eingeschaltetem Bluetooth
off() schaltet die Bluetooth-Kommunikation aus
send(msg) sendet eine String-Message in den Messagebuffer des Empfängerknotens (First-In-First-Out, FIFO-Buffer)
msg = receive()

gibt die älteste Message (string) des Messagebuffers zurück und entfernt sie aus dem Buffer. Falls der Buffer leer ist, wird None zurückgegeben. Es wird vorausgesetzt, dass die Messages mit send(msg) gesendet wurden, damit sie sich in Strings umwandeln lassen [sonst wird eine ValueError Exception ("received packet is not a string") geworfen]

send_bytes(msg_bytes) sendet eine Message als Bytes (Klasse bytes, e.g b'\x01\x48') in den Messagebuffer des Empfängerknotens (First-In-First-Out, FIFO-Buffer)
receive_bytes()

gibt die älteste Message (bytes) des Messagebuffers zurück und entfernt sie aus dem Buffer. Falls der Buffer leer ist, wird None zurückgegeben. Zum Senden muss send_bytes(msg) verwendet werden (und nicht send(msg))

 

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

makeGlow() erzeugt einen sichtbaren Leuchtkäfer mit Position (0, 0), Richtung Norden, Spur sichtbar. Koordinatensystem: -2 <=x <=2 (+ nach rechts), -2 <= y <= 2 (+ nach oben). (0, 0) auf mittlerem Pixel
forward() bewegt den Leuchtkäfer um einen Schritt vorwärts
back() bewegt den Leuchtkäfer um einen Schritt rückwärts
left(angle) dreht die Bewegungsrichtung um 45 Grad-Schritte nach links (angle = 45, 90, 135, 180, 215, 270, 315)
right(angle) dreht die Bewegungsrichtung um 45 Grad-Schritte nach rechts (angle = 45, 90, 135, 180, 225, 270, 315)
setPos(x, y) setzt den Leuchtkäfer auf Position (x, y)
getPos() gibt die aktuelle Position des Leuchtkäfers als Tupel zurück
setSpeed() setzt die Geschwindigkeit für die Bewegungen (0..100)
clear() löscht alle eingeschalteten Pixels. Der Leuchtkäfer bleibt an der aktuellen Position (unsichtbar)
hide() macht den Leuchtkäfer für die nächsten Bewegungen unsichtbar
show() macht den Leuchtkäfer an der aktuellen Position und für die nächsten Bewegungen sichtbar
showTrace(enable) macht die Spur für die nächsten Bewegungen (Pixel an besuchten Stellen) sichtbar/unsichtbar
isLit() gibt True zurück, falls das Pixel an der Stelle des Leuchtkäfers eingeschaltet ist

Modul clap
(Mini:Maqueen Rover, eingebautes Mikrophon am Port 2)
Modul import: from clap import *

wait_for_clap(timeout = 1000, sensitivity = 75) wartet auf ein einzelnes Klatschen. Kehrt nach dem angegebenen Timeout (in ms) zurück, wenn kein Klatschen detektiert wurde. sensitivity im Bereich 0..100
wait_for_double_clap(timeout = 1000, spread = 500, sensitivity = 75) wartet auf ein Doppelklatschen. Die beiden Klatschen müssen innerhalb des spread-Intervalls erfolgen (in ms). Kehrt nach dem angegebenen Timeout (in ms) zurück, wenn kein Doppelklatschen detektiert wurde. sensitivity im Bereich 0..100


Modul linkup
(ESP32 Coprozessor am I2C-Port)
Modul import: from linkup import *

connectAP(ssid, password)

verbindet mit dem bestehenden Access-Point (Hotspot, Router) mit ssid und password. Gibt die erhaltene gepunktete IP-Adresse zurück; leer, falls das Einloggen misslingt

 

createAP(ssid, password) erzeugt einen Access-Point mit ssid und password. Falls password leer ist, ist der AP offen, d.h. man kann sich ohne Authentifikation einloggen
httpGet(url) führt einen HTTP GET Request durch und liefert den Response zurück. url in der Form "http://<server>?key=value&key=value&..." Statt http kann auch https verwendet werden
httpPost(url, content) führt einen HTTP POST Request durch und liefert den Response zurück. url in der Form "http://<server>". content im Format "key=value&key=value&..." Statt http kann auch https verwendet werden
httpDelete(url) führt einen HTTP DELETE Request mit der gegebenen Ressource (Dateiname) aus
startHTTPServer(handler)

startet einen HTTP Server (Webserver auf Port 80), der auf HTTP GET Requests hört. Bei einem GET Request wird die benutzerdefinierte Callbackfunktion handler(clientIP, filename, params) aufgerufen.

clientIP: gepunktete IP-Adresse des Clients
filename: Dateiname der URL mit vorgestelltem "/". Fehlt der Dateiname: "/"
params: Dictionary mit den GET Request Parametern {key: value}.

Beispiel: Für die URL http://192.168.0.101/on?a=ok&b=3 ist filename = "/on" und params = {"a" : "ok", "b" : "3"}

Rückgabe:
- ein einzelner Wert (String, Float, Integer): dieser wird unverändert an den Browser zurückgesendet. Es kann sich um eine HTML-Webpage handeln oder um einen einzelnen Float/Integer. Die Webpage darf nicht länger als 250 Zeichen sein
- ein Tupel oder eine Liste. Die darin enthaltenden Werte werden in die %-Formatangaben der vorher mit saveHTML() gespeicherten HTML-Standarddatei eingebaut und an den Browser zurückgesendet
- keiner: Es wird die vorher mit saveHTML() gespeicherte HTML-Textdatei unverändert an den Browser zurückgesendet
Alle HTTP-Replies werden mit einem Header 200 OK versehen.
Die Funktion ist blockierend. Um wieder in den Kommandomodus zu kommen, muss der Micro:LinkUp neu gebootet werden

saveHTML(text) liefert die GET Request Parameter als Dictionary zurück {key : value}
sendReply(reply) speichert den Text auf dem LinkUp als eine HTML-Standarddatei. Sie kann %-Formatangaben enthalten, die mit den Rückgabewerten der Callbackfunktion handler ersetzt werden. Ist text leer, so wird die Standarddatei gelöscht


Modul mqtt
(Micro:LinkUp ESP32 coprocessor breakout am I2C-Port)
Modul import: import mqtt

Funktion Aktion

mqtt.connectAP(ssid, password)

verbindet mit dem bestehenden Access-Point (Hotspot, Router) mit ssid und password. Gibt die erhaltene gepunktete IP-Adresse zurück; leer, falls das Einloggen misslingt

mqtt.broker(host, port = 1883,
user = "", password = "", keepalive = 0)

legt die Eigenschften des Brokers fest (IP-Adresse, IP-Port und falls nötig Authentifizierungsangaben). keepalive legt fest, wie lange die Verbindung ohne Datenaustausch offen bleibt (in sec) (default ist abhängig vom Broker). Es wird noch keine Verbindung zum Broker hergestellt
mqtt.connect(cleanSession = True) erstellt eine Verbindung zum Broker. Für cleanSession = True, werden alle früheren Daten gelöscht. Gibt True zurück, falls die Verbindung zustande gekommen ist
mqtt.ping() sendet einen Ping-Request an den Server, damit dieser die Verbindung offen hält
mqtt.publish(topic, payload, retain = False, qos = 0) sendet zum gegebenen Topic eine Message (payload). 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 erfolgreich; andernfalls False
mqtt.subscribe(topic, qos = 0 abonniert das gegebene Topic mit dem gegegeben qos level (nur 0, 1 unterstützt). Es werden maximal 50 erhaltende Message-Tupels (topic, payload) in einem Messagebuffer der Reihe nach gespeichert (maximale Längen topic: 50, payload: 200 bytes)
topic, payload = mqtt.receive() holt das erste Element des Messagebuffers (das "älteste") als Tupel (topic, payload) zurück und entfernt das Element aus dem Buffer. Falls keine Daten im Buffer sind, wird (None, None) zurückgegeben. Die Pollperiode sollte mindestens 1 sec betragen
mqtt.disconnect() schliesst die Verbindung


Modul ntptime
(using Micro:LinkUp ESP32 coprocessor as I2C slave)
(Modul import: import ntptime)

ntptime.getTimeRaw(server = "pool.ntp.org"

gibt die aktuelle Datumzeit zurück, die vom gegebenen Server abgegeben wurde. Format: Tupel (yyyy, mm, dd, h, m, s, week_day, day_of_year) alles Ints. Zeit ist GMT
ntptime.getTime(server = "pool.ntp.org") dasselbe, aber es wird ein formatierter String zurückgegeben (Beispiel: "Tu 2019-06-11 13:04:44 GMT")


Modul sht

(Sensirion Temperatur- und Luftfeuchtesensor am I2C-Port)
Modul import: import sht

sht.getValues() gibt ein Tupel mit Temperatur (in Grad Celsius) und Luftfeuchtigkeit (in Prozent) zurück


Modul sgp
SGP30 Air Quality Sensor (Co2-Sensor am I2C-Port)
Modul import: import sgp

sht.getValues() gibt ein Tupel mit CO2-Konzentration (in ppm) und TVOC (Total Volantile Organic Compunds) zurück. Der Sensor wird auf CO2=400 kalibriert, Bei Werten höber als 1000 ist die Luftqualität schlecht und eine Lüftung dringend notwendig. I2C-Adresse (SGP30: 0x58)


Modul mcp9808

(Microchip Temperatursensor am I2C-Port)
(Modul import: from mcp9808 import MCP9808)

mcp = MCP9808()

erzeugt eine Sensorinstanz
mcp.temperature() gibt die Temperatur (in Grad Celsius) zurück



Realtime Clock (RTC)

(RTC Clock Modul DS3231 am I2C-Port (Adresse 0x68))
Modul import: import rtc

Funktion Aktion
rtc.set(yy, mm, dd, h, m, s, w) setzt Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag (üblich 0: Montag)
rtc.set([yy, mm, dd, h, m, s, w]) dasselbe mit Liste (oder Tupel)

rtc.get()

gibt ein Tupel (yy, mm, dd, h, m , s, w) zurück (alles ints)


Siebensegmentanzeige (4 Ziffern mit TM1637 Driver)
Modul import:
from mb7seg import FourDigit
from mb7segmin import FourDigit, reduziertes Modul, falls Memory overflow, nur (*)

Klasse FourDigit

Funktion Aktion
(*) disp = FourDigit(clkPin = pin1, dioPin = pin2, lum = 4) erzeugt eine Displayinstanz für einen Display, der an den gegebenen Pins angeschlossen ist. Anzeigehelligkeit 0..9

disp.erase()

löscht den Display
(*) disp.show(text, pos = 0) zeigt den Text beginnend an Position 0 (Ziffer ganz links) an. Der Text kann mehr als 4 Zeichen enthalten. text kann auch ein Integer sein
disp.scroll(text) zeigt den Text als Lauftext an
disp.toRight() verschiebt den Text um eine Stelle nach rechts
disp.toLeft() verschiebt den Text um eine Stelle nach links
disp.start() setzt den Text an die Startposition
disp.setLuminosity(lum) setzt die Helligkeit (0..9)
(*) disp.setColon(enable) aktiviert/deaktiviert den Doppelpunkt


Modul bme280

(Temperatur-, Luftfeuchtesensor und Luftdrucksensor von Bosch am I2C-Port)
Modul import: from bme280 import BME280

bme = BME280()

erzeugt eine Sensorinstanz
bme.temperature() gibt die Temperatur (in Grad Celsius) zurück
bme.humidity() gibt die Luftfeuchtigkeit (in Prozent) zurück
bme.pressure() gibt den Luftdruck (in hPa) zurück
bme.altitude() gibt die Höhe über Meer (mit Luftdruck 1013.25 hPa auf Meereshöhe) zurück
bme.all() liefert Temperatur, Luftdruck, Luftfeuchtigkeit, Höhe über Meer gleichzeiig in einem Tupel
bme.set_qnh() setzt den Luftdruck auf Meereshöhe (in hPa)


Modul tcs34725
(RGB Color Sensor am I2C-Port)
Modul import: from tcs34725 import ColorSensor

cs = ColorSensor() erzeugt eine Sensorinstanz
cs.getRGB() gibt ein Tupel mit den 3 RGB-Werten (je im Bereich 0...255) zurück
cs.getLum() gibt die Helligkeit im Bereich 0..65565 zurück

 

pModul touchbitp
(Remote Control Module "TouchBit")
Modul import: from touchbit import *

registerCallbacks(buttonPress = None, buttenRelease = None, buttonRepeat = None) registriert Callbackfunktionen, die beim entsprechenden Event aufgerufen werden, falls die Funktion pollButtons() durchlaufen wird
pollButtons() muss periodisch aufgerufen werden, damit die Callbacks aktiv sind
onButtonEvent(btn, down) Signatur des Callbacks
Beispiel:
def onButtonPressed(btn):
    print("Button", btn, "pressed")

def onButtonReleased(btn):
    print("Button", btn, "released")

def onButtonRepeated(btn):
    print("Button", btn, "repeated")

registerCallbacks(onButtonPressed, onButtonReleased, onButtonRepeated)     
while True:
    pollButtons()
    sleep(50)

 

Modul time
Modulimport: import time

Funktion Aktion
time.time()

Gibt die aktuelle Zeit in Sekunden an