Modul callibot
(Real- und Simultionsmodus [S])
Modul import: from callibot import *
Funktion | Aktion |
forward() | setzt den Roboter in Vorwärtsbewegung |
backward() | setzt den Roboter in Rückwärtsbewegung |
left() | setzt dem Roboter in eine Linksdrehung |
right() | setzt dem Roboter in eine Rechtsdrehung |
leftArc(radius) | setzt den Roboter auf eine Linkskurve mit gegebenem Radius (in m) |
rightArc(radius) | setzt den Roboter auf eine Rechtskurve mit gegebenem Radius (in m) |
stop() | stoppt die Bewegung |
setSpeed() | setzt die Geschwindigkeit für die Bewegungen (0..100), standard 50 |
getDistance() | Ultraschallsensor liefert die Distanz (in cm, Bereich 2..150). Falls kein Objekt detektiert: 255 (Simulation -1) |
irLeftValue(), irRightValuel() | Infrarotsensoren liefern 1, falls helle Unterlage; 0, falls dunkle Unterlage |
setLED(1) | Schaltet beide LEDs ein |
setLED(0) | Schaltet beide LEDs aus |
setLEDLeft(n), setLEDRight(n) | Schaltet LEDs ein (n = 1) oder aus (n = 0) |
setServo(port, angle) | Dreht den am Port S1 oder S2 angeschlossenen Servomotor an die gegebene Winkelposition. (0 <= angle <= 180) |
tsValue() | liefert 1, falls beide Touchsensoren gedrückt sind |
tsLeftValue(), tsRightValue() | liefert 1, falls der linke bzw. rechte Touchsensor gedrückt ist |
RobotContext. enableTrace(True) [nur S] |
Roboter 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 |
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 |
Modul cbalarm (Alarm ein- und ausschaltenschalten)
(nur Realmodus mit TigerJython)
Modul import: from cbalarm import *
setAlarm(1) | Schaltet Alarm ein |
setAlarm(1) | Schaltet Alarm aus |
Modul music
(nur Realmodus )
Modul import: from music import *
play(melody) | spielt eine Melodie |
pitch(frequency, len, wait = True) | spielt einen Ton mit gegebener Frequenz in Hertz während der gegebenen Zeit in Millisekunden. Falls wait = True, ist die Funktion blockierend; sonst kehrt sie zurück, während der Ton weiter spielt |
Vordefinierte Melodien:
Modul import: from calliope_mini import *
Direkte Funktionsaufrufe
(Realmodus)
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 im Lagesensor in Grad Celsius zurück (als Float) |
button_a | Instanz des Buttons A |
button_b | Instanz des Buttons B |
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.
led | Instanz der FarbLED |
set_red(r) | setzt die rote Farbkomponente (die anderen bleiben gleich) r = 0..255 |
set_green(g) | setzt die grüne Farbkomponente (die anderen bleiben gleich) g = 0..255 |
set_blue(r) | setzt die blaue Farbkomponente (die anderen bleiben gleich) b = 0..255 |
get_red() | liefert die rote Farbkomponente zurück |
get_green() | liefert die grüne Farbkomponente zurück |
get_blue() | liefert die blaue Farbkomponente zurück |
set_colors(r, g, b) | setzt die drei Farbkomponenten r, g, b = 0..255 |
get_colors() | liefert die drei Farbkomponenten als Tupel zurück |
clear() | setzt alle drei Farbkomponenten auf 0 |
FarbLEDs Callope mini 3
Modul import: from neopixel import *
LEDs = NeoPixel(pin_RGB, 3) | Instanzen LEDs[0], LEDs[1], LEDs[2] |
LEDs[0] = (r, g, b) | setzt bei der ersten LED die drei Farbkomponenten, r, g, b = 0..255 |
LEDs[1] = (r, g, b) | setzt bei der zweiten LED die drei Farbkomponenten, r, g, b = 0..255 |
LEDs[2] = (r, g, b) | setzt bei der dritten LED die drei Farbkomponenten, r, g, b = 0..255 |
LEDs.show() | zeigt die gewählte Farben an allen LEDs an |
Display
display | Instanz des Displays |
set_pixel(x, y, value) | setzt die Intensität des Pixels an der Position x, y. value ist im Bereich 0..9 |
get_pixel(x, y) | liefert den Wert des Pixels an der Position x, y |
clear() | löscht alle Pixels |
on()/off() | schaltet den Display an/aus. Im ausgeschalteten Zustand stehen folgende Pins zusätzlich als I/O zur Verfügung: pin4, pin6, pin7, pin9 |
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) |
Image(str) | erzeugt eine 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 Instanz mit 5x5 ausgeschalteten Pixels |
Image(width, height) | erzeugt eine Instanz mit der gegebenen Zahl horizontaler und vertikaler Pixel, die alle ausgeschaltet sind (value = 0) |
set_pixel(x, y, value) | setzt die Intensität des Pixels an der Position x, y. value ist im Bereich 0..9 |
fill(value) | setzt die Intensität aller Pixels auf den gleichen Wert (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 (rechts eingeschobene Spalten sind ausgeschaltet) |
shift_right(n) | gibt ein Image-Objekt zurück, das um n Spalten nach rechts verschoben ist (links eingeschobene Spalten sind ausgeschaltet) |
shift_up(n) | gibt ein Image-Objekt zurück, das um n Zeilen nach oben verschoben ist (unten eingeschobene Spalten sind ausgeschaltet) |
shift_down(n) | gibt ein Image-Objekt zurück, das um n Zeilen nach unten verschoben ist (oben eingeschobene Spalten sind ausgeschaltet) |
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 |
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 Image-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.)
Man beachte, dass einige Methoden nicht das Bild selbst modifizieren, sondern ein modifiziertes Bild zurückgeben. Um img zu ändern, kann man ihm das neue Bild zuweisen.
Beispiele:
img = Image(2, 2)
img = img.invert()
display.show(img)
General Purpose I/O (GPIO)
(Real- und Simulationsmodus nur *)
Output: 5 mA maximal pro Anschluss 15 mA maximale Last (alle Anschlüsse zusammen)
pin0*, pin1*, pin2*, pin3*, pin18, pin21...pin30 | Instanzen für allgemeines Digital-in/Digital-out oder Analog-in/Analog-out (PWM) |
pin4... pin15 | Instanzen vordefiniert für LED display (display mode) |
pin16, pin17 | Instanzen vordefiniert für Button A, B (button mode) |
pin19, pin20 | Instanzen vordefiniert für I2C (i2c mode) |
read_digital() | gibt 1 zurück, falls Pin auf logisch 1 (HIGH) ist; gibt 0 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; falls 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) (nur pin1, pin2, pin3, auf pin3 ist der Ausgang des Mikrofon-Verstärkers) |
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) |
set_pull(mode) | setzt den Pullup/Pulldown-Widerstand. (mode: pinx.PULL_UP, pinx.PULL_DOWN, pinx.NO_PULL). Default: Pulldown-Widerstand) |
accelerometer | Instanz des Beschleunigungssensors |
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 Erdbeschleunigung von ungefähr 10 m/s^2 wird mitgezählt). x-Richtung: FarbLed-USB; y-Richtung: ButtonB-ButtonA; z-Richtung: Normale zum Board von vorne nach hinten |
get_values() | gibt ein Tupel mit den Beschleunigungen in x-, y- oder z-Richtung zurück (Einheit wie oben) |
magnetometer | Instanz des Magnetfeldsensors |
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) |
get_values() | gibt ein Tupel der x-, y- und z-Komponenten des Magnetfeldes an der Stelle des Sensors zurück (int, Mikrotesla) |
gyrometer | Instanz des Drehzahlmessers |
get_x(), get_y(), get_z() | gibt den aktuellen Wert der x, y oder z-Komponente des Winkelgeschwindigkeit |
get_values() | gibt ein Tupel der x-, y- und z-Komponenten der Winkelgeschwindigkeit |
Modul radio:
(nur Realmodus)
(Modul import: from radio import *)
Computerkommunikation über Bluetooth
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 cpbeeper:
(nur Realmodus)
(Modul import: from cpbeeper import *)
Tonerzeugung mit dem internen Piezo-Lautsprecher
beep(pitch = "low", duration = 100, rep = 1) |
erzeugt einen Ton (pitch = "low"/"high") mit gegebener Länge (ms), der rep Mal wiederholt wird. Die Funktion blockiert, bis der Ton abgespielt ist |
beep1(pitch = "low") | dasselbe wie beep(pitch, 70, 1) |
beep2(pitch = "low") | dasselbe wie beep(pitch, 70, 2) |
beep3(pitch = "low") | dasselbe wie beep(pitch, 70, 3) |
Modul sht_mini:
(nur Realmodus)
(Modul import: fimport sht_mini)
Temperatur-/Feuchtigkeitsensor SHT32 von Sensirion, angeschlossen am Grove-I2C Port
sht_miini.getValues() | liefert ein Tupel mit Temperatur (in Grad Celsius) und relativer Luftfeuchtigkeit (in %) |
Modul sgp_mini
SGP30 Air Quality Sensor (Co2-Sensor am I2C-Port)
Modul import: import sgp_mini
sgp_mini.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) |