Dokumentation Calliope Mini

3.3V Spannungsversorgung externer Geräte: Maximal 100 mA

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)




Buttons
(Real- und Simulationsmodus)
button_a Instanz des Buttons A
button_b 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.



Display
(Real- und Simulationsmodus)

display Instanz des Displays

Methoden:
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)

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





FarbLED
(Real- und Simulationsmodus)

led Instanz der FarbLED

Methoden:
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


FarbLEDs Callope mini 3
Modul import: from neopixel import *

LEDs = NeoPixel(pin_RGB, 3) Instanzen LEDs[0], LEDs[1], LEDs[2]

Methoden:
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



Image
(Real- und Simulationsmodus)

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)

Methoden:
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

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

Methoden:
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
(Real- und Simulationsmodus)
accelerometer Instanz des Beschleunigungssensors

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 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
(nur Realmodus)
magnetometer Instanz des Magnetfeldsensors

Methoden:
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
(nur Realmodus)
gyrometer Instanz des Drehzahlmessers

Methoden:
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




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

erzeugt eine 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-Tupels 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 sichtbar wird.

(Strips mit WS2812 LEDs unterstützt.)


Methoden:
clear()

löscht alle Pixels

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



Modul music
(nur Realmodus)
(Modul import: from music import *)

Funktionen:
set_tempo(bpm = 120) setzt die Anzahl Beats pro Minute (default: 120)
pitch(frequency, len, pin = 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: pin0). 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 = pin0, wait = True, loop = False) spielt eine Melodie mit dem aktuellen Tempo.). pin definiert den Output-Pin am GPIO-Stecker (default: pin0). 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 = pin0) stoppt alle Sound-Ausgaben am gegebenen GPIO-Pin (default: pin0)

Bemerkungen:
Eine Melodie ist eine LiIste 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:
(nur 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 cpbeeper:
(nur Realmodus)
(Modul import: from cpbeeper import *)

Tonerzeugung mit dem internen Piezo-Lautsprecher

Funktionen:
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 cpmike:
(nur Realmodus)
(Modul import: from cpmike import *)

Detektion von Schallpulsen mit dem internen Mikrofon

Funktionen:
isClicked(level = 10, rearm_time = 500)

gibt True zurück, falls der Schallpegel im Moment des Aufrufs den vorgegebenen Pegel (level = 1...500) übersteigt. Während der nachfolgenden Zeit (rearm_time in ms) ist die Detektion unterdrückt und es wird False zurückgegeben




Modul cp7seg:
(nur Realmodus)
(Modul import: from cp7seg import *)

Anzeige auf einem 4-stelligen 7-Segmentdisplay vom Typ TM1637 (Seed Studio), angeschlossen am analogen Grove-Port

Funktionen:
show(text) zeigt maximal 4 Buchstaben/Zahlen/Zeichen auf dem Display an (reduziert auf 7-Segmente)
color(enable) für enable = True, wird der Doppelpunkt angezeigt
luminosity(lum) setzt die Helligkeit (lum = 1..7)




Modul sht_mini:
(nur Realmodus)
(Modul import: import sht_mini)
Hochpräziser Temperatur-/Feuchtigkeitsensor SHT32 von Sensirion, angeschlossen am Grove-I2C Port

Funktionen:
sht_mini.get.Values() 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)

 



Modul cprover:
(nur Realmodus)
(Modul import: from cprover import *)

Gleichstrommotoren, die am Motorport angeschlossen sind

Funktionen für zwei Motoren, die unterschiedlich vorwärts laufen:
forward()
schaltet beide Motoren in Vorwärtsrichtung
right() schaltet den linken Motor in Vorwärtsrichtung und stoppt den rechten Motor
rightArc(r) schaltet den linken Motor in Vorwärtsrichtung und verlangsamt den rechten Motor. Der Kurvenradius ist durch r bestimmt (willkürliche Einheit)
left() schaltet den rechten Motor in Vorwärtsrichtung und stoppt den linken Motor
leftArc(r) schaltet den rechten Motor in Vorwärtsrichtung und verlangsamt den linken Motor. Der Kurvenradius ist durch r bestimmt (willkürliche Einheit)
stop() stoppt beide Motoren
setSpeed(speed) setzt die Geschwindigkeit (speed = 1..100)


Schaltschema:
(toDo)


Funktionen für einen oder zwei Motoren, die gleichartig vorwärts oder rückwärts laufen:

run()
schaltet den Motor (die Motoren) in Vorwärtsrichtung
back() schaltet den Motor (die Motoren) in Rückwärtsrichtung
stop() stoppt den Motor (die Motoren)
setSpeed(speed) setzt die Geschwindigkeit (speed = 1..100)


Schaltschema:
(toDo)



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
setSpeed() setzt die Geschwindigkeit für die Bewegungen (0..100)
show() macht den Leuchtkäfer an der aktuellen Position und für die nächsten Bewegungen sichtbar
hide() macht den Leuchtkäfer für die nächsten Bewegungen unsichtbar
clear() löscht alle eingeschalteten Pixels. Der Leuchtkäfer bleibt an der aktuellen Position (unsichtbar)
showTrace(enable) macht die Spur für die nächsten Bewegungen (Pixel an besuchten Stellen) sichtbar/unsichtbar
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
isLit() gibt True zurück, falls das Pixel an der Stelle des Leuchtkäfers eingeschaltet ist