Der Calliope mini ist ein Mikrocontroller, der in Deutschland auf Basis des BBC micro:bit entwickelt wurde. Er bringt einige Sensoren und Aktoren mit und eröffnet damit einen einfachen Einstieg in die Welt des Physical Computing, der schon Grundschulkinder begeistert. Die Möglichkeiten des Calliope reichen aber so weit, dass man auch in der Oberstufe noch spannende Projekte mit dem Calliope durchführen kann. Dieses Skript soll dir dabei helfen, einen Einstieg in die Welt des Physical Computing mit Hilfe des Calliope zu finden und darüber hinaus grundlegende Konzepte der Informatik kennen zu lernen. Wenn du Spaß daran gefunden hast, wirst du dich vielleicht auch für den Arduino interessieren, der auf den gleichen Grundlagen beruht, aber noch weit mehr Möglichkeiten bietet.
In diesem Kapitel lernst du...
Der Calliope lässt sich mit verschiedenen Entwicklungsumgebungen oder Editoren programmieren. In diesem Skript werden drei Entwicklungsumgebungen vorgestellt: Makecode, Open Roberta Lab und Python Editor.
Die Entwicklungsumgebung für Python lässt sich nur mit dem Calliope v3 nutzen.


# Imports go at the top
from calliopemini import *
import neopixel
import music
np = neopixel.NeoPixel(pin_RGB, 3)
display.show(3) # Zahl 3 auf der LED-Marix anzeigen
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
sleep(1000) # 1000 ms, also 1 Sek. warten
display.show(2) # Zahl 2 auf der LED-Marix anzeigen
np.fill((255,255,0)) # füllt alle RGB-LED mit der Farbe gelb
np.show()
sleep(1000) # 1000 ms, also 1 Sek. warten
display.show(1) # Zahl 1 auf der LED-Marix anzeigen
np.fill((0,255,0)) # füllt alle RGB-LED mit der Farbe grün
np.show()
sleep(1000) # 1000 ms, also 1 Sek. warten
display.scroll('hi!') # lässt Text über das Display laufen
music.play(['c']) # spielt die Note C
Ein Programm besteht aus einer Folge von Anweisungen. Man spricht auch von Algorithmen: Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems, die aus endlich vielen Anweisungen besteht (s. Wikipedia).

.png)
# das ganze folgende Programm ist der Algorithmus
# am Anfang werden weitere Programmbausteine importiert
from calliopemini import *
import neopixel
import music
np = neopixel.NeoPixel(pin_RGB, 3)
# nun folgen mehrere Anweisungen mit Argumenten, die nacheinander ausgeführt werden
display.show(1) # Anweisung: das Display soll die Zahl 1 zeigen. Die Zahl 1 ist das Argument
np.fill((0,255,0)) # Anweisung: RGB-LEDs mit Farbe grün füllen. Die Farbe grün ist das Argument, das als RGB-Tupel angegeben wird
np.show() # Anweisung: Füllung zeigen (ohne Argument)
sleep(1000) # Anweisung: warte 1000ms. Das Argument sind die 1000ms
display.scroll('hi!') # Anweisung: Text über Display laufen lassen. Das Argument ist 'hi!'
music.play(['c']) # Anweisung: Ton spielen. Das Argument ist das Zeichen 'c' innerhalb einer Liste [], da mehrere Noten hintereinander angegeben werden können, z. B. music.play(['c', 'd', 'e'])
Eine Anweisung kann ein oder mehrere Argumente haben, die zum Beispiel festlegen, welche Farbe oder welcher Text angezeigt werden soll oder wie lange gewartet werden soll. Je nach Anweisung ist das Argument eine Farbe, eine Zahl, ein Text oder Bild.
while True: und rücke das Skript für die Ampel ein (alles markieren und Taste TAB drücken, vgl. Beispiel unten). Beschreibe den Unterschied zu vorher.from calliopemini import *
import neopixel
np = neopixel.NeoPixel(pin_RGB, 3)
while True:
# folgende eingerückten Anweisungen sind innerhalb der while-Schleife
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
# folgende nicht eingerückte Anweisungen sind nicht mehr innerhalb der while-Schleife
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
Schleifen dienen dazu, Programmcode zu wiederholen. Es gibt unterschiedliche Arten von Schleifen, die wir im folgenden kennenlernen werden. Für den Anfang ist die Endlosschleife am wichtigsten, die den enthaltenen Code dauerhaft wiederholt. Unsere Programme werden sich zum größten Teil in einer Endlosschleife abspielen.


# die folgenden Befehle werden genau ein Mal beim Start des Programms ausgeführt
from calliopemini import *
import neopixel
np = neopixel.NeoPixel(pin_RGB, 3)
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
while True:
# folgende eingerückten Anweisungen werden endlos wiederholt
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
# folgende nicht eingerückte Anweisungen werden nie ausgeführt, weil die obere Endlosschleife nie verlassen wird
np.fill((255,0,0)) # füllt alle RGB-LED mit der Farbe rot
np.show()
Programmiere ein Lied, das der Calliope abspielt. Recherchiere die Noten dazu im Internet.
Hinweise:
Zwei mögliche Beispiele von Melodien mit Link zu den Noten:
Frequenzen in Hertz zu den Noten:
| \(c^1\) | \(cis^1/des^1\) | \(d^1\) | \(dis^1/es^1\) | \(e^1\) | \(f^1\) | \(fis^1/ges^1\) | \(g^1\) | \(gis^1/as^1\) | \(a^1\) | \(ais^1/b^1\) | \(h^1\) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 262 | 277 | 294 | 311 | 330 | 349 | 370 | 392 | 415 | 440 | 466 | 494 |
Auf der Übersichtsseite des Calliope wird dargestellt, welche Bauteile auf dem Calliope verbaut sind und wo diese zu finden sind.
Erstelle ein Foto von deinem Calliope und beschrifte dieses Foto mit den Namen der Bauteilen. Markiere die Sensoren grün und die Aktoren orange.
Für die Eingabe von Daten werden Sensoren benötigt; für die Ausgabe hingegen Aktoren: