TigerJython4Kids
 robotics
buttons
Deutsch   English   

6. BUTTONS & SOUND

 

 

YOU LEARN HERE...

 

how to use the two micro:bit buttons to develop interactive programmes. You will also learn how to play sound with your robot.

 

 

HOW THE BUTTONS WORK ?

 

The micro:bit has two programmable buttons that make it possible to interactively influence the programme sequence during execution. The one on the left is addressed with the variable button_a, the one on the right with button_b.

The button_a.is_pressed() function returns True if button A is pressed (similar button_b.is_pressed()).

The button_a.was_pressed() function returns True if button A was pressed (similar button_b.was_pressed()).

 

 

 

EXAMPLES

 

Example 1: The LEDs flash when button A is pressed

The programme waits in an endless loop until the right button is pressed. As long as the button is pressed, the LEDs are switched on and off every 400 milliseconds.

from microbit import *
from mbrobot import *

repeat:
    if button_a.is_pressed():
        setLED(1)
        delay(400)        
        setLED(0)
        delay(400)
Copy to clipboard
 

The commands for the buttons are in the microbit module, which you must also import.


Example 2: Sound is played when a button is clicked

A short melody should be played when button A or B is clicked. The button_a.was_pressed() function returns True if button a has been pressed briefly.

The robot is equipped with a buzzer that can play sounds and melodies. Make sure that the buzzer switch is set correctly. The play(JUMP_UP) command from the music plays a short melody. Some melodies are built into the music module..

 

 

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)    
Copy to clipboard

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() 
Copy to clipboard

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)
Copy to clipboard

 

 

REMEMBER...

 

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.

 

 

TO SOLVE YOURSELF

 

 

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
Technical notes:

Melodies that are built into the music module (real mode only):

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