Loeffel-ei: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(31 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== [[File:Icon_story.png|30px|Icon]] Ei und Löffel Spiel == | == [[File:Icon_story.png|30px|Icon]] Ei und Löffel Spiel == | ||
[[File:Ei_Loeffel_lauf.png|400px|right]] | [[File:Ei_Loeffel_lauf.png|400px|right]] | ||
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?" <br> "Mmh, ich weiß nicht, hast du schon eine Idee?" Sonja antwortet: "Wir könnten das Ei | 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?" <br> "Mmh, ich weiß nicht, hast du schon eine Idee?" Sonja antwortet: "Wir könnten das Ei und Löffel Spiel machen! Was meinst du?" <br> Elias: "Ja, dabei hatten wir bisher immer Spaß, aber vielleicht peppen wir dieses Spiel etwas auf?"<br> Sonja: "Stimmt, wir könnten statt den Gegenständen Ei und Löffel den BBC micro:bit zum Einsatz bringen! Kannst du dir vorstellen, wie sich das praktisch umsetzen lässt? Versuchen wir gemeinsam eine Lösung zu finden!" <br> | ||
== [[File:Icon_gluehbirne.png|30px|Icon]] Aufgabenstellung == | == [[File:Icon_gluehbirne.png|30px|Icon]] 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. | 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 | Um keine Eier zu beschädigen, wollen wir mit dem BBC micro:bit das Ei und Löffel Spiel simulieren. Dazu muss der BBC 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 BBC micro:bit schwankt, würde das echte Ei zu Boden gefallen sein. Der leuchtende Punkt auf der LED Matrix sollte möglichst seine ursprüngliche zentrale Position behalten. | ||
* Auf der LED Matrix des micro: | * Auf der LED Matrix des BBC micro:bit soll das Ei dargestellt werden. | ||
* Mit dem Beschleunigungssensor kannst du die Bewegung und die Lage des micro: | * Mit dem Beschleunigungssensor kannst du die Bewegung und die Lage des BBC micro:bit erfassen und auch die Reaktionsempfindlichkeit über den Sensorwert einstellen. | ||
* Die Sensorwerte werden in einer Endlosschleife regelmäßig abgefragt. | * Die Sensorwerte werden in einer Endlosschleife regelmäßig abgefragt. | ||
* Der | * Der BBC micro:bit muss auf der Handfläche befestigt werden (Gummiband) | ||
== [[File:icon_material.png|30px|Icon]] Materialien == | == [[File:icon_material.png|30px|Icon]] Materialien == | ||
* BBC micro:bit | * BBC micro:bit | ||
* Klebeband um Start- und Ziellinie des zu überwindenden Weges zu markieren | * Klebeband, um Start- und Ziellinie des zu überwindenden Weges zu markieren | ||
* Löffel und Ei zum Kennenlernen des Spiels | * Löffel und Ei zum Kennenlernen des Spiels | ||
* Doppelklebeband | * Doppelklebeband | ||
Zeile 25: | Zeile 25: | ||
== [[File:icon_sanduhr.png|30px|Icon]] Zeitaufwand == | == [[File:icon_sanduhr.png|30px|Icon]] Zeitaufwand == | ||
* 2 Unterrichtseinheiten | * ca. 2 Unterrichtseinheiten | ||
== [[File:Icon_puzzle3.png|30px|Icon]] Schwierigkeitsgrad == | == [[File:Icon_puzzle3.png|30px|Icon]] Schwierigkeitsgrad == | ||
Zeile 33: | Zeile 33: | ||
== [[File:Icon_brain.png|30px|Icon]] Kompetenzen == | == [[File:Icon_brain.png|30px|Icon]] Kompetenzen == | ||
[[File:Loeffel_kreativ.png|thumb|frame| | [[File:Loeffel_kreativ.png|thumb|frame|]] | ||
[[File:Handflaeche oben mb.png|thumb|frame| | [[File:Handflaeche oben mb.png|thumb|frame|]] | ||
Du solltest bereits | Du solltest bereits | ||
* das Koordinatensystem kennen | * das Koordinatensystem kennen | ||
* wissen, wie man Punkte in einem Koordinatensystem angibt | * wissen, wie man Punkte in einem Koordinatensystem angibt | ||
* was eine Endlosschleife bedeutet | * wissen, was eine Endlosschleife bedeutet | ||
Bei dieser Aufgabe lernst du | Bei dieser Aufgabe lernst du | ||
* wie du Werte des Beschleunigungssensors nutzen kannst, um einen Punkt auf der LED Matrix tanzen zu lassen | * wie du Werte des Beschleunigungssensors nutzen kannst, um einen Punkt auf der LED Matrix tanzen zu lassen | ||
Beim Programmieren lernst bzw. übst du | Beim Programmieren lernst bzw. übst du | ||
* [[Variablen]] anzulegen | * [[Variablen]] anzulegen | ||
* [[Operatoren]] zu verwenden | * [[Operatoren]] zu verwenden | ||
* den [[Beschleunigungssensor]] zu nutzen | * den [[Beschleunigungssensor]] zu nutzen | ||
* [[Bedingungen]] einzusetzen | * [[Bedingungen]] einzusetzen | ||
== [[File:Icon faecher.png|30px|Icon]] Unterrichtsfächer == | == [[File:Icon faecher.png|30px|Icon]] Unterrichtsfächer == | ||
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 == | ||
Wenn du genau gelesen hast, dann wollen Sonja und Elias das Ei | Wenn du genau gelesen hast, dann wollen Sonja und Elias das Ei und Löffel Spiel mit dem BBC micro:bit durchführen und dafür ein Programm schreiben. | ||
=== Erforderliche Programmierblöcke === | === Erforderliche Programmierblöcke === | ||
==== Ziel ==== | ==== Ziel ==== | ||
* Stelle das Ei symbolisch als eine einzeln leuchtende LED in der Mitte der LED Matrix dar. | * 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 | * Der BBC micro:bit (Ersatz für das Ei) muss beim Gehen so genau balanciert werden, dass sich die leuchtende LED 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. | * Das 5 x 5-Raster der LEDs auf dem BBC 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 | * Der Beschleunigungssensor funktioniert mit x-, y- und z-Koordinaten. Diese werden dazu verwendet, um zu sehen, wie weit sich der BBC micro:bit in jede Richtung bewegt hat. Liegt der BBC 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 Beschleunigungsmessung nach unten. | ||
[[File:egg01.png|200px ]] ... [[File:Koordinatenraster.png|200px ]] ... [[File:microbitAchsen.png|200px ]] | [[File:egg01.png|200px ]] ... [[File:Koordinatenraster.png|200px ]] ... [[File:microbitAchsen.png|200px ]] | ||
Zeile 73: | Zeile 72: | ||
==== Blöcke (Welche Programmteile benötigt man) ==== | ==== Blöcke (Welche Programmteile benötigt man) ==== | ||
* Beim Spielstart wird die Position des Eies auf der LED Matrix in der Mitte festgelegt. <spoiler text="Block" | * 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"> | ||
<pre id="pre01"> | |||
* In einer Endlosschleife | let x = 2 | ||
* Die leuchtende LED, die das Ei darstellt, darf sich nicht außerhalb der LED Matrix bewegen. Die | let y = 2 | ||
* 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: | </pre> | ||
</spoiler> | |||
* | * In einer Endlosschleife fragt 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"> | ||
<pre id="01"> | |||
basic.forever(function () { | |||
led.plot(x, y) | |||
accX = input.acceleration(Dimension.X) | |||
accY = input.acceleration(Dimension.Y) | |||
}) | |||
</pre> | |||
</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 BBC micro:bit dauerhaft in der Endlosschleife überprüft und die entsprechende Änderung der Variablen festgelegt. <spoiler text="Block"> | |||
<pre id="01"> | |||
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 | |||
} | |||
}) | |||
</pre> | |||
</spoiler> | |||
* Wie sensibel der BBC 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 BBC micro:bit. 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 BBC 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 === | === 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. | * Für die Bedingung musst du dir auch überlegen, wie rasch und sensibel der BBC micro:bit bei Bewegung reagieren soll. Der vorgeschlagene Zahlenwert beträgt in diesem Beispiel 150. | ||
* Lade das Programm auf | * Erstelle das Programm in der Programmieroberfläche, teste erst einmal mit dem Simulator in der Programmieroberfläche. | ||
* Verwende am besten einen | * Lade das Programm auf den BBC 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 BBC micro:bit als Ei. Die LED Matrix soll dabei sichtbar sein. | |||
* Verwende am besten einen Kunststofflöffel, damit keine Kurzschlüsse auf dem Metalllöffel entstehen können. | |||
===Schritt für Schritt zur Lösung=== | ===Schritt für Schritt zur Lösung=== | ||
Zeile 93: | Zeile 123: | ||
===Allgemein=== | ===Allgemein=== | ||
* Probiere das Ei und | * Probiere das Ei und Löffel Spiel zuerst mit Ei und Löffel aus, verwende danach den BBC micro:bit für dieses Bewegungsspiel. Vergleiche die Ergebnisse und berichte über deine Erfahrungen. | ||
* Stelle dein Ergebnis vor! Zeige, was dein Produkt kann. | * Stelle dein Ergebnis vor! Zeige, was dein Produkt kann. | ||
* Was hat dir bei der Entwicklung dieses Spiels gefallen? | * Was hat dir bei der Entwicklung dieses Spiels gefallen? | ||
Zeile 99: | Zeile 129: | ||
* Erläutere, wie du dein Produkt programmiert hast und welche Funktionen du verwendet hast! | * Erläutere, wie du dein Produkt programmiert hast und welche Funktionen du verwendet hast! | ||
* Was war bei dieser Aufgabe interessant für dich? | * Was war bei dieser Aufgabe interessant für dich? | ||
* Gestalte einen | * Gestalte einen Teambewerb. Ein Spieler/eine Spielerin mit Löffel und Ei und ein zweiter/eine zweite mit dem BBC micro:bit. | ||
* Probiere das Spiel | * Probiere das Spiel in verschiedenen Variationen aus. Führe z.B. einen Staffellauf mit Eiübergabe (BBC micro:bit Übergabe) und zwei Teams durch. | ||
===Projektspezifisch=== | ===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"? | |||
==[[File:icon_plus.png|30px|Icon]] Weiterentwicklung == | ==[[File:icon_plus.png|30px|Icon]] Weiterentwicklung == | ||
Zeile 113: | Zeile 144: | ||
* Ändere auch den Pausierwert und beobachte das Spiel. | * Ä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. | * Lasse als Zeichen, dass das Ei hinuntergefallen und das Spiel zu Ende ist, ein rotes X Symbol anzeigen. | ||
* Der micro:bit soll | * Der BBC micro:bit soll einige laute und 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: [https://microbit.eeducation.at/wiki/Stoppuhr Link] | * Programmiere einen weiteren BBC micro:bit als Stoppuhr und setze ihn beim Spiel für den Wettbewerb ein. Anregungen und Tipps, wie du den BBC micro:bit als Stoppuhr programmierst, findest du hier: [https://microbit.eeducation.at/wiki/Stoppuhr Link] | ||
=== | === Weitere Erweiterungsaufgaben === | ||
Analysiere diesen Programmcode:<br> Erkläre deiner Mitschülerin | Analysiere diesen Programmcode:<br> Erkläre deiner Mitschülerin/deinem Mitschüler mit eigenen Worten, was in diesem Programm schrittweise passiert. | ||
* Welche besonderen Funktionen sind hier sichtbar? | * Welche besonderen Funktionen sind hier sichtbar? | ||
* Besprecht gemeinsam, welche Werte man ändern kann und was die jeweilige Änderung bewirkt. | * Besprecht gemeinsam, welche Werte man ändern kann und was die jeweilige Änderung bewirkt. | ||
[[ | <spoiler text='Erweiterungsaufgabe 1'> | ||
<pre id='pre01'> | |||
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 | |||
</pre> | |||
</spoiler> | |||
Dieses Erweiterungsprogramm ist hier aufrufbar: | |||
[https://makecode.microbit.org/_J6MV5cbkYKHL Link] | |||
<spoiler text='Erweiterungsaufgabe 2'> | |||
<pre id='pre01'> | |||
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() | |||
}) | |||
</pre> | |||
</spoiler> | |||
Dieses Erweiterungsbeispiel ist hier aufrufbar: | |||
[https://makecode.microbit.org/_gq6AFF45PXUV Link] | |||
<htmlet>makecode_embed</htmlet> | |||
Aktuelle Version vom 30. März 2022, 08:02 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 und 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 BBC 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 und Löffel Spiel simulieren. Dazu muss der BBC 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 BBC micro:bit schwankt, würde das echte Ei zu Boden gefallen sein. Der leuchtende Punkt auf der LED Matrix sollte möglichst seine ursprüngliche zentrale Position behalten.
- Auf der LED Matrix des BBC micro:bit soll das Ei dargestellt werden.
- Mit dem Beschleunigungssensor kannst du die Bewegung und die Lage des BBC micro:bit erfassen und auch die Reaktionsempfindlichkeit über den Sensorwert einstellen.
- Die Sensorwerte werden in einer Endlosschleife regelmäßig abgefragt.
- Der BBC micro:bit muss auf der Handfläche befestigt 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
- ca. 2 Unterrichtseinheiten
Schwierigkeitsgrad
Kompetenzen
Du solltest bereits
- das Koordinatensystem kennen
- wissen, wie man Punkte in einem Koordinatensystem angibt
- wissen, 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öffel Spiel mit dem BBC 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 BBC micro:bit (Ersatz für das Ei) muss beim Gehen so genau balanciert werden, dass sich die leuchtende LED nicht aus der Grundstellung bewegt, nicht aus der Matrix kippt.
- Das 5 x 5-Raster der LEDs auf dem BBC 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 BBC micro:bit in jede Richtung bewegt hat. Liegt der BBC 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 Beschleunigungsmessung 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 fragt 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 BBC micro:bit 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 BBC 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 BBC micro:bit. 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 BBC 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 BBC 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 BBC 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 BBC micro:bit als Ei. Die LED Matrix soll dabei sichtbar sein.
- Verwende am besten einen Kunststofflö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öffel Spiel zuerst mit Ei und Löffel aus, verwende danach den BBC 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 Teambewerb. Ein Spieler/eine Spielerin mit Löffel und Ei und ein zweiter/eine zweite mit dem BBC micro:bit.
- Probiere das Spiel in verschiedenen Variationen aus. Führe z.B. einen Staffellauf mit Eiübergabe (BBC micro:bit Übergabe) und zwei Teams durch.
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 BBC micro:bit soll einige laute und nervige Töne abspielen wenn das Ei hinunterfällt. Komponiere selbst eine Melodie.
- Programmiere einen weiteren BBC micro:bit als Stoppuhr und setze ihn beim Spiel für den Wettbewerb ein. Anregungen und Tipps, wie du den BBC micro:bit als Stoppuhr programmierst, findest du hier: Link
Weitere Erweiterungsaufgaben
Analysiere diesen Programmcode:
Erkläre deiner Mitschülerin/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