Besonderheiten:
Der Bewegungssensor des Calliope registriert die kleinsten Bewegungen. So kannst du die Schwierigkeit bestimmen. Wenn das Ei herunterfällt, kannst du eine Melodie abspielen lassen und bestimmen, wie lange der Spieler stehen bleiben muss.
Gut zu wissen:
Für dieses Projekt solltest du wissen, wie man den PXT-Editor benutzt. Erste Erfahrungen damit kannst du mit unserer Anleitung für das „Calliope Klavier“ sammeln. Wichtige Grundlagen zum Calliope Mini findest du hier.
Das lernst du kennen:
Du lernst, wie du die Werte des Beschleunigungssensors nutzt, um einen Punkt über das LED Display tanzen zu lassen.
Dauer:
60 Minuten
Schwierigkeitsgrad:
Aufsteiger
Die Programmierung ist leichter zu verstehen wenn man mit dem Code selbst etwas herumspielt und das Ergebniss überprüft.
Schau dir unsere Videoanleitung an
Die Anleitung
Diese Materialien brauchst du
Du benötigst eigentlich nur deinen Calliope und gewöhnliche Bastelmaterialien. Die Heißklebepistole ist nur für die Nase wichtig. Wenn du keine hast, kannst du die Nase auch mit anderen Mitteln befestigen.
- Ein Calliope mini mit USB Kabel und Batteriepack
- Gutes Klebeband
- Eine Heißklebepistole und einen Heißklebestick
- Einen Löffel
- Buntstifte,
- Stecknadeln
- Papier
- Cutter
- Schere
So programmierst du deinen Calliope Mini
Der Code
Du kannst natürlich einfach den Code für den Calliope Mini herunterladen und damit experimentieren. Wir wollen hier erklären, wie die Programmierung funktioniert, damit du sie nachbauen kannst.
Um die Befehle zu finden, kannst du dich immer an den Farben der Blöcke und des Menüs orientieren. Nur der „Verteile-Befehl“ ist gut versteckt. Du findest ihn im Menü „Fortgeschritten“ und dort bei „Pins“.
Los geht’s!
Was haben wir vor?
Ziel ist es, die Bewegung des Calliope auf die Bewegung des Punkts auf unserem Display zu übertragen. Das Problem hierbei ist der Beschleunigungssensor des Calliope: Je nachdem, wie stark du ihn bewegst, erzeugt er sehr hohe Werte von -1023 bis + 1023.. Das Display hat aber nur fünf mal fünf LEDs. Was tun?
Das Display besteht aus fünf mal fünf LEDs in einem Raster. Stelle dir das Raster vor wie ein Koordinatensystem in der Mathematik. Mit dem Unterschied, dass der Nullpunkt links oben ist, nicht links unten. Um eine LED zu aktivieren, benötigen wir die Koordinaten der LED (also den x- und den y-Wert). Die LED oben links hat beispielsweise die Koordinaten x=0 und y=0. Das LED in der Mitte hat die Koordinaten x=2 und y=2 und das LED rechts unten die Koordinaten x=4 und y=4.
Dieser Code lässt den Punkt tanzen
Hier siehst du die Lösung unseres Problems. Das Augenmerk liegt auf den beiden „Verteile“-Befehlen. Einfach gesagt macht der Verteile-Befehl genau das, was wir benötigen. Er verteilt die x- und y-Werte des Beschleunigungssensors auf unsere fünf mal fünf LEDs. Stell dir das so vor: Du bekommst eine große Anzahl Eier und sollst diese auf eine kleine Anzahl Körbe „fair“ verteilen. Genau das macht der „Verteile“-Befehl. Der Programmablauf ist also wie folgt:
- Die LED, welche bisher angeschaltet war, wird ausgemacht. Sonst würden irgendwann alle LEDs leuchten.
- Die Variablen LED_x und LED_y werden vom Verteile-Befehl an Hand der aktuellen x-Werte und y-Werte des Beschleunigungssensors berechnet („verteilt“).
- Die LED mit den Koordinaten von LED_x und LED_y wird angeschaltet.
Hier ein vereinfachtes Beispiel. Stell dir vor, du bekommst 100 nummerierte Eier und sollst diese auf 5 nummerierte Körbe „fair“ verteilen. Dann würdest du die ersten 20 Eier (also Eier 1-20) in den ersten Korb legen, die nächsten 20 Eier (Eier 21-39) in den 2. Korb, usw. Die letzten 20 Eier (81-100) kämen also in den letzten Korb.
Genau das macht der Verteile-Befehl für dich, wenn du ihm sagst welche Eier (Eier 1-100) er auf welche Körbe (Körbe 1-5) verteilen soll. In der linken Abbildung siehst du wie unser Eierbeispiel als echter Befehl aussehen würde.
Wichtig: Statt „Eier“ verteilt man normalerweise einen Sensorwert. Bei dem Eierlauf-Projekt werden die Werte des Beschleunigungssensors verteilt.
Wer es wirklich ganz genau wissen will:
- Genau genommen wird immer nur eine Zahl einer Anderen zugeordnet, anhand der gegebenen Verteilungs-Formel. Der Befehl „kuckt“ also einfach auf die Nummer des Ei‘s und nennt die Nummer des Korbes, in der das Ei liegt oder liegen würde.
- Diese Zuordnung funktioniert auch mit Werten außerhalb des Definitionsbereichs. Das heißt, die Eier 101-200 würden auf die (neuen) Körbe 6-10 verteilt, usw.
- Die Zuordnung rundet nicht auf und ab. Stattdessen werden Nachkommastellen einfach ignoriert. Aus diesem Grund sollte man den „bis hoch“-Wert immer um 1 höher wählen als eigentlich nötig.
Dieser Code erkennt, wenn das digitale Ei herunterfällt
Sehr gut, der Punkt tanzt schon über das Display. Nur wie kann das Ei herunterfallen? Ganz einfach. Wenn der Punkt das Display verlässt, ist das Ei heruntergefallen. Schau dir den Code oben an. Diese Wenn-Abfrage fragt, ob eine der beiden LED-Koordinaten (LED_x oder LED_y) kleiner als 0 oder größer als 4 ist. Denn dann wäre der Punkt außerhalb unseres Displays. Der Code danach macht einfach nur ein bisschen „Tamtam“ wenn das Ei heruntergefallen ist:
- Die RGB LED wird rot
- Auf dem Display erscheint ein großes Kreutz
- Einige nervige Töne werden abgespielt. Du kannst auch versuchen, eine Melodie zu komponieren.
- Danach passiert für 3 Sekunden (3000 Millisekunden) nichts. Das ist die Strafzeit in der der Spieler nicht laufen darf.
- Zuletzt wird das Display wieder „gelöscht“, damit unser Punkt wieder tanzen kann.
Tipp: Das Raster besteht aus 5 mal 5 LEDs. Da man in der Programmierung aber immer bei 0 anfängt zu zählen, ist der Punkt schon außerhalb des Displays, wenn LED_x oder LED_y größer als 4 ist.
Wann fällt das Ei herunter?
Momentan kann das Ei noch gar nicht runterfallen. Denn der gesamte Wertebereich des Bewegungssensors wird ja verteilt auf unsere 5 mal 5 LEDs. Damit das Ei herunterfallen kann, müssen wir die Werte des Beschleunigungssensors im „Verteile“-Befehl mit einem Faktor multiplizieren, so wie in dem Bild links. Denn dann kann der Punkt aus dem Display „springen“. Dieser Faktor legt zugleich auch die Schwierigkeit fest. Wir definieren diesen Schwierigkeitsgrad „beim Start“.
Tipp: Probiere Schwierigkeitswerte von 2-8 aus. 2 ist sehr leicht und 8 ist super schwer!
Die fertige Programmierung
Finetuning
Hier siehst du den fertigen Code. Bei uns ist vor der großen Wenn-Abfrage noch ein weiterer Block. Dieser bewirkt, dass die RGB LED grün leuchtet, wenn das digitale Ei noch auf dem Löffel ist.
Tipp: Um deine eigenen Regeln aufzustellen, kannst du mit dem Schwierigkeitsgrad und der Dauer der Strafzeit („Pausiere“ Befehl) herumspielen.
Deinen eigenen Game-Controller bauen
Die Deko
Für Augen, Ohren und Zähne kannst du einfach die gewünschten Formen auf Papier malen und ausschneiden. Festkleben kannst du das Papier mit transparenten Klebeband.
Die Nase
Die Nase ist ein Stück Heißkleberstick. Dieses kannst du mit einem Cutter oder einem scharfen Messer abschneiden. Drücke dazu das Messer auf den Klebestick und rolle beides bei gleichbleibenden Druck hin und her. Stecke Stecknadeln in das abgeschnittene Stück Kleber um die Schnurrbarthaare herzustellen.
Um die Nase festzukleben, solltest du nur ganz wenig Heißkleber auf die Nase geben und diesen für 2-3 Sekunden abkühlen lassen, bevor du die Nase über die RGB LED klebst. So stellst du sicher, dass die Nase auch wieder abzulösen ist, ohne den Calliope zu beschädigen.
Der Löffel
Zuletzt kannst du das Batteriepack auf einen Löffel kleben. Schneide eine kleine Lücke ins Tape um an den An/Aus Schalter zu kommen. Danach kannst du den Calliope mit beidseitigem Klebeband oder zwei kleinen Tropfen Heißkleber auf dem Batteriepack befestigen. Tipp: Gutes Klebeband kannst du auch zu einem Ring zusammenkleben und dann wie beidseitiges Klebeband nutzen.
Los geht’s!
Lade auf jeden Calliope den gleichen Code und fordere deine Freunde zum Wettrennen heraus. Wenn ihr nicht für jeden Spieler einen Calliope habt, könnt ihr auch einen Staffellauf machen, bei dem der Löffel übergeben wird.