Für gewisse Aufgaben gibt es zwei Versionen: Basic und Advanced. Hier hast du die Wahl. Hast du keine Probleme mit den Aufgaben, solltest du die Advanced-Aufgaben lösen. Für TALITs sollte dies eigentlich der Standard sein.

Aufgabe A1

Schreibe ein Programm, das eine Ente auf dem Display zeigt.

Aufgabe A2

Schreibe ein Programm, das eine Animation aus fünf Bildern deiner Wahl zeigt. Jedes Bild soll eine Sekunde lang angezeigt werden.

Aufgabe A3

Basic

Das Display soll eine Animation zeigen, bei der das gesamte Display anfangs nur schwach, dann immer heller leuchtet. Erstelle dazu eine Liste aus selbst erstellten Bildern. Verwende dazu die Image(...) Funktion. Recherchiere selbst dazu, wie man diese verwendet.

Advanced 1
  • Ähnlich wie 'Basic'. Das Display soll aber regelmässig pulsieren (heller werden, dann wieder dunkler, wieder heller, …). Verwende keine Liste, sondern schreibe eine Funktion, die dir das passende Image erstellt.
Advanced 2
  • Mit den beiden Tasten soll nun die Pulsgeschwindigkeit (in einer vorgegebenen Range) eingestellt werden können.

Aufgabe A4 (Zusatzaufgabe: Advanced)

Mit set_pixel() und get_pixel() kannst du einzelne Pixel direkt ansteuern (siehe Hier findest du alle Funktionen, mit denen du das Display ansteuern kannst.)

Ein einzelnes Pixel soll nun die ganze LED-Matrix ablaufen: oberste Zeile von links nach rechts, dann zweite Zeile von links nach rechts …

Lösungen

Tipps zu den Aufgaben

Lösungen Aufgaben A

Aufgabe B1

Drückt man die linke Taste, wird ein Herz (oder eine Ente) angezeigt. Drückt man die rechte Taste, so erlöscht das Bild.

Aufgabe B2

Würfeln: Programmiere einen digitalen Würfel. Drückt man eine der beiden Tasten, so wird eine Zufallszahl (1-6) bestimmt und das entsprechende Würfelbild angezeigt.

Tipps:

  • Definiere zuerst Bilder für die sechs Seiten des Würfels.
  • Verwende das random-Modul, um eine random Zahl (resp. random Bild) zu bestimmen.

Spiele mit einer Kolleg:in (die den Würfel auch bereits korrekt programmiert hat) das Leiterspiel. Spiele maximal 5 Minuten. Klicke auf das Bild, damit es gross angezeigt wird.

Aufgabe B3

Fotostrecke: Befülle eine Liste mit einigen Bildern. Mit der linken und rechten Taste soll man die Bilder durchgehen können. Ist man am Ende der Liste angelangt, passiert nichts, wenn man weiter drückt.

Ist es hier besser, is_pressed() oder was_pressed() oder get_presses() zu verwenden? Warum?

Aufgabe B4 (Zusatzaufgabe, mittel)

Zwei Spielerinnen würfeln abwechslungsweise (eine mit linkem, eine mit rechtem Knopf). Es wird immer die jeweils gewürfelte Zahl angezeigt. Im Hintergrund werden für beide Spielerinnen diese Werte aufsummiert. Wer zuerst die Summe 42 (oder mehr) erreicht hat, hat gewonnen. Von dieser Spielerin wird dann das Lieblingstier angezeigt.

Lösungen Aufgaben B

Aufgabe C1

Rechenaufgabe (ohne micro:bit). Stelle dir vor, ein vom micro:bit gemessener Beschleunigungswert sei $2642$.

  1. Wie vielen $g$'s entspricht dies?
  2. Wandle um in $\text{m}/\text{s}^2$.

Aufgabe C2

Rechenaufgabe (ohne micro:bit). Unten sind die gemessenen Werte für die Beschleunigungen in die drei Koordinatenrichtungen angegeben. Berechne jeweils die Gesamtbeschleunigung:

  1. $(1728, 2020, 2040)$
  2. $(-508, -60, 892)$

Aufgabe C3

Zeige in der Konsole („Show serial“) die Beschleunigungen der drei Koordinatenrichtungen an. Pausiere den micro:bit nach jeder Messung z.B. für eine halbe Sekunde, damit du nicht mit Werten überflutest wirst.

  1. Laufe nun mit dem micro:bit und dem Computer durch das Zimmer und zwar so, dass die $x-$ und die $y-$Beschleunigung möglichst klein sind.
  2. Wie musst du den micro:bit halten und wie musst du dich bewegen?

Aufgabe C4 (Advanced)

  1. Schreibe ein Programm, welches die Gesamtbeschleunigung misst und den Wert in der Konsole ausgibt. Füge nach jeder Messung wieder eine Pause ein.
  2. Hältst du den micro:bit still, sollten der bekannte Wert $9.81$ (oder zumindest Wert in der Nähe davon) angezeigt werden, unabhängig davon, in welche Richtung der micro:bit zeigt.
  3. Bewege den micro:bit nun so, dass du eine möglichst grosse Beschleunigung misst. Beschädige ihn aber nicht!
  4. Mit den Tasten sollst du nun zwischen drei Modi umstellen können:
    1. Anzeige in mg (z.B. $1018$)
    2. Anzeige in $g$'s (z.B. $1.02$)
    3. Anzeige in $\text{m}/\text{s}^2$ (z.B. $9.98$)

Aufgabe C5 (Advanced)

Je fester der micro:bit beschleunigt wird, desto heller soll die LED-Matrix leuchten.

Tipp 1: Verwende evtl. deine Funktion aus A3 (Advanced 1), mit der du ein Bild von gewünschter Helligkeit erstellen kannst.

Tipp 2: Verwende die Funktion int(), um aus einer Kommazahl eine Ganzzahl zu machen.

Studiere zuerst den kurzen Theorieteil zum Erkennen von Gesten.

Aufgabe D1

Schreibe ein Programm, das eine Ente anzeigt, wenn du den Microbit schüttelst und ein Haus, wenn du ihn nach oben drehst.

Aufgabe D2

Probiere den Code für den Magic8Ball aus:

  • Versuche zuerst, den Code zu verstehen. Kopiere ihn dann in deinen Editor und speichere das Programm.
  • Lade das Programm auf den Microbit – jetzt kann dein Microbit in die Zukunft sehen:
  • Stelle ihm eine ja/nein-Frage zu deiner Zukunft und schüttle den Microbit – er wird dir eine hilfreiche Antwort anzeigen!

Aufgabe D3

Schreibe ein Würfel-Programm, das immer dann, wenn der Microbit geschüttelt wird, eine zufällige Zahl zwischen 1 und 6 anzeigt. Nach einer Sekunde soll das Display wieder dunkel werden. Benutze die Funktion randint() aus dem Modul random.

Aufgabe D4 (Advanced)

Programmiere Schere-Stein-Papier. Die Idee ist, dass du gegen eine Kolleg:in spielen kannst. Beide schütteln jeweils ihren Microbit und dann wird per Zufall eines der drei Symbole ausgewählt und angezeigt. Spiele Best of 5 (also wer zuerst drei Punkte hat).

Weitere Ideen:

  • Erweitere das Spiel zur 'The Big Bang Theory'-Variante Rock, Paper, Scissors, Lizard, Spock:
  • Füge am Anfang ein Menu ein, mit dem man z.B. folgendes festlegen kann:
    • die Anzahl Runden
    • den Spielmodus (falls du bereits 'Rock, Paper, Scissors, Lizard, Spock' implementiert hast)
    • jede Spieler:in kann zu beginn aus einer Reihe von Bildern ihr Bild auswählen. Am Schluss wird das Bild der Sieger:in angezeigt.

Aufgabe D5

Programmiere deine eigene Gesten-Erkennung nur mit dem Accelerometer-Sensor:

  • face up / down
  • up / down / left / right
  • shake
  • freefall

Aufgabe E1

Schreibe eine Programm, das auf Knopfdruck einen Ton mit music.pitch abspielt. Welche Frequenz musst du wählen, damit beim Button B eine Oktave zum Ton bei Button A ertönt?

Aufgabe E2

Schreibe eine Programm, das eine Melodie abspielt.

  • Verwende eingebaute Sounds mit audio.play().
  • Codiere deine eigene Melodie mit music.play().

Aufgabe E3

Schreibe ein Programm, das die Umgebungslautstärke auf dem Display angezeigt (microphone.sound_level() - Dokumentation). Je lauter, desto mehr und hellere Punkte sollen leuchten. Wie reagiert der Microbit auf das Programm aus E1 / E2, das auf einem anderen Gerät abgespielt wird?

Zusatzaufgabe E4: Mini-Keyboard

Schreibe ein Programm, um Musik abzuspielen. Verwende das pin_logo, pin1 und pin2 als berührungsempfindlicher Sensor (pin1.set_touch_mode(pin1.CAPACITIVE)). Wieviele Kombinationen der drei Pins gibt es? Das sollte für eine diatonische Tonleiter reichen…

  • Arbeite für diese Aufgaben in einer 2er-Gruppe.
  • Studiere zuerst die Theorie zu den Grundlagen.

Aufgabe F1: Secret Message!

Sendet euch geheime Nachrichten quer durch den Raum. Stellt sicher, dass ihr auf einem eigenen Kanal kommuniziert.

Aufgabe F2a: Happy or not?

  • Schreibe ein Programm, mit dem du deiner Kolleg:in deinen Gemütszustand per Funk mitteilen kannst. Je nachdem, welche Taste (inkl. Touch-Logo) du drückst, wird bei ihr ein anderes Smiley (Happy,Meh,Sad) angezeigt.
  • Gleichzeitig soll dein micro:bit auch den Gemütszustand deiner Kolleg:in empfangen können.
  • Achtung: Das Versenden von Bildern ist etwas umständlich. Deshalb ist es einfacher, z.B. Zahlen zu verschicken: 1 für Happy, 2 für Meh, 3 für Sad. Möchtest du aber wirklich ein Bild versenden, kannst du hier nachlesen, wie es geht.
  • Das Programm kann auch benutzt werden, um auf Fragen zu antworten: yes (happy), maybe (meh), no (sad). Interviewt euch gegenseitig, wobei ihr euch nur über den micro:bit Antworten geben dürft.

Aufgabe F2b: Send-a-Tune

  • Schreibe ein Programm, mit dem du deiner Kolleg:in eine Melodie senden kannst. Je nachdem, welche Taste (inkl. Touch-Logo) du drückst, wird bei ihr ein anderer Ton abgespielt.
  • Gleichzeitig soll dein micro:bit auch Töne empfangen können.
  • Erweiterungen:
    • Kannst du auch eine ganze Melodie versenden? Du könntest zum Beispiel die Töne mit Kommas trennen und nach dem Empfang mit string.split() in eine Liste aufteilen.
    • Statt eines Tons könntest du auch ein Bild versenden. Achtung: Das Versenden von Bildern ist etwas umständlich. Lies hier nach, wie es geht.

Aufgabe F3: Morsen

  • Schreibe ein Programm, welches gleichzeitig Morse-Zeichen senden und empfangen kann.
  • Die Symbole sollen auf der LED-Matrix angezeigt werden.
  • Verwende die Tasten, um eine Nachricht einzugeben: Linke Taste: Lang (Strich) , Rechte Taste: Kurz (Punkt)
  • Beispiel: S.O.S: ooo---ooo
  • Es gibt verschiedene Möglichkeiten, wie die Nachrichten übermittelt werden können, zum Beispiel:
    • 'Schreibe' zuerst ganze Nachricht und schicke sie erst, wenn sie ganz fertig ist (z.B. mit Touch-Logo).
    • Schicke jedes Symbol einzeln. Dann müssen die alten Nachrichten aber jeweils nach unten geschoben werden.

Aufgabe F4: micro:bits in love

Studiere die folgende Theorie zu Signalstärke und Distanzmessungen.

Die beiden micro:bits sollen beide ein HAPPY, MEH oder SAD-Smiley anzeigen - je nachdem wie weit sie auseinander sind. Da sie verliebt ineinander sind, sollen sie HAPPY sein, wenn sie möglichst nahe beieinander sind.

Aufgabe F5: Abstimmen

  1. Programmiere deinen Microbit so, dass du mit Mitschüler:innen Abstimmungen durchführen kannst:
    1. Wenn die A-Taste gedrückt wurde, sendet dein Micorbit die Nachricht „YES“ und zeigt auf dem Display das Bild Image.YES.
    2. Wenn die B-Taste gedrückt wurde, sendet dein Micorbit die Nachricht „NO“ und zeigt auf dem Display das Bild Image.NO.
    3. Wenn das Touch-Logo (pin_logo) berührt wird, zeigt das Display, wie viele YES- und wie viele NO-Nachrichten empfangen wurden. Der Text, der durch das Display scrollt, soll beispielsweise so aussehen: „Y: 3. N: 2“. Nach dieser Anzeige soll die Zähler wieder auf 0 gesetzt werden.
  2. Stimmt ab in Gruppen von drei oder mehr Personen
    • A stellt eine Frage, die anderen stimmen mit den Microbits ab.
    • A schaut auf ihrem Microbit, wie abgestimmt wurde.
    • Simmt beispielsweise darüber ab, wohin ihr Mittagessen gehen sollt oder ob das Fach Informatik besser ist als Physik.
    • Testet zuerst und überprüft, ob alle den gleichen Kanal / die gleiche Gruppe eingestellt haben.

Aufgabe F6: Abstimmen 2 (Zusatzaufgabe, schwierig)

Dein Programm in obiger Aufgabe hat ein Problem: Jemand könnte bei einer Frage mehrmals drücken und so meherere Stimmen abgeben. Wie kannst du verhindern, dass jemand mehr als eine Stimme abgeben kann? Indem jeder Microbit mit jeder Ja- und Nein-Stimme seine eigene Nummer mitsendet. In einer Liste kannst du die Nummer erfassen und jeweils überprüfen, ob diese Nummer schon abgestimmt hat oder nicht. Schreibe ein Programm, das du auf mehrere Microbits laden und dann faire Abstimmungen durchführen kannst.

Aufgabe F7: Maximale Distanz? (Zusatzaufgabe: einfach)

Was ist etwa die maximale Distanz in Sichtweite, über die zwei micro:bits miteinander kommunizieren können? Mache ein Experiment.

Wichtig: Die micro:bits müssen sich 'sehen' können.

Aufgabe F8: Nachricht versenden (Zusatzaufgabe: eher einfach)

Ähnlich wie die Morse-Aufgabe, nur soll jetzt eine normale Nachricht bestehend aus Buchstaben versendet werden können. Mit den beiden Knöpfen soll das Alphabet durchgegangen werden können. Mit dem Touch-Logo soll der Buchstabe versendet werden können.

Aufgabe F9: Schere-Stein-Papier revisited (Zusatzaufgabe: mittel-schwierig)

In einer früheren Aufgabe hast du Schere-Stein-Papier bereits einmal programmiert. Programmiere es nun so (um), dass die beiden Spieler:innen beide ihren micro:bit in der Hand halten. Um einen Zug zu machen, wird der micro:bit geschüttelt. Die micro:bit kommunizieren natürlich über BLE miteinander. Das Ergebnis eines Zuges und der aktuellste Spielstand könnte auch über den Lautsprecher ausgegeben werden. Im Dossier kannst du nachlesen, wie man Sounds abspielen kann.

  • Arbeite für diese Aufgaben in einer 2er-Gruppe.
  • Hier ist erklärt, wie der Distanzsensor und die Motorsteuerung funktionieren und wie der Microbit mit diesen Modulen kommuniziert.
  • Studiere auf jeden Fall die Theorie zum Maqueen Interface. Das brauchst du, damit du den Maqueen einfach steuern und seine Sensoren auslesen kannst.

Aufgabe G0: Distanzmesser

Schreibe ein Programm, das das Display heller werden lässt, je näher der Maqueen zu einem Objekt ist. Betrachte zuerst den Beispiel-Code in der Theorie zum Distanzmesser.

  • Das Programm soll für einen Distanz-Bereich zwischen 0 und 9 Dezimetern funktionieren.
  • Verwende eine bereits bekannte Methode, um die Display-Helligkeit abhängig von einer Variable zu setzen.

Aufgabe G1: Figur abfahren

  1. Studiere die Theorie zur Driver-Schnittstelle (motorsteuerung)
  2. Lasse den Maqueen ein Quadrat fahren.
  3. Lasse deinen Maqueen eine der folgenden Optionen abfahren:
    1. Für Geometriefreaks: anspruchsvolle Geometrische Figur (z.B. Pentagramm - wie berechnet man den Winkel der Spitzen? Nicht auf Wikipedia nachschauen!)
    2. Für Narzist:innen: eigener Name / Spitzname / Initialen
    3. Für Schleimer:innen: Name / Initialen der Lehrperson (aber kein Spitzname!)
    4. Für Royalist:innen: Portrait der Queen

Aufgabe G2: Fahren bis zum Hindernis

Verwende die Chassis-Schnittstelle. Wenn die A-Taste gedrückt wurde, soll der Roboter losfahren. Wenn er ein Hindernis (weniger als 8 cm) vor sich hat, soll er stopppen.

Aufgabe G3: Staubsaugroboter

Programmiere einen Staubsaugroboter: Fahre geradeaus bis zu einem Hindernis. Wende um einen zufälligen Winkel und wiederhole.

Probiere den Roboter aus - würde er funktionieren?

Aufgabe G4 (Advanced): Rendez-vous

Verwende deine Kenntnisse zur Funk-Steuerung, um folgende Aufgabe zu lösen:

  • der Roboter soll kollisionsfrei herumfahren (wie der Staubsaug-Roboter)
  • der Roboter soll mittels Radio andere Roboter finden und möglichst nahe zu ihnen fahren. Sind die zwei Roboter nah genug, sollen sie anhalten und ihre Bottom-LEDS auf die gleiche Farbe einstellen.

Aufgabe G5 (Advanced): Follow-the-line

Verwende den Bodensensor, um einer schwarzen Linie zu folgen. Signalisiere den Zustand der Bodensensoren mit den Front-LEDs.

  • Wie folgst du einer breiten Linie (5cm)?
  • Wie einer schmalen Linie (1cm)?

Aufgabe G6 (Medium): Remote Control

Aufgabe für 2 Personen: Schreiben Sie eine Fernsteuerung für den Maqueen. Der eine Microbit sendet Signale (links / rechts / geradeaus), der andere empfängt diese und setzt sie in Steuersignale für den Roboter um.

Mögliche Steuerbelegung:

  • Touch Logo: muss berührt werden, um zu fahren; ohne Buttons fährt er geradeaus.
  • Button A: fährt nach links (wenn Touch Logo gleichzeitig gedrückt)
  • Button B: fährt nach rechts (wenn Touch Logo gleichzeitig gedrückt)
  • gf_informatik/microbit_und_roboter_programmieren/aufgaben_hof.1694597051.txt.gz
  • Zuletzt geändert: 2023-09-13 09:24
  • von gra