Programmieren mit dem Calliope - mini Einführung Erste Schritte Start 1. Programmierumgebung aufrufen Um mit dem Calliope-mini programmieren zu können, benötigst Du eine Programmierumgebung, in der Du dem Calliope mit einem Programm versorgen kannst. Diese Umgebung heißt Open Roberta Lab und Du findest Sie hier:  https://calliope.codingkidz.de     Grundlagen Daumenkino Idee Vorüberlegungen Folien Lernkarte_Grundlagen_V01.00.pptx Umsetzung  Anleitung Bauplan_Daumenkino.docx Bauplan_Daumenkino.pdf Daumkino Vorlagen Vorlage Daumenkino.docx Vorlage Daumenkino.pdf Vorlage_Daumenkino_12.pdf Programm Daumenkino_Smiley.hex Zufallszahlen Übersicht Zufall bedeutet, dass etwas passiert, ohne dass man genau weiß, was passieren wird. Zum Beispiel, wenn du einen Würfel wirfst, kannst du nicht sagen, welche Zahl oben liegen wird. Es kann eine 1, 2, 3, 4, 5 oder 6 sein – das ist Zufall. Zufall ist also, wenn etwas ganz überraschend oder ungeplant passiert. Der Calliope mini kann auch „Zufallszahlen“ erzeugen, so wie beim Würfeln. Aber weil ein Computer nicht wirklich überraschen kann, benutzt er eine besondere Art von Rechen-Trick. Er nimmt zum Beispiel Zahlen von seinem Bewegungssensor oder von der Zeit, um zu entscheiden, welche Zahl er als Nächstes zeigt. Diese Zahlen sehen dann zufällig aus, auch wenn sie eigentlich mit einem Trick berechnet sind. Mit Open Roberta Lab kannst du mit der Zufallszahlen-Funktion deinen Calliope mini als digitalen Würfel programmieren.  1️⃣ Öffne Open Roberta Lab und wähle dein Gerät: Calliope mini. 2️⃣ Aus dem Menü „Eingabe“ wähle den Block „Wenn Taste A gedrückt“ aus. 3️⃣ Unter „Mathematik“ findest du den Block „Zufallszahl von 1 bis 6“. Dies ist dein Würfelmechanismus. 4️⃣ Aus dem Menü „Aktionen → LED“ nimm den Block „zeige Text“ und füge den Zufallszahl-Block als Parameter ein. Jetzt zeigt dein Calliope mini jedes Mal, wenn du Taste A drückst, eine zufällige Zahl zwischen 1 und 6 – genau wie bei einem Würfel. Beispiele Name Programm Beschreibung Würfel Würfel_einfach.xml Würfel_einfach.hex Spiele das Programm auf Deinen Calliope.  Drücke die Taste A und dir wird einen eine Zahl zwischen 1 und 6 als Ziffer angezeigt . Würfel.xml Würfel.hex Spiele das Programm auf Deinen Calliope.  Drücke die Taste A und dir wird einen Würfelziffer in der typischen Punkt-Optik angezeigt. Schere, Stein, Papier   SchereSteinPapier.xml SchereSteinPapier.hex Spiele das Programm auf zwei Calliopes. Schüttet den Calliope und Du bekommst zufällig Schere, Stein oder Papier angezeigt.  Spiele gegen einen Freund oder anderen Calliope. Wer gewinnt häufiger? Mensch oder Calliope? Papier/Stein/Schere mit Schummeln SchereSteinPapier_cheating.xml SchereSteinPapier_cheating.hex Spiele das Programm auf zwei Calliopes.  Schüttet den Calliope und Du bekommst zufällig Schere, Stein oder Papier angezeigt.  Wenn Du beim Start Deines Calliopes jedoch die B-Taste drückst, dann piept der Calliope kurz und Du bist unbesiegbar. Anwendungsfälle im Kurs Name Beschreibung / Link Kommunikation mit anderen Calliopes Kommunikation,  Kommunikation Überblick Calliopes senden und empfangen Nachrichten über ein einfaches Funkprotokoll (Nordic EnhancedShockBurst/Gazell). Dafür stellt OpenRoberta Kommunikationsblöcke bereit. Die Kommunikationsteilnehmer müssen den selben Kommunikationskanal gewählt haben und können danach auf diesem Kanal Nachrichten austauschen. Der Calliope mini hat einen kleinen Empfangspuffer, in den empfangene Nachrichten automatisch geschrieben werden. Sender und Empfänger sollten im selben Moment aktiv sein, damit die Nachricht sicher übertragen wird. Eine gesendete Nachricht wird an alle Empfänger (des selben Kommunikationskanals) gleichzeitig übertragen (Broadcast-Verfahren). Quelle: https://calliope.cc/projekte/funk Besonderheiten: Senden und Empfangen sind für den Programmfluss nicht blockierend. Das bedeutet, dass eine Nachricht von Sender im Fire-and-Forget Prinzip übertragen wird. Dabei erfolgt keine Prüfung ob die Nachricht tatsächlich beim Empfänger angekommen ist. Der Empfang von Nachrichten ist ebenfalls nicht blockierend. Das heißt, dass der Empfänger den Empfangspuffer ausliest. Sind dort Nachricht enthalten, dann wird die älteste ausgegeben und aus dem Puffer gelöscht. Ist der Empfangspuffer leer, dann wird eine leere Nachricht ausgegeben.  Beispiel Name Programm Beschreibung Zahlen Senden und Empfangen Zahlen_SendenEmpfangen.xml Zahlen_SendenEmpfangen.hex Das Programm auf die 2-n Calliopes spielen. Die Empfänger werden durch Drücken der Taste B gestartet. Der Calliope zeigt ein E auf dem Display und eine grüne Lampe an. Nun der der Calliope bereit, Nachrichten zur empfangen.  Der Sender wird durch Drücken der Taste A gestartet. Der Calliope zeigt ein S auf dem Display und eine rote Lampe an. Nach nochmaligem Drücken der Taste A sende der Calliope die Zahlen 1,2,3,4,5 an alle Empfänger. Die Empfänger zeigen ebenfalls die Zahlensequenz 1-5 an.   Channel Hopping Ping-Pong Channel-hopping-liste.xml Channel-hopping-liste.hex Das Programm wird auf zwei Calliopes gespielt.  Ping - der erste Calliope wird durch Drücken der Taste A gestartet.  Pong - zweite Calliope durch Drücken der Taste B. Beide Calliope tausche nun zyklisch die ID des nächsten Kommunikationskanals aus, auf dem Sie die Nachrichten senden und empfangen. Der Kanal wird von beiden Calliope auf dem Display angezeigt. Beide Calliopes sind versetzt zueinander sowohl Sender als auch Empfänger. Das grüne Licht des Senders wechselt zwischen den beiden Calliopes hin und her. (Ping-Pong) Inhalte im Kurs Name Beschreibung / Link Fernbedienung Steuerung eines Calli:Bot durch eine Calliope Funk Fernbedinung Link: 8 - Calli:Bot Fernbedienung Fake - Papier/Stein/Scheere Steuerung eines Calliope Papier/Stein/Scheere Spiels bei dem immer gewonnen oder verloren wird Link: 2 - Calliope Zufallsspiele Roboter - Calli:Bot Roboter für Calliope mini Hardware Beschreibung Besonderheiten Beschreibung Linefollower - Parcours entwerfen Einleitung Ein Linefollower-Parcours ist eine spannende Möglichkeit, den CalliBot gezielt auf das Folgen einer Linie zu programmieren und sein Verhalten im realen Umfeld zu testen. Mit Hilfe seiner Liniensensoren erkennt der CalliBot schwarze Linien auf hellem Untergrund und folgt ihnen automatisch. Dabei reagiert er auf Kurven, Abzweigungen oder Kreuzungen – je nachdem, wie der Parcours gestaltet ist. Das macht ihn ideal, um spielerisch Sensorik, Programmierlogik und technische Abläufe zu erlernen. Der Linienparcours kann einfach digital in PowerPoint gestaltet werden. Dabei wird mit Formen oder Linienwerkzeugen ein schwarzer Linienverlauf auf einem weißen Hintergrund gezeichnet – zum Beispiel als Kurve, Schleife oder Verzweigung. Anschließend kann der Parcours auf mehreren DIN-A4-Seiten ausgedruckt und zusammengesetzt werden. Achte darauf, dass die Linien mindestens 1,5 cm breit sind, damit die Sensoren des CalliBot sie zuverlässig erkennen. So entsteht ein individuell anpassbarer Parcours, der sich leicht verändern, erweitern und mehrfach verwenden lässt. Vorlagen Name Powerpoint Druckdatei A0 - Powerpoint Beispiele Linefollower-Parcours_A0.pptx Linefollower-Parcours_A0.pdf Spinnennetz Parcoure siehe Bespiele   Linefollower-Spinnennetz_A0.pdf Linefollower-Spinnennetz_A4.pdf Spinnennetz - Parcours erstellen Schritt Beschreibung Details Vorbereitung A0 - Powerpoint Beispiele laden neue Folien anlegen leere Seite (Template) kopieren A0 ist automatisch eingestellt: Siehe Seite einrichten  Parcours erstellen Unter Menüpunkt FORMEN: Viereck mit abgerundeten Ecken auswählen und platzieren     Formatierungen:  keine Füllung Line einfarbig Schwarz 60 Pt. Stärke        Parcoure komplettieren Weitere Formen Linien Rechtecke Kreise Elipsen auswählen, platzieren und formatieren. Datei speichern und für den Druck vorbereiten. Powerpoint Datei speichern und als PDF exportieren Datei Parcoure ausdrucken Die PDF Datei kann nun mit einem A0-Drucker ausgedruckt werden.  Druck-Dienst aus dem Internet Plot-Service ...  Da die wenigsten einen A0-Drucker zu Hause haben, kann man die A0 Datei auch in mehreren A4-Seiten drucken und dann zusammensetzen.  Dies gelingt mit dem Acrobat Reader unter Windows im Poster-Druck sehr leicht.     Im Menu Drucken auswählen Schrittmarken und Beschriftungen auswählen Überlappung 20mm einstellen   Es werden 25 A4 Seiten ausgedruckt, diese enthalten Markierungen an denen die Seiten gekürzt und zusammengeklebt werden müssen.    Viel Spass beim Basteln. Anwendungsfälle im Kurs Name Beschreibung / Link Linie folgen Calli:Bot - 4: Linie folgen - Einzelfahrt Calli:Bot - 5: Linie folgen - Gruppenfahrt Linefollower - Fang den Calli:Bot ! Einleitung Auf dem Spiel-Parcours fahren zwei Calli:Bots . Einer ist der Jäger, der andere ein Flitzer! Du steuerst den Jäger, indem Du Ihn auf dem Parcoure nach links und rechts lenkst, um den Flitzer zu fangen. So geht’s: Der Jäger muss die anderen Bots fangen. Fangen heißt: Er muss ganz nah (1 cm) hinter den Flitzer Bot kommen. Aber Vorsicht! Wenn sich Bots berühren, hat der Jäger verloren. Ziel des Spiels: Der Jäger gewinnt, wenn er den Flitzer-Bots fängt. Die anderen gewinnen, wenn sie es schaffen, dem Jäger nicht ins Netz zu gehen. Materialien Name Programm Beschreibung Parcours Spinnennetz Labyrinth   Linefollower - Parcours entwerfen Abstandssensor hinten anbringen Abstandssensor mit extra Kabel uns Montageset     Callibot - Flitzer (mit Abstandssensor hinten verbaut) Nach dem Starten 5s Sekunden warten, dann wird das Programm im Flitzer-Modus gestartet.   Der Flitzer folgt der Linie des Parcours mittig so schnell er kann.  Callibot - Jäger  Innerhalb ersten 5s Sekunden nach dem Start die Taste A (links) drücken, dann wird das Programm im Jäger-Modus gestartet.   Der Flitzer folgt der Linie des Parcours mittig so schnell er kann. Empfängt von der Fernbedienung jedoch Steuerungssignale (vor, links, rechts, stop), die er befolgt.  Calliope - Fernbedinung Innerhalb ersten 5s Sekunden nach dem Start die Taste B (rechts) drücken, dann wird das Programm im Jäger-Modus gestartet.   Steuerung des Jägers: Taste A drücken - links abbiegen Taste B drücken - rechts abbiegen Beide Tasten (A+B) drücken - anhalten nichts drücken - gerade aus fahren   Programm Name Programm Beschreibung Callibot Fange auf einem Linienparcours Callibot_Linefollower_Fange.xml Callibot_Linefollower_Fange.hex   Modus auswählen  Flitzer = 5s warten Fänger = Taste A (links) drücken  Fernbedienung = Taste B (rechts) drücken Start Flitzer flitzt sofort los Fänger steht und wartet auf Signal von Fernbedienung Fernbedienung startet mit drücken der Taste A (links) Neustart: Flitzer fährt los, wenn Taste A (links) gedrückt wird Fänger wartet wieder auf das Startsignal der Fernbedienung Fernbedienung startet mit drücken der Taste A (links) Anwendungsfälle im Kurs Name Beschreibung / Link Linefollower Calli:Bot - 4: Linie folgen - Einzelfahrt Calli:Bot - 5: Linie folgen - Gruppenfahrt Fernbedienung Calli:Bot - 6: Fernbedienung Tanzen Calli:Bot - 3: Tanzen Linefollower Übersicht Beschreibung Beispiel Name Programm Beschreibung       Parcours Name Beschreibung       Anwendungsfälle im Kurs Name Beschreibung / Link Fernbedienung Übersicht Beschreibung Beispiel Name Programm Beschreibung       Anwendungsfälle im Kurs Name Beschreibung / Link Calli:Bot Farben Die RGB Lampen des Calli:bot unterstützen nicht das Farbschema von OpenRoberta. Daher müssen die Farben mit den folgenden RGB-Codes gemischt werden. Nr Farbe R G B W 1 weiss 255 255 255 255 2 rot 255 0 0 255 3 gelb 0 0 176 255 4 grün 0 176 0 255 5 blau 176 176 0 255 6 lila 176 0 0 255 7 türkis 0 0 224 255 Beispielprogramm für Farben xml hex Farben in Liste iterieren Farben_in_Liste_iterieren.xml Farben_in_Liste_iterieren.hex Manuell über Farben iterieren Callibot_FarbIterator.xml Callibot_FarbIterator.hex UUID - so finden sich die CalliBots von ganz allein Einleitung In vielen Calliope-Projekten wird der Funkkanal, über den Geräte miteinander kommunizieren, fest im Programmcode vorgegeben. Das funktioniert zwar in einfachen Szenarien, stößt aber an Grenzen, sobald mehrere Geräte flexibel miteinander interagieren sollen – zum Beispiel in wechselnden Gruppen oder wenn Geräte dynamisch hinzukommen. Das zentrale Problem: Die Geräte können nicht eindeutig identifiziert oder gezielt angesprochen werden. Eine skalierbare, individuelle Kommunikation ist auf diese Weise nicht möglich. Die Lösung ist ein dynamisches Verfahren zur Funkverbindung: Ein zentraler Controller (Sendegerät) erkennt zur Laufzeit individuelle Teilnehmer (Empfangsgeräte) einer Gruppe und weisst Ihnen eindeutige IDs zu. Statt einen festen Funkkanal zu nutzen, handeln Controller und Teilnehmer während der Kommunikation dynamische Kanäle aus. Die Vorteile: Geräte müssen nicht vorab manuell konfiguriert werden. Alle Teilnehmer sind individuell ansprechbar. Das System ist skalierbar, flexibel und ideal für offene oder sich ändernde Gerätegruppen, z. B. im Unterricht oder bei Projekten mit mehreren Teams. 👉 Wie dieses Verfahren genau abläuft, zeigt die folgende Schritt-für-Schritt-Anleitung. Vorbereitung Jeder Calliope vergibt sich selbstständig eine zufällige ID zwischen 10 und 100. Alle Geräte verwenden zunächst denselben allgemeinen Funkkanal am Anfang der Kommunikation (bspw. 9). Schritt 1: Teilnehmer aktivieren Die Teilnehmer (Calliopes 2 bis n) werden durch Drücken der Taste B in den Empfangsmodus versetzt. Sie warten nun auf dem allgemeinen Kanal auf Nachrichten. Schritt 2: Controller aktivieren Der zentrale Controller (Calliope 1) wird durch Drücken der Taste A in den Sendemodus versetzt. Er sendet seine eigene ID (C-ID) über den allgemeinen Kanal. Danach wechselt der Controller in seinen eigenen Kommunikationskanal (C-ID) und wartet dort auf Antworten. Schritt 3: Antwort der Teilnehmer Die Teilnehmer empfangen die C-ID des Controllers im allgemeinen Kanal. Sie wechseln nun in den Kanal des Controllers (C-ID) und senden dort ihre eigene ID (T-ID). Anschließend warten sie auf eine Antwort vom Controller. Wichtig: Da der Controller nicht alle Antworten der Teilnehmer zeitgleich empfangen kann, machen die Teilnehmer vor dem Senden eine kurze Pause, deren Länge zwischen 100 und 1000 ms ist.  Schritt 4: Bestätigung der Teilnehmer Der Controller empfängt die T-IDs der Teilnehmer und trägt diese in eine Teilnehmerliste  Er wartet bis er alle Antworten erhalten hat. Zur Bestätigung sendet er alle T-IDs von seiner Teilnehmerliste nacheinander zurück an die Teilnehmer. Im letzten Schritt sendet er ein ENDE Signal auf seinem Kanal Schritt 5: Reaktion der ausgewählten Teilnehmer Alle Teilnehmer, die Ihre T-ID auf dem Kanal des Controllers empfangen haben, wurden vom Controller bestätigt. Diese Teilnehmer wechseln in Ihren eigenen Kommunikationskanal (T-ID) und warten auf weitere Nachrichten vom Controller  Alle anderen Teilnehmer empfangen das ENDE Signal. Dadurch ist klar, dass die Bestätigung durch den Controller nicht geklappt hat. Diese Teilnehmen versuchen es erneut und springen zurück zu Schritt 1 und warten auf Nachrichten vom Controller. Schritt 6: Übermittlung der UUID  Der Controller sende jedem Teilnehmern auf der Teilnehmerliste eine eindeutige ID auf dem Kanal des jeweiligen Empfängers.  Die Teilnehmer, empfangen die UUID auf Ihrem Kanal und zeigen diese an. Ergebnis Die Teilnehmer haben nun eine eindeutige ID und sind von 1 bis n durchnummeriert.   Eindeutigkeit: Wenn zwei oder mehr Teilnehmer zufällig die gleiche ID gewählt haben, dann werden sie dennoch erfolgreich eingerichtet. Da die möglichen IDs im Bereich von 10–100 liegen, ist die Wahrscheinlichkeit einer Kollision jedoch sehr gering. Das Verfahren kann im Schritt 4 - Bestätigung der Teilnehmer entsprechen erweitert werden, dass nur T-IDs angenommen werden, die eindeutig sind.  Beispielimplementierung Programm Code Beschreibung UID zuweisen uid_fuer_callibots7.xml   uid_fuer_callibots7.hex Das Programm auf alle Geräte der Gruppe spielen und die Empfänger (Callibots) starten. Nach 5s erscheint auf allen Callibots ein Herz. Danach den Controller starten und die Taste A drücken.  Der Controller und die Callibots zählen die Synchronisationsschritte bis auf 1 runter und stellen dann die UUID auf dem Display da.  Durch Drücken der Taste A am Controller wird die Empängerliste (UUIDs - T-IDs Pärchen) angezeigt.   Durch Drücken der Taste A am Empänger wird die Eingen UUID und T-ID angezeigt.   Programme Code Hex Beschreibung Calli:bot Farben 7 Grundfarben Callibot_10Farben.xml Callibot_10Farben.hex Callibot mit 7 Grundfarben  Zufallsfarben Callibot_Zufallsfarben.xml Callibot_Zufallsfarben.hex Callibot zeigt 7 Grundfarben in einer zufälligen Reihenfolge an alle Farben Callibot_alleFarben.xml Callibot_alleFarben.hex Callibot mit allen Farben der Farbpalette Hinweis: die meisten Farbpattenfarben können die RGB LEDs nicht anzeigen Calli:bot Tanzen tanzen.xml tanzen.hex Zufallsbeleuchtung und -bewegung bei Lautstärke Linefollower       einfach Linefollower_einfach.xml Linefollower_einfach.hex Calli:Bot folgt der schwarzen Linie des Parcours einfach mit 3 Modi Linefollower_einfach_3Modi.xml Linefollower_einfach_3Modi.hex Calli:Bot folgt der schwarzen Linie des Parcours Modus 1: Calli:bot leuchtet weiss und folgt der Linie mittig Modus 3: Calli:bot leuchtet rot und folgt der Linie links  Modus 3: Calli:bot leuchtet grün und folgt der Linie rechts  Abstand Linefollower_mit_Abstand.xml Linefollower_mit_Abstand.hex   Linefollower_mit_Abstand_langsam.hex   Beide Calli:Bots folgten der schwarzen Linie des Parcours Calli:Bot1 hat normale Geschwindigkeit Calli:Bot2 ist langsam und blockiert Calli:Bot1 Calli:Bot1 reduziert die Geschwindigkeit und hält wenn nötig an.  Überholen Linefollower_mit_Überholen.xml Linefollower_mit_Überholen.hex Callibot mit 50% Geschwindigkeit, wenn in den ersten 5s nach dem Start die Taste A (links) gedrückt wird.   Beide Calli:Bots folgten der schwarzen Linie des Parcours (mit Überholspur) Calli:Bot1 hat normale Geschwindigkeit Calli:Bot2 ist langsamer und blockiert Calli:Bot1 Calli:Bot1 überholt Calli:Bot2, wenn der Parcours die Möglichkeit zum links abbiegen bietet    Fahren mit Fernbedienung Callibot_Fernbedienung_Fussball_Kanal5.xml Kanal anpassen   Sender: Fernbedingung Callibot_Fernbedienung_Fussball_Kanal5.hex Modus Fernbedientung - Taste A (links) in den ersten 5s nach Start drücken.   Kanal 5 Nachrichten:  stop - waagerecht halten vor - nach vorn neigen zurueck - nach hinten neigen links - linken Knopf drücken rechts - rechten Knopf drücken spass - beide  Knöpfe gleichzeitig drücken mit links schiessen - Pin0 mit rechts schiessen - Pin3 Empfänger: Calli:bot Callibot_Fernbedienung_Fussball_Kanal5.hex Modus Callibot - wird automatisch gewählt   Kanal 5 Nachrichten:  stop - anhalten vor - nach vorn fahren zurueck - nach hinten fahren links - nach links fahren  rechts - nach rechts fahren spass - 5s rumhampeln und leuchten mit links schiessen - ausholen und links schiessen mit rechts schiessen - ausholen und rechts schiessen Fortgeschritten Fang den Maulwurf Idee Vorüberlegungen Umsetzung / Herausforderungen Programm Fange_Maulwurf.hex