**Dies ist eine alte Version des Dokuments!**
Micro:Bit Aufgaben
Informationen
Editor:
- Wir arbeiten ausschliesslich mit dem Online-Editor. Achtung: funktioniert nicht in allen Browsern. Sicher funktioniert er in Chrome.
- Die Verwendung des Mu-Editors ist nicht gestattet (da er keinen Simulator besitzt).
- Da wir im Online-Editor arbeiten, ist das Speichern etwas mühsam:
- Wir müssen die Codes von Hand in ein File auf dem Computer kopieren.
- Verwende dazu die folgende Vorlage: Template Aufgaben
- Bonus bei diesem Vorgehen: schöne Übersicht von allen deinen Codes!
Bemerkungen:
- Achtung: Diese Thema ist ein bisschen anders organisiert als die bisherigen Themen, da hier die Theorie und Aufgaben strikt getrennt werden:
- Für gewisse Aufgaben gibt es zwei Versionen: Basic und Advanced. Hier hast du die Wahl. Falls dir das Programmieren gut läuft, solltest du die Advanced-Aufgaben lösen. Für TALITs (und solche, die es sein sollten) sind die Advanced-Aufgaben Pflicht.
- Adapter für USB C ↔ A müssen selbst mitgebracht werden.
1. Aufgaben A (Display)
Relevante Theorie:
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
- Ä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.
- 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 …
2. Aufgaben B (Tasten)
Relevante Theorie:
Aufgabe B1
Drückt man die linke Taste, wird ein Herz (oder irgend ein anderes Bild) 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()
or 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.
3. Aufgaben C (Beschleunigungssensor)
Relevante Theorie:
Aufgabe C1
Schreibe ein Programm, dass eine Ente anzeigt, wenn du den Microbit schüttelst und ein Haus, wenn du ihn nach oben drehst.
Aufgabe C2
Probiere den Code für den Magic8Ball unter im Link hier 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 C3
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 C4
Speichere das Programm aus Aufgabe C3 unter neuem Namen und ändere es:
- Es soll immer dann eine neue Zahl angezeigt werden, wenn der Microbit nach oben gedreht wurde.
- Das Display soll nur dann dunkel werden, wenn das Touch-Logo berührt wurde.
Aufgabe C5
Folgende Code-Zeilen erstellen eine Liste aus 10 Bildern unterschiedlicher Helligkeit:
my_images = [] for i in range(0, 10, 1): my_img = Image() my_img.fill(i) my_images.append(my_img)
In der For-Schleife geschieht Folgendes für jeden Wert von i, also von 0 bis 9, also zehn mal:
- Zuerst wird mit der Funktion
Image()
ein leeres Bild namensmy_img
erstellt. - Dieses Bild wird nun gefüllt: Die Funktion
fill()
füllt jedes Pixel des Bildes mit einer bestimmten Helligkeit. Weili
bei jedem Durchlauf erhöht wird, wirdmy_img
bei jedem Durchlauf um eine Stufe heller – von 0 (dunkel) bis 9 (ganz hell) - Das Bild wird der Liste
my_images
hinzugefügt.
Schreibe ein Programm, in das du obigen Code hinein kopierst, das die Bilder mit 200 Milliskeunden Verzögerung nacheinander endlos anzeigt.
Aufgabe C6
Speichere das Programm aus Aufgabe C5 unter neuem Namen und ändere es:
- Immer dann, wenn du die Taste A drückst, soll das nächste Bild aus der Liste angezeigt werden.
- Nach dem letzten (hellsten) Bild, soll wieder das erste angezeigt werden.
- Tipp: Damit du mit einem Tastendruck nicht gleich mehrere Bilder weiterspringst: baue eine Verzögerung mit
sleep()
ein.
Aufgabe C7 (Knacknuss)
Speichere das Programm aus Aufgabe C6 unter neuem Namen und ändere es:
- Das Display soll umso heller leuchten, je stärker du den Microbit hin und her schüttelst.
- Lese dazu den x-Wert aus dem Beschleunigungssensor aus.
- Dieser liegt im Bereich von +/- 2040. Du brauchst aber einen Index-Wert von 0…9.
- Tipps: Die Funktion
abs()
gibt den absoluten Wert, also den Betrag einer Zahl zurück. Der Operator//
(floor division) dividiert und rundet das Resultat auf ganze Zahlen ab.