TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
buttons

6. BUTTONS & SOUND

 

 

DU LERNST HIER...

 

wie man die beiden micro:bit-Buttons verwendet, um interaktive Programme zu entwickeln. Zusätzlich lernst du, wie du mit deinem Roboter Sound abspielen kannst.

 

 

WIE FUNKTIONIEREN DIE BUTTONS

 

Der micro:bit verfügt über zwei programmierbare Buttons, die es ermöglichen, interaktiv während der Programmausführung den Programmablauf zu beeinflussen. Der linke wird mit der Variablen button_a, der rechte mit button_b angesprochen.

Die Funktion button_b.is_pressed() gibt True zurück, wenn der Button B gedrückt ist (analog button_a.is_ pressed()).

Die Funktion button_a.was_pressed() gibt True zurück, wenn der Button A kurz gedrückt wurde (analog button_b.was_pressed()).

 

 

 

MUSTERBEISPIELE

 

Beispiel 1: Beim Drücken des Buttons B blinken die LEDs

Das Programm wartet in einer Endlosschleife, bis der rechte Button gedrückt wird. So lange der Button gedrück ist, werden die LEDs alle 400 Millisekunden ein- und ausgeschaltet.

from microbit import *
from mbrobot_plusV2 import *
#from mbrobot import *

repeat:
    if button_b.is_pressed():
        setLED(1)
        delay(400)        
        setLED(0)
        delay(400)
► In Zwischenablage kopieren
 

Die Befehle für die Buttons sind im Modul microbit, das du zusätzlich importieren musst.


Beispiel 2: Beim Klicken eines Buttons wird Sound abgespielt

Mit einem Klick auf den Button A oder B soll eine kurze Melodie abgespielt werden. Die Funktion button_a.was_pressed() gibt True zurück, wenn der Button a kurz gedrückt wurde.

Der Roboter ist mit einem Buzzer ausgestattet, der Töne und Melodien abspielen kann. Achte darauf, dass der Buzzer-Switch richtig gestellt ist. Der Befehl play(JUMP_UP) aus dem Modul music spielt eine kurze Melodie ab. Einige Melodien sind im Modul music eingebaut.

 

 

from microbit import *
from mbrobot import *
#from mbrobot_plusV2 import *
from music import *

repeat: 
    if button_a.was_pressed():
        play(JUMP_UP)
    if button_b.was_pressed():
        play(JUMP_DOWN)    
► In Zwischenablage kopieren

Das Modul music kann nur im Realmodus importiert werden. Zum Testen Im Simulationmodus kannst du diese Importzeile auskommentieren und den Befehl playTone(440, 1000) verwenden (440 ist di Tonfrequenz, 1000 die Abspieldauer in ms)


Beispiel 3: Ein Programm mit Button abbrechen

Bei den fahrenden Robotern ist es vorteilhaft eine Endlos-Schleife zu verwenden, die nur so lange wiederholt wird, bis ein Button gedrückt wurde.

Der Roboter fährt zum Hindernis, das er mit seinem Ultraschallsensor detektiert und wieder zurück.

 

Solange der Button A nicht gedrückt wurde, wiederholt der Roboter die Befehle in der while-Schleife. Mit dem Buttonklick wird die Schleife beendet und das Programm wird mit dem Befehl stop() fortgesetzt.


from microbit import *
from mbrobot import *
#from mbrobot_plus import *

setSpeed(15)
forward()
while not button_a.was_pressed():
    d = getDistance()
    if d < 10:
        backward()
        delay(1000)
        forward()
    delay(200)
stop() 
► In Zwischenablage kopieren

Beispiel 4: Den Roboter mit Buttons steuern

Mit Klick auf die Button a bzw. b sollst du den Roboter durch das Labyrinth führen. Der Roboter fährt jeweils vorwärts, wenn er mit seinen Lichtsensoren dunkel "sieht" fährt er kurz zurück und bleibt stehen. Wenn du den Button a drückst, dreht er 90° nach links und fährt wieder vorwärts, bis zur nächsten dunklen Kante. Mit Klick auf Button b biegt er rechts ab.

Bei der Ausführung im Simulationsmodus erscheint zusätzlich ein Fenster mit einem micro:bit Bild (eventuell musst du das andere Grafikfenster verschieben). Die Buttons bedienst du mit Mausklick.

 

from microbit import *
from mbrobot import *
#from mbrobot_plus import *

RobotContext.useBackground("sprites/bg.gif")  
RobotContext.setStartPosition(310, 460)

forward()
repeat:
    v = irLeft.read_digital()
    if v == 0:
        backward()
        delay(500)
        stop()
    if button_a.was_pressed():
        left()
        delay(550)
        forward()
    elif button_b.was_pressed():
        right()
        delay(550)     
        forward()
    sleep(10)
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Mit Buttons kannst du  interaktive Programme entwickeln. Die Funktion is_pressed() gibt True zurück, wenn der Button gedrückt ist. Die Funktion was_pressed() gibt True zurück, wenn seit dem Start des Programms oder seit dem letzten Aufruf irgendwann mal geklickt wurde.

 

 

ZUM SELBST LÖSEN

 

 

1.

Mit Klick auf den Button a wird der Alarm ausgelöst, mit Klick auf den Button b wird der Befehl setAlarm(0) aufgerufen und der Alarm gestoppt.

 

2.

Mit Klick auf den Button a soll der Roboter 2000 Millisekunden vorwärts fahren und anhalten, beim Klicken des Buttons b 2000 Millisekunden rückwärtsfahren und anhalten.

3.

Der Roboter soll durch die Parcours durchfahren, indem du ihm mit Klick auf den Button a bzw. Button b mitteilst, ob er links oder rechts abbiegen soll.

Löse die Aufgabe im Simulationsmodus und verwende das Hintergrundbild bg2.gif

 

 
4.

Im Kapitel 2 unter Zusatzstoff kannst du nachschauen, wie man die LEDs einzeln ein- und ausschalten kann. Schreibe ein Programm, welchels beim Klicken des linken Buttons das linke LED einschaltet und das rechte LED ausschaltet und beim Klicken des rechten Buttons das rechte LED einschaltet und das linke ausschaltet.

5.

Teste den Buzzer deines Roboters. Falls du micro:bit V2 hast, kann der Sound entweder mit dem Buzzer auf dem micro:bit oder mit dem Buzzer auf dem Roboter-Board abgespielt werden. Du kannst es mit dem Buzzer-Switch (siehe Beispiel 2) festlegen.

Importiere in deinem Programm das Modul music und spiele mit dem Befehl
play(sound) einige Melodien ab. Die Liste der vordefinierten Melodien findest du auch in der Dokumentation.

Mit dem Befehl pitch(784, 400) aus dem Modul music kannst du einzelne Töne abspielen. Der erste Parameter ist die Tonfrequenz, der zweite Abspieldauer.



 

   

 

6-1
Fachliche Hinweise:

Melodien, die Modul music eingebaut sind (nur Realmodus):

ADADADUM - Eröffnung von Beethoven 5. Sinfonie in C Moll
ENTERTAINER - Scott Joplin Ragtime Klassiker
PRELUDE -J.S.Bach 48 Preludien und Fugen
ODE - Ode an Joy Thema aus Beethoven 9. Sinfonie in D Moll
NYAN - das Nyan Cat Thema
RINGTONE - ein Klingelton
FUNK - ein Geräusch für Geheimagente
n BLUES - ein Boogie-Woogie Blues
BIRTHDAY - Happy Birthday to You...
WEDDING - der Chorus des Bräutigams aus Wagner Oper Lohengrin
FUNERAL - der Trauerzug, Chopin Klaviersonate
PUNCHLINE - a lustiger Tonclip, nachdem ein Witz gemacht wurde
PYTHON - aus Monty Python Flying Circus
BADDY - Filmclip aus The Baddy
CHASE - Filmclick aus einer Jagdszene
BA_DING - ein Signalton, der darauf hinweist, dass etwas geschehen ist
WAWAWAWAA - ein trauriger Posaunenklang
JUMP_UP - für Spiele, um auf eine Aufwärtsbewegung hinzuweisen
JUMP_DOWN - für Spiele, um auf eine Abwärtsbewegung hinzuweisen
POWER_UP - ein Fanfarenklang
POWER_DOWN - ein trauriger Fanfarenklang, wenn etwas verloren gegangen ist