Editor:
Bemerkungen:
Relevante Theorie:
Schreibe ein Programm, das eine Ente auf dem Display zeigt.
Schreibe ein Programm, das eine Animation aus fünf Bildern deiner Wahl zeigt. Jedes Bild soll eine Sekunde lang angezeigt werden.
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.
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 …
Relevante Theorie:
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.
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:
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.
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?
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.
Relevante Theorie:
Schreibe ein Programm, dass eine Ente anzeigt, wenn du den Microbit schüttelst und ein Haus, wenn du ihn nach oben drehst.
Probiere den Code für den Magic8Ball unter im Link hier aus:
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
.
Speichere das Programm aus Aufgabe C3 unter neuem Namen und ändere es:
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:
Image()
ein leeres Bild namens my_img
erstellt. fill()
füllt jedes Pixel des Bildes mit einer bestimmten Helligkeit. Weil i
bei jedem Durchlauf erhöht wird, wird my_img
bei jedem Durchlauf um eine Stufe heller – von 0 (dunkel) bis 9 (ganz hell)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.
Speichere das Programm aus Aufgabe C5 unter neuem Namen und ändere es:
sleep()
ein.Speichere das Programm aus Aufgabe C6 unter neuem Namen und ändere es:
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.Relevante Theorie:
Schreibe ein Programm, dass die Melodie Frère Jacques spielt (mit Pause zwischen gleichen Tönen), solange du die A-Taste gedrückt hältst:
Speichere dein Programm aus Aufgabe D1 unter neuem Namen und erweitere es:
Jetzt kannst du versuchen, Frère Jacques mit andern im Kanon zu spielen.
Speichere dein Programm aus Aufgabe D2 unter neuem Namen und erweitere es:
Schreibe ein Programm, das einen Alarm-Ton erzeugt:
Schreibe ein Programm, das einen Ton ausgibt, den du mit den Tasten einstellen kannst:
Schreibe ein Programm, das optisch und akustisch auf Bewegungen reagiert:
Tipp: Wenn du dir vordefinierte Melodien kurz anhören möchtest, ohne jedes Mal ein neues Programm auf den Microbit zu laden, kannst du bei verbundenem Microbit im Mu Editor auf die Taste REPL
drücken. Es erscheint ein Eingabefenster. Hier schreibst du Befehle direkt auf den Microbit: sobald du die Enter-Taste drückst, wird der Befehl ausgeführt: Zum Beispiel: music.play(music.BLUES)
. Probiere es aus!
Übrigens: REPL steht für Read-Evaluate-Print-Loop. Diese Funktion gibt es auch im Online-Editor über die Taste Open Serial
.
Schreibe ein Programm, das die Cancan-Melodie (siehe unten) in unterschiedlichen Tempi spielt:
#Cancan by Jacques Offenbach: melodyCancan = ['c4:16', 'd4:4', 'f4:4', 'e4:4', 'd4:4', 'g4:8', 'g4:8', 'g4:4', 'a4:4', 'e4:4', 'f4:4', 'd4:8', 'd4:8', 'd4:4', 'f4:4', 'e4:4', 'd4:4', 'c4:4', 'c5:4', 'b4:4', 'a4:4', 'g4:4', 'f4:4', 'e4:4', 'd4:4', 'c4:16', 'd4:4', 'f4:4', 'e4:4', 'd4:4', 'g4:8', 'g4:8', 'g4:4', 'a4:4', 'e4:4', 'f4:4', 'd4:8', 'd4:8', 'd4:4', 'f4:4', 'e4:4', 'd4:4', 'c4:4', 'g4:4', 'd4:4', 'e4:4', 'c4:8', 'c5:4', 'r:4']
Speichere dein Programm aus Aufgabe D7 unter neuem Namen und erweitere es: Zusätzlich zum Tempo soll nun auch die Tonlage verändert werden:
change_octave(step=1)
. Diese soll jede Note in der Liste melodyCancan
um eine Oktave erhöhen oder verringern. Wird der Funktion die Zahl 1 übergeben, so wird jede Note um eine Oktave erhöht; wird der Funktion die Zahl -1 übergeben, so wird Note um eine Oktave verringert.Relevante Theorie:
Speichert das Programm aus Aufgabe E1 unter neuem Namen und ändert es: Die Nachrichten sollen nun nicht mehr am Display angezeigt, sondern über das Speech-Modul gesprochen werden. Das ist nun nicht mehr so geheim.
Schreibt ein Programm, mit dem das Display des anderen Microbit leuchtet, solange ihr die Taste des einen Microbit gedrückt hält. So könntet ihr Morsezeichen übermitteln.
Über BLE kann ein Microbit als Beacon (engl. für Leuchtturm oder Blinklicht) fungieren. Ein BLE-Beacon sendet regelmässig eine einfache Nachricht. Der Empfänger kann dann die Signalstärke dieser Nachricht messen: Je näher der Beacon, desto stärker das Signal. Auf diese Weise kannst du feststellen, ob ein bestimmter Beacon in der Nähe ist.
Schreibt zwei Programme, eines für den Beacon (Sender) und eines für den Empfänger:
message = radio.receive_full()
werden in message
mehrere Elemente gespeichert: die Nachricht selbst [0], die Signalstärke [1] und die genaue Ankunftszeit der Nachricht in Mikrosekunden [2]. Eine solche Variable, die mehrere Elemente speichert, wird Tupel (engl. tuple) genannt. Im Unterschied zu einer Liste, die ebenfalls mehrere Elemente enthält, kannst du bei der Tupel nicht einzelne Elemente ändern, nur auslesen.signal = message[1]
.print()
an deinen Laptop senden.
Testet die beiden Programme und notiert euch die Werte für die grösste und die kleinste Entfernung zwischen Beacon und Empfänger. Die Werte könnt ihr ansehen, wenn ihr im Mu Editor die Taste Plotter
und dann REPL
drückt. Zum Testen des Programms könnt ihr einen Microbit in ein Maqueen-Fahrwerk stecken und ihn so ohne Kabel mit Strom versorgen.
Stellt sicher, dass alle von euch beide Programme verstehen!
Jetzt kennt ihr die Werte für das stärkste und für das schwächste Signal. Schreibt nun ein Programm für den Empfänger, das die Nähe de Beacons akkustisch angibt.
radio.config(power=1)
reduziert werden (standardmässig ist power auf 6). Schreibt ein Programm, mit dem ihr anonyme Umfragen durchführen könnt.
get_presses()
und füge zur Sicherheit den Tasten eine Verzögerung mit sleep(300)
hinzu, sodass bei jedem Tastendruck sicher nur eine Nachricht gesendet wird.Das Programm aus Aufgabe E erlaubt, dass mehrere Nachrichten vom selben Microbit gezählt werden. Bei einer Abstimmung kann so das Resultat verfälscht werden. Ändere das Programm so, dass jeder Microbit pro Umfrage nur einmal abstimmen kann – entweder ja oder nein. Teste das Programm erst mit wenigen und dann mit der ganzen Klasse.