Loeffel-ei: Unterschied zwischen den Versionen
Zeile 57: | Zeile 57: | ||
* Digitale Grundbildung | * Digitale Grundbildung | ||
* Deutsch | * Deutsch | ||
== [[File:Icon_hilfe.png|30px|Icon]] Tipps und Hilfestellungen == | == [[File:Icon_hilfe.png|30px|Icon]] Tipps und Hilfestellungen == |
Version vom 18. Januar 2022, 00:36 Uhr
Ei und Löffel Spiel
Sonja und Elias sind zur Geburtstagsparty von Lukas eingeladen. Eine Woche vor der Feier fragt Sonja: "Elias, hast du dir schon ein Spiel für die Geburtstagsparty überlegt?"
"Mmh, ich weiß nicht, hast du schon eine Idee?" Sonja antwortet: "Wir könnten das Ei-Löffel Spiel machen! Was meinst du?"
Elias: "Ja, dabei hatten wir bisher immer Spaß, aber vielleicht peppen wir dieses Spiel etwas auf?"
Sonja: "Stimmt, wir könnten statt den Gegenständen Ei und Löffel den micro:bit zum Einsatz bringen! Kannst du dir vorstellen, wie sich das praktisch umsetzen lässt? Versuchen wir gemeinsam eine Lösung zu finden!"
Aufgabenstellung
Das Ei und Löffel Spiel ist ein Geschicklichkeitsspiel bei dem von der Spielerin oder dem Spieler ein Ei über eine gewisse Distanz auf einem Löffel transportiert werden muss, ohne dass es auf den Boden fällt. Die Spielerin oder der Spieler muss also mit dem Ei vorsichtig umgehen und braucht dabei Geschick und Geduld, um das Ei problemlos zu balancieren. Wenn das Ei auf den Boden fällt hat die Spielerin oder der Spieler verloren und muss neu beginnen.
Um keine Eier zu beschädigen, wollen wir mit dem BBC micro:bit das Ei-Löffel Spiel simulieren. Dazu muss der micro:bit als Ei programmiert werden und auf der oberen Handfläche der Spielerin oder des Spielers balanciert werden. Wenn du also zu schnell gehst und deine Handfläche zu sehr mit dem micro:bits schwankt, würde das echte Ei zu Boden gefallen sein. Der leuchtende Punkt auf der LED Matrix sollte möglichst sein ursprüngliche zentrale Position behalten.
- Auf der LED Matrix des micro:bits soll das Ei dargestellt werden.
- Mit dem Beschleunigungssensor kannst du die Bewegung und die Lage des micro:bits erfassen und auch die Reaktionsempfindlichkeit über den Sensorwert einstellen.
- Die Sensorwerte werden in einer Endlosschleife regelmäßig abgefragt.
- Der Micro:bit muss auf der Handfläche auch befestigen werden (Gummiband)
Materialien
- BBC micro:bit
- Klebeband um Start- und Ziellinie des zu überwindenden Weges zu markieren
- Löffel und Ei zum Kennenlernen des Spiels
- Doppelklebeband
- Blatt Papier
- 3 Gummiringe
Zeitaufwand
- 2 Unterrichtseinheiten
Schwierigkeitsgrad
Kompetenzen
Du solltest bereits
- das Koordinatensystem kennen.
- wissen, wie man Punkte in einem Koordinatensystem angibt.
- was eine Endlosschleife bedeutet.
Bei dieser Aufgabe lernst du
- wie du Werte des Beschleunigungssensors nutzen kannst, um einen Punkt auf der LED Matrix tanzen zu lassen.
Beim Programmieren lernst bzw. übst du
- Variablen anzulegen.
- Operatoren zu verwenden.
- den Beschleunigungssensor zu nutzen.
- Bedingungen einzusetzen.
Unterrichtsfächer
- Mathematik
- Informatik
- Digitale Grundbildung
- Deutsch
Tipps und Hilfestellungen
Wenn du genau gelesen hast, dann wollen Sonja und Elias das Ei- und Löffelspiel mit dem micro:bit durchführen und dafür ein Programm schreiben.
Erforderliche Programmierblöcke
Ziel
- Stelle das Ei symbolisch als eine einzeln leuchtende LED in der Mitte der LED Matrix dar.
- Der micro:bit (Ersatz für das Ei) muss beim Gehen so genau balanciert werden, dass sich die leuchtende LED sich nicht aus der Grundstellung bewegt, nicht aus der Matrix kippt.
- Das 5 x 5-Raster der LEDs auf dem micro:bit stellt ein Koordinatenraster mit einer horizontalen x-Achse und einer vertikalen y-Achse dar. Der Ursprung befindet sich bei diesem System in der oberen linken Ecke und mithilfe der Koordinatenpaare ist die Position der einzelnen LEDs eindeutig festgelegt. Die Werte der x-Koordinaten reichen von 0 bis 4 und steigen von links nach rechts an. Die Werte der y-Koordinaten steigen von 0 bis 4 von oben nach unten an.
- Der Beschleunigungssensor funktioniert mit x-, y- und z-Koordinaten. Diese werden dazu verwendet, um zu sehen, wie weit sich der micro:bit in jede Richtung bewegt hat. Liegt der micro:bit völlig waagrecht und unbeweglich, so sind die Werte für die Beschleunigung ax und ay Null. Die z-Achse spielt bei unserem Beispiel keine Rolle - diese wäre die Beschleunigungsmessen nach unten.
Blöcke (Welche Programmteile benötigt man)
- Beim Spielstart wird die Position des Eies auf der LED Matrix in der Mitte festgelegt - mit der X- und Y-Koordinate auf 2/2. <spoiler text="Block">
let x = 2 let y = 2
</spoiler>
- In einer Endlosschleife frage man den Wert der Bewegungsänderung in Richtung X- und Y-Achse ab. Diese Werte werden in den accX und accY gespeichert.<spoiler text="Block">
basic.forever(function () { led.plot(x, y) accX = input.acceleration(Dimension.X) accY = input.acceleration(Dimension.Y) })
</spoiler>
- Die leuchtende LED, die das Ei darstellt, darf sich nicht außerhalb der LED Matrix bewegen. Die X und Y-Koordinaten dürfen nur Werte von 0 bis 4 annehmen. Mithilfe von Bedingungen im Zusammenspiel mit dem Bewegungssensor wird die jeweilige Kipprichtung des micro:bits dauerhaft in der Endlosschleife überprüft und die entsprechende Änderung der Variablen festgelegt. <spoiler text="Block">
basic.forever(function () { if (accX < -150 && x > 0) { x += -1 } else if (accX > 150 && x < 4) { x += 1 } if (accY < -150 && y > 0) { y += -1 } else if (accY > 150 && y < 4) { y += 1 } })
</spoiler>
- Wie sensibel der micro:bit auf die Handbewegung reagiert, legt die Größe des angegebenen Zahlenwertes der Beschleunigung fest. Das Vorzeichen Plus oder Minus beim Zahlenwert bestimmt die Neigungsrichtung des micro:bits. Für die X-Achse bedeutet das, dass das Vorzeichen Minus die Neigung nach links und das Vorzeichen Plus die Neigung nach rechts angibt. Für die Y-Achse stellt das Minus die Neigung nach vorne und das Plus die Neigung nach hinten dar.
- Suche dir in der letzten Block-Darstellung die Grenzwerte -150 und +150, wird der micro:bit mehr als dieser Wert geneigt, dann wird die Anzeige verändert.
- Zusatzinformation: Der Wert 150 ist nur eine geringe Neigung, bei einer vollen Neigung nach links (um 90°) ergäbe das einen Messwert von -1023, eine volle Neigung nach rechts ergibt +1023. Genauso bei der y-Neigung.
Tipps zur Umsetzung
- Für die Bedingung musst du dir auch überlegen, wie rasch und sensibel der micro:bit bei Bewegung reagieren soll. Der vorgeschlagene Zahlenwert beträgt in diesem Beispiel 150.
- Erstelle das Programm in der Programmieroberfläche, teste erst einmal mit dem Simulator in der Programmieroberfläche.
- Lade das Programm auf den micro:bit und teste die Genauigkeit der Neigung - noch ohne Zusatzmaterial - das Programm sollte durch Kippen des BBC micro:bit richtig reagieren.
- Erst dann klebe das Batteriepack mit einem Doppelklebeband auf einen Löffel und gestalte den micro:bit als Ei. Die LED Matrix soll dabei sichtbar sein.
- Verwende am besten einen Kunstofflöffel, damit keine Kurzschlüsse auf dem Metalllöffel entstehen können.
Schritt für Schritt zur Lösung
- Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der Lösungsseite zu diesem Beispiel
Präsentation und Reflexion
Allgemein
- Probiere das Ei und Löffelspiel zuerst mit Ei und Löffel aus, verwende danach den micro:bit für dieses Bewegungsspiel. Vergleiche die Ergebnisse und berichte über deine Erfahrungen.
- Stelle dein Ergebnis vor! Zeige, was dein Produkt kann.
- Was hat dir bei der Entwicklung dieses Spiels gefallen?
- Welche Schwierigkeiten hattest du bei der Umsetzung? Wie konntest du diese lösen?
- Erläutere, wie du dein Produkt programmiert hast und welche Funktionen du verwendet hast!
- Was war bei dieser Aufgabe interessant für dich?
- Gestalte einen Team Bewerb. Mache den Vergleich und starte einen Wettbewerb. Ein Spieler eine Spielerin mit Löffel und Ei und ein zweiter mit dem micro:bit.
- Probiere das Spiel mit verschiedenen Variationen aus. Führe einen Staffellauf mit Eiübergabe (micro:bit Übergabe) und zwei Wettbewerbsteams durch. Lasse zwei Wettbewerbteams antreten.
Projektspezifisch
- Welche Regeln sind für die Genauigkeit festgelegt?
- Wo findet man in der Praxis Lagesensoren und Beschleunigungsmesser?
- Wo braucht man bei einem Computerspiel den Lagesensor und Beschleunigungsmesser?
- Vergleiche auch: Welche Variante des Spiels (Ei oder Computer) macht mehr Spaß - welche Variante ist "schonender"?
Weiterentwicklung
- Experimentiere mit deinem Programm, teste das Spiel mit verschiedenen Schwierigkeitsgraden.
- Ändere auch den Pausierwert und beobachte das Spiel.
- Lasse als Zeichen, dass das Ei hinuntergefallen und das Spiel zu Ende ist, ein rotes X Symbol anzeigen.
- Der micro:bit soll laut einige nervige Töne abspielen wenn das Ei hinunterfällt. Komponiere selbst eine Melodie.
- Programmiere einen weiteren micro:bit als Stoppuhr und setze ihn beim Spiel für den Wettbewerb ein. Anregungen und Tipps, wie du den micro:bit als Stoppuhr programmierst findest du hier: Link
Weitere Erweiterungsaufgaben
Analysiere diesen Programmcode:
Erkläre deiner Mitschülerin und deinem Mitschüler mit eigenen Worten, was in diesem Programm schrittweise passiert.
- Welche besonderen Funktionen sind hier sichtbar?
- Besprecht gemeinsam, welche Werte man ändern kann und was die jeweilige Änderung bewirkt.
<spoiler text='Erweiterungsaufgabe 1'>
basic.forever(function () { if ((x == 0) || (x == 4)) { basic.showIcon(IconNames.No) } if ((y == 0) || (y == 4)) { basic.showIcon(IconNames.No) } led.plot(x, y) accX = input.acceleration(Dimension.X) accY = input.acceleration(Dimension.Y) if (accX < -150 && x > 0) { x += -1 } else if (accX > 150 && x < 4) { x += 1 } if (accY < -150 && y > 0) { y += -1 } else if (accY > 150 && y < 4) { y += 1 } basic.pause(500) basic.clearScreen() }) let accY = 0 let accX = 0 let x = 2 let y = 2
</spoiler> Dieses Erweiterungsprogramm ist hier aufrufbar: Link
<spoiler text='Erweiterungsaufgabe 2'>
let accY = 0 let accX = 0 let x = 2 let y = 2 let empfindlichkeit = 100 basic.forever(function () { led.plot(x, y) if ((x == 0) || (x == 4)) { music.playTone(262, music.beat(BeatFraction.Whole)) } if ((y == 0) || (y == 4)) { music.playTone(262, music.beat(BeatFraction.Whole)) } accX = input.acceleration(Dimension.X) accY = input.acceleration(Dimension.Y) if (accX < empfindlichkeit * -1 && x > 0) { x += -1 } else if (accX > empfindlichkeit && x < 4) { x += 1 } if (accY < empfindlichkeit * -1 && y > 0) { y += -1 } else if (accY > empfindlichkeit && y < 4) { y += 1 } basic.pause(500) basic.clearScreen() })
</spoiler> Dieses Erweiterungsbeispiel ist hier aufrufbar: Link