Python Online
Home     .
sound

8. SOUND

 

 

DU LERNST HIER...

 

mit dem EV3 Töne und kurze Melodien abzuspielen. Für die Speicherung der Tonfolgen verwendest du Listen.

 

 

MUSTERBEISPIELE

 

Töne mit einer bestimmten Frequenz abspielen
Der EV3 verfügt über ein Soundsystem. Mit dem Befehle playTone(f, t) spielt der EV3 einen Ton mit der Frequenz f (in Hz) während t Millisekunden ab. Die Frequenzen einiger Töne findest du im Overlay-Fenster:

Um mehrere Töne nacheinander abzuspielen, erstellst du am besten eine Liste song mit den zugehörigen Frequenzen. Die Elemente einer Liste musst du in eckigen Klammern und mit Komma getrennt schreiben. Zum Abspielen durchläufst du die Liste mit einer for-Schleife.


Programm:

from ev3robot import *
                                 
robot = LegoRobot()
song = [264,297,330,352,396,440,495,528]
for f in song:
    robot.playTone(f, 200)  
robot.exit()
► In Zwischenablage kopieren

 

 

Töne während des Fahrens abspielen
Wenn du beim Fahren nichtblockierende Befehle verwendest, kann der Roboter gleichzeitig Töne abspielen. In deinem Beispiel bewegt sich der Roboter zuerst mit einem blockierenden Befehl forward(2000) vorwärts. Danach setzt er mit dem nichtblockierenden Befehl leftArc(0.3) die Bewegung auf einem Kreisbogen mit dem Radius 0.3 fort und kann während dieser Bewegung Töne abspielen.

Programm:

from ev3robot import *
robot = LegoRobot()
gear = Gear();
robot.addPart(gear);
gear.forward(2000)
gear.leftArc(0.3)

while not robot.isEscapeHit():
   robot.playTone(264, 400)  
   robot.playTone(352, 400) 
robot.exit()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Mit der Funktion playTone(f, t) spielt der EV3 einen Ton mit der Dauer t.. Die Funktion ist blockierend,  kehrt also erst zurück, wenn der Ton fertig gespielt ist. Daher kannst du nicht  mehrere Töne miteinander erzeugen. Wenn du während des Fahrens Töne abspielen willst, so musst du die nichtblockierenden Bewegungsfunktionen verwenden.


 

Bemerkung: Der EV3 kann auch Musik- oder Sprachdateien abspielen. Die Audio-Dateien musst du im WAV-Format (mono, Samplingrate 11025 Hz) speichern und auf den EV3 kopieren. Eine Anleitung und Beispiele dazu findest du unter www.jython.ch.

 

 

ZUM SELBST LÖSEN

 

 


1.


Spiele mit dem EV3 die folgende Melodie ab und ergänze die Liste mit weiteren Tonfrequenzen.

song = [262, 294, 330, 349, 392, 392, 392, 440, 440, 440, 440, 392]

2.
Es ist lustig, deine Programme mit Sound zu versehen. Hier bewegt sich der Roboter jeweils eine bestimmte Strecke vorwärts und danach die gleiche Strecke rückwärts und dreht um 90°. Vor der Vorwärtsbewegung spielt er drei verschiedene Töne, vor der Rückwärtsbewegung vier gleiche Töne ab.  

3.

Der Roboter mit einem Farbsensor bewegt sich auf einem Farbstreifen hin und zurück und  spielt beim Erkennen einer neuen Farbe einen kurzen unterschiedlichen Ton ab.



4.

Der EV3 mit einem Ultraschallsensor bewegt sich in senkrechter Richtung zu einer Wand und soll im Abstand von rund 10 cm vor der Wand den Rückwärtsgang einschalten und 3 ms rückwärts fahren. Danach soll er wieder vorwärts fahren und diese hin und her Bewegung "endlos" wiederholen.

Ergänze das Programm mit einem akustischen Alarm, der ausgelöst wird, wenn der Roboter mit seinem Ultraschallsensor die Wand detektiert.

 

   

 

8-1
Fachliche Hinweise:

Einige Tonfrequenzen :

Ton Frequenz Ton Frequenz    

h' 494 h'' 988    
a' 440 a'' 880    
g' 392 g'' 784    
f' 349 f'' 698    
e' 330 e'' 660    
d' 294 d'' 588    
c' 262 c'' 524 c''' 1048

Die Frequenzen lassen sich berechnen. Wenn man von einem Grundton (z. Bsp. a' mit f = 440 Hz) ausgeht, erhält man die Frequenz des darauf folgenden Halbtons mit dem Faktor 1.05946 und den nächsten ganzen Ton mit dem Faktor 1.05946 * 1.05946 ≈ 1,122. (z. Bsp. h' = 440 * 1.122 = 494). Die Frequenzen in der Tabelle sind gerundet.