Anwendung
Ausgehend von folgender Vorlage soll eine tickende Uhr programmiert werden:
from microbit import *
zeit = [
Image.CLOCK1,
Image.CLOCK2,
Image.CLOCK3,
Image.CLOCK4,
Image.CLOCK5,
Image.CLOCK6,
Image.CLOCK7,
Image.CLOCK8,
Image.CLOCK9,
Image.CLOCK10,
Image.CLOCK11,
Image.CLOCK12,
]
while True:
display.show(Image.CLOCK1)
Tastendruck erkennen
Auf dem Micro:Bit können die beiden Tasten A und B abgefragt werden. Es gibt zwei Möglichkeiten, den Zustand der beiden Knöpfe abzufragen:
is_pressed()- Prüft, ob die Taste gerade gedrückt ist (True/False).
was_pressed()- Prüft, ob die Taste seit der letzten Abfrage gedrückt wurde (True/False).
Beispiel
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
elif button_b.is_pressed():
display.show(Image.SAD)
else:
display.show(Image.ASLEEP)
from microbit import *
while True:
if button_a.was_pressed():
display.show(Image.HAPPY)
elif button_b.was_pressed():
display.show(Image.SAD)
sleep(1000)
Laden Sie nacheinander die Code-Beispiele 1 und 2 auf Ihren Micro:Bit und testen Sie das Verhalten der Programme beim Drücken der Tasten A und B. Beschreiben Sie die Unterschiede im Verhalten der beiden Programme.
Szenarien: Was passiert?
- Was passiert in Beispiel 1, wenn die Tasten
AundBgleichzeitig gedrückt werden? Können Sie das Verhalten mit dem Code erklären? - Was passiert in Beispiel 2, wenn ganz schnell nacheinander
- zuerst die Taste
Aund dannBgedrückt werden? - zuerst die Taste
Bund dannAgedrückt werden? - können Sie das Verhalten mit dem Code erklären?
- zuerst die Taste
Es soll eine Diashow programmiert werden, die mit der Taste B zum nächsten Bild und mit der Taste A zum vorherigen Bild wechselt. Ist man auf dem letzten Bild und klick B, so soll wiederum das erste Bild angezeigt werden (oder wenn auf dem ersten Bild A gedrückt wird, soll das letzte Bild angezeigt werden).
from microbit import *
bilder = [
Image.PACMAN,
Image.PITCHFORK,
Image.RABBIT,
Image.ROLLERSKATE,
Image.SAD,
Image.SCISSORS,
Image.SILLY,
Image.SKULL,
Image.SMILE,
Image.SNAKE,
Image.SQUARE,
Image.SQUARE_SMALL,
Image.STICKFIGURE,
Image.SURPRISED,
Image.SWORD,
Image.TARGET,
Image.TORTOISE,
Image.TRIANGLE,
Image.TRIANGLE_LEFT,
Image.TSHIRT
]
while True:
display.show(Image.PACMAN)
sleep(1000)
Hinweis 1
Erstellen Sie eine Variable bild_index, die den Index des aktuell angezeigten Bildes speichert. Welcher Index hat das erste Bild in der Liste bilder?
Hinweis 2
Wird B gedrückt, so soll der Index um 1 erhöht werden. Wird A gedrückt, so soll der Index um 1 verringert werden. Das aktuelle Bild muss natürlich noch angezeigt werden. Finden Sie heraus wie?
Hinweis 3
... das aktuelle Bild kann dann mit display.show(bilder[bild_index]) angezeigt werden.
Was passiert nun, wenn Sie am ersten Bild sind und A drücken? Was passiert, wenn Sie am letzten Bild sind und B drücken? Wie können Sie das verhindern?
Bonus-Aufgaben
- Fügen Sie einen Soundeffekt hinzu, der bei jedem Bildwechsel abgespielt wird. (Für vorwärts und rückwärts jeweils ein anderer Soundeffekt.)
- Zeigen Sie ein zufälliges Bild an, wenn der Micro:Bit geschüttelt wird.
- Schalten Sie automatisch zum nächsten Bild weiter, wenn für 5 Sekunden keine Taste gedrückt wurde.
Micro:Bit - Vordefinierte Bilder
Die Micro:Bit Bibliothek stellt eine Reihe vordefinierter Bilder zur Verfügung
bilder = [
Image.ANGRY,
Image.ARROW_E,
Image.ARROW_N,
Image.ARROW_NE,
Image.ARROW_NW,
Image.ARROW_S,
Image.ARROW_SE,
Image.ARROW_SW,
Image.ARROW_W,
Image.ASLEEP,
Image.BUTTERFLY,
Image.CHESSBOARD,
Image.CLOCK1,
Image.CLOCK2,
Image.CLOCK3,
Image.CLOCK4,
Image.CLOCK5,
Image.CLOCK6,
Image.CLOCK7,
Image.CLOCK8,
Image.CLOCK9,
Image.CLOCK10,
Image.CLOCK11,
Image.CLOCK12,
Image.CONFUSED,
Image.COW,
Image.DIAMOND,
Image.DIAMOND_SMALL,
Image.DUCK,
Image.FABULOUS,
Image.GHOST,
Image.GIRAFFE,
Image.HAPPY,
Image.HEART,
Image.HEART_S,
Image.ALL,
Image.HOUSE,
Image.MEH,
Image.MUSIC_CROTCHET,
Image.MUSIC_QUAVER,
Image.MUSIC_QUAVERS,
Image.NO,
Image.PACMAN,
Image.PITCHFORK,
Image.RABBIT,
Image.ROLLERSKATE,
Image.SAD,
Image.SCISSORS,
Image.SILLY,
Image.SKULL,
Image.SMILE,
Image.SNAKE,
Image.SQUARE,
Image.SQUARE_SMALL,
Image.STICKFIGURE,
Image.SURPRISED,
Image.SWORD,
Image.TARGET,
Image.TORTOISE,
Image.TRIANGLE,
Image.TRIANGLE_LEFT,
Image.TSHIRT,
Image.UMBRELLA,
Image.XMAS,
Image.YES
]