Dokumentation micro:bit

Modul import: from microbit import *

Direkte Funktionsaufrufe
Funktion Aktion
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)
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
temperature() gibt die Temperatur in Grad Celsius zurück (als Float)




Klasse MicroBitButton
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 Ture 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



Klasse MicroBitDisplay
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 MicroBitImage
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
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)
fill(value) gibt ein Image-Objekt zurück, bei dem alle Pixel den gegebenen Wert haben (value = 0..9)
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:

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
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 MicroBitAccelerometer
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)




Klasse MicroBitCompass
compass Objektreferenz (Instanz)

Methods:
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
(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
(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:



Modul radio:
(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 mbutils:
(Modul import: from mbutils import *)

Helper module for Kitronik buggy

Funktionen:
mot_rot(mot, speed) lässt den Motor vorwärts (speed > 0) oder rückwärts (speed < 0) laufen. mot = motL oder motR, speed = 0..100
buggy_setSpeed(speed) setzt Geschwindigkeit des Buggy (beide Motoren) im Bereich 0..100, default: 40
buggy_forward(speed) lässt Buggy vorwärts laufen, speed = 0..100
buggy_backward(speed) lässt Buggy rückwärts laufen, speed = 0..100
buggy_stop() stoppt Buggy
buggy_left() dreht Buggy nach links (rechter Motor vorwärts, linker Motor rückwärts)
buggy_right() dreht Buggy nach rechts (linker Motor vorwärts, rechter Motor rückwärts)
buggy_leftArc(reduce) dreht Buggy auf Linkskreis; reduce = 0..1: Faktor, um den linker Motor langsamer läuft
buggy_rightArc(reduce) dreht Buggy auf Rechtskreis; reduce = 0..1: Faktor, um den rechter Motor langsamer läuft
isDark(ldr) True, falls Linesensor ldr dunkel ist (ldr = ldrL oder ldrR)