Edison Robotik: Lektion 5

Arbeitsblatt 5.1: Töne abspielen

In dieser Lektion musst du ein Programm schreiben, damit Edison eine Musiknote spielt, und du musst lernen, wie Edison Klänge in einem Programm spielt.
Mit der Ed.PlayTone () - Funktion in EdPy kannst du einzelne Musiknoten über Edisons kleinen Lautsprecher abspielen.
Die Funktion Ed.PlayTone () akzeptiert zwei Eingabeparameter: die Note und die Dauer. Die Note bestimmt, welche Note gespielt werden soll, und die Dauer bestimmt, wie lange die Note gespielt werden soll.
Diese Liste enthält die möglichen Parameterwerte:

Parameter Input Optionen Spielt Note Parameter Input Optionen Dauer
Ed.NOTE_A_6 tiefes A Ed.NOTE_SIXTEENTH 125 msec
Ed.NOTE_A_SHARP_6 tiefes Ais Ed.NOTE_EIGHTH 250 msec
Ed.NOTE_B_6 tiefes B Ed.NOTE_QUARTER 500 msec
Ed.NOTE_C_7 C Ed.NOTE_HALF 1000 msec
Ed.NOTE_C_SHARP_7 Cis Ed.NOTE_WHOLE 2000 msec
Ed.NOTE_D_7 D    
Ed.NOTE_D_SHARP_7 Dis    
Ed.NOTE_E_7 E    
Ed.NOTE_F_7 F    
Ed.NOTE_F_SHARP_7 Fis    
Ed.NOTE_G_7 G    
Ed.NOTE_G_SHARP_7 Gis    
Ed.NOTE_A_7 A    
Ed.NOTE_A_SHARP_7 Ais    
Ed.NOTE_B_7 B    
Ed.NOTE_C_8 hohes C    
Ed.NOTE_REST Rest    

Sehen wir uns die Tonwiedergabefunktion in einem Programm genauer an:

mg
Kannst du anhand der Parameterwertetabellen herausfinden, was das Programm tun wird?
Dieses Programm spielt 1 Sekunde lang eine tiefe B-Note.

Schritt 1: Spiele eine Note
Schreibe folgendes Programm:

zrtz

Lade das Programm herunter und teste es, um zu sehen, wie es sich anhört.

Schritt 2: Spiele eine Notiz und fahre dann? Oder während der Fahrt eine Note spielen?
Wenn Edison Sounds spielt, geschieht dies im Hintergrund. Dies bedeutet, dass das Programm in die nächste Codezeile wechselt, sobald Edison mit dem Abspielen des Sounds beginnt. Der Sound wird weiterhin im Hintergrund abgespielt, während Edison das Programm fortsetzt.
Wenn Edison warten soll, bis der Sound beendet ist, musst du die Ed.ReadMusicEnd () -Funktion in einer "while" -Schleife verwenden.
Schreibe folgendes Programm:

ertz
Lade das Programm herunter und teste es.

1. Beschreibe, was passiert ist, als du dieses Programm ausgeführt hast.

2. Sieh dir die Zeilen 13 und 14 des Programms an. Denke daran, dass Ausdrücke die linke Seite mit der rechten Seite der Notation im Ausdruck vergleichen. Was macht diese Schleife?

dhfg

Lade das Programm herunter und teste es.

3. Beschreibe, was passiert ist, als du dieses Programm ausgeführt hast.

4. Warum hat sich dieses Programm anders verhalten als das letzte?

Lektion 5: Arbeitsblatt 5.2 - Alarm auslösen
In dieser Einheit musst du ein Programm schreiben, mit dem Edison einen Alarm mit einer von dir festgelegten Frequenz spielt.
Mit der Funktion Ed.PlayTone () kannst du die genaue Frequenz des Klangs, den Edisons Lautsprecher erzeugt, mithilfe von Zahlen und Variablen anpassen.

Frequenz in der Akustik
Wie du vielleicht weißt, bewegt sich Schall in Wellen, die als Schallwellen bezeichnet werden. Die Akustik, der Zweig der Physik, der sich mit Schall und Schallwellen befasst, befasst sich mit allem, was mit Schall zu tun hat, einschließlich der Messung.
Eine Möglichkeit zur Schallmessung ist die Messung der Frequenz. Die Frequenz ist die Anzahl der Wellen, die in einem bestimmten Zeitraum einen Punkt passieren.
Die Frequenz wird am häufigsten in Zyklen pro Sekunde (Zyklus / Sekunde) gemessen. Die Basiseinheit für die Frequenz ist Hertz, abgekürzt Hz.
Ein Hertz entspricht einer vollständigen Welle pro Sekunde.
Hast du gewusst? Der menschliche Hörbereich beträgt 20 Hz ~ 20000 Hz.

Häufigkeit und Periode
Zusätzlich zu den in EdPy voreingestellten Noten können wir Edison auch so programmieren, dass er Sounds mit verschiedenen Frequenzen spielt.
Dazu konvertieren wir Frequenzen in Perioden, die Edison verstehen kann.
Eine Periode gibt an, wie lange eine akustische Welle benötigt, um einen vollständigen Zyklus abzuschließen. Da wir Hertz verwenden, messen wir die Frequenz in Zyklen pro Sekunde.
In der Akustik nimmt die Frequenz mit zunehmender Periode ab.
Schauen wir uns einige Beispiele an, wie Häufigkeit und Periode zusammenhängen:
• Wenn eine Welle eine Periode von 0,5 Sekunden hat, hat sie eine Frequenz von 2 Hz, da sie 2 Zyklen in 1 Sekunde ausführen kann.
• Wenn eine Welle eine Periode von 2 Sekunden hat, hat sie eine Frequenz von 0,5 Hz, da sie nur einen halben Zyklus in 1 Sekunde abschließen kann.

Konvertiere die Frequenz in einen Zeitraum für dein Programm
Damit Edison eine benutzerdefinierte Frequenz spielt, müssen wir den Wert der Periode berechnen. Dies ist die Nummer, die wir in den Parameter "note" in Ed.PlayTone () eingeben.
Teile die Zahl 8.000.000 durch die gewünschte Frequenz, um eine Frequenz in eine Periode umzuwandeln. So spielst du beispielsweise einen 1-kHz-Ton (1000 Zyklen pro Sekunde) ab:

8000000 / 1000 = 8000


Du bist dran:
Aufgabe 1: Spiele  einen benutzerdefinierten Ton
Schreibe folgendes Programm:

qsdfs
Lade es herunter und teste es, um zu hören, wie dieses Programm klingt.

Aufgabe 2: Spiele einen Alarm
In diesem Programm soll Edison Noten von zunehmender Dauer spielen.
Um das Alarmprogramm zu erstellen, musst du eine for-Schleife, Variablen und die range () -Funktion verwenden. Du musst auch eine "while" -Schleife in das Programm einbinden.
Schreibe folgendes Programm:

nmk
Lade es herunter und teste, wie dieses Programm klingt.
1. Was hörst vom Roboter? Warum passiert dies?


Eine wichtige Fähigkeit beim Programmieren besteht darin, ein Programm nachvollziehen zu können, um zu verstehen, was gerade passiert. Programmierer führen eine Code-Ablaufverfolgung durch, um die Ausführung ihres Codes manuell zu simulieren und zu überprüfen, ob er ordnungsgemäß funktioniert, bevor sie ihn manuell kompilieren.
Beim Tracen durchläufst du das Programm zeilenweise und zeichnest wichtige Werte auf. Dies wird häufig durchgeführt, um Fehler oder „Bugs“ im Code zu finden. Es ist jedoch auch hilfreich, wenn du nur verstehen musst, was in einem Programm geschieht.
Versuche, die Ereignisse im Programm nachzuvollziehen, und beantworte die folgenden Fragen zum Programm.
2. Fülle die folgende Tabelle aus, indem du den Periodenparameter für jeden gegebenen Wert von "i" im obigen Code berechnest. Der erste Wert wird für dich ausgefüllt.

Wert von i Wert von i Periodenparameter
[der erste Eingabeparameter für PlayTone ()]
0 100
1  
2  


3. Was ist der Maximalwert von i?

4. Was ist der Maximalwert des Periodenparameters, der in die PlayTone () - Funktion eingegeben wird?


5. Wie viele Töne werden gespielt?

Versuch es!
Die Anwendung der Akustik in der Technik wird als Akustiktechnik bezeichnet.
Probiere eine eigene Akustiktechnik aus. Experimentiere mit dem Ändern der Parameter in PlayTone (), damit das Programm eine andere Klangkombination spielt.

Arbeitsblatt 5.3 - Spiele eine Melodie
In dieser Einheit musst du ein Programm schreiben, damit Edison eine musikalische Melodie spielt.
Mit der Funktion Ed.PlayTune () und einem speziellen Eingabetyp, der als "Zeichenfolge" bezeichnet wird, kann Edison einen Titel abspielen.
Verwenden einer String zum Spielen einer Melodie
In Python ist ein String eine Liste von Zeichen in der angegebenen Reihenfolge. Ein "Zeichen" ist alles, was du auf der Tastatur eingeben kannst, z. B. ein Buchstabe, eine Zahl oder ein Sonderzeichen wie $ oder #. Beispiel: "Meet Edison" ist eine Zeichenfolge mit 11 Zeichen (10 Buchstaben und 1 Leerzeichen).
In der EdPy-App musst du eine Zeichenfolge verwenden, um eine musikalische Melodie abzuspielen. Wir bezeichnen dies als "Tune String".
Melodiezeichenfolgen sind eine spezielle Zeichenfolge, die bestimmte Melodien darstellen. Tune-Strings bestehen aus Noten- und Dauereingaben, die durch einzelne Zeichen dargestellt werden.
Eine Melodie-Zeichenfolge sieht folgendermaßen aus: „ndndndndnd… ndz“ wobei n eine Note aus der Notentabelle und d die Dauer aus der Durationstabelle ist:

Notentabelle Zeittabelle
Stringzeichen spielt Note Stringzeichen spielt
m teiefs A 1 ganze Note
M tiefes Ais 2 halbe Note
n tiefes B 4 Viertelnote
c C 8 Achtelnote
C Cis 6 Sechszehntelnote
d D    
D Dis    
e E    
f F    
F Fis    
g G    
G Gis    
a A    
A Ais    
b b    
o hohes C    
R Rest    
z Ende Lied    


Alle Tune-Strings müssen mit dem Zeichen "z" enden, um korrekt zu enden.
Um einen Tune-String zu erstellen, musst du die Funktion Ed.TuneString () aufrufen, die über zwei Eingabeparameter verfügt. Die Größe der Zeichenfolge (dh die Anzahl der Zeichen in der Zeichenfolge) ist der erste Parameter, und die tatsächliche Zeichenfolge, die du spielen möchtest, ist der zweite Parameter.
Du kannst die Geschwindigkeit ändern, mit der dein Musikstück abgespielt wird, indem du die Variable Ed.Tempo im Setup-Code änderst.

Du bist dran:
Schreibe den folgenden Code, um die Melodie „Mary Had a Little Lamb“ zu spielen:

lkjhkö
Dies ist die Melodie im Programm:
"E4d4c4d4e4e4e2d4d4d2e4g4g4e4d4c4d4e4e4e4e4d4d4e4c1z"

Experimentiere mit dem Ändern des Ed.Tempo-Werts im Setup-Code.
1. Welche unterschiedlichen Werte kann Ed.Tempo annehmen?
Hinweis: Denke daran, dass du die Autocomplete-Funktion in EdPy verwenden können. Versuche, ‘Ed.TEMPO’ einzugeben, und sieh dir alle möglichen Werte für Ed.TEMPO an, die die automatische Vervollständigung anzeigt.

2. Mit welchem ​​Ed.TEMPO-Wert wird die Melodie am schnellsten abgespielt?


3. Ändere dein Programm so, dass nur ein Teil der Melodie abgespielt wird. Beschreibe die Änderungen, die du an deinem Programm vornehmen mussten, um nur einen Teil der Melodie zu spielen.

Arbeitsblatt 5.4 - Lass deinen Roboter tanzen
In dieser Übung schreibst du ein Programm, mit dem du deinen Roboter zum Tanzen bringst.
In den meisten guten Tanzvorführungen gibt es einige Bewegungen oder Aktionen, die wiederholt werden. Du kannst deine Edison-Wiederholungsaktionen in einer Tanzroutine ausführen, indem du die for-Schleife verwendest.
Das Shimmy ist eine Tanzbewegung, bei der du deinen Körper ruhig hälst und deine Schultern schnell hin und her bewegst.
Schaue dir das folgende Programm an, mit dem dein Edison-Roboter eine Shimmy-Version ausführt:

gfjk
Dieses Programm verwendet Variablen, so dass es einfach ist, die Drehgeschwindigkeit, die Anzahl der Drehungen im Tanz und die Gradzahl der Drehung von Edison zu ändern.
Beide Zeilen 13 und 18 beginnen mit "#". Dies bedeutet, dass diese Zeilen Kommentar-Code-Zeilen sind, um das Lesen des Programms zu erleichtern. Denke daran, dass Edison alle Zeilen überspringt, die mit "#" beginnen.
Schaue dir die Zeilen 19 und 23 an. In diesen Zeilen führen wir eine mathematische Berechnung in unserem Code durch, damit Edison nur die Hälfte der Gradzahl dreht.
Du bist dran:
Schreibe das Programm.
Lade das Programm auf deinen Edison herunter und führe es aus, um den Tanz in Aktion zu sehen.

1. Wie oft dreht sich der Roboter nach links?

2. Wie oft dreht sich der Roboter nach rechts?

3. Die erste Abbiegung nach rechts entspricht nur der Hälfte aller Abbiegungen in der "for" -Schleife, da diese Linie den Eingabeparameter "degreesToTurn / 2" hat. Warum soll diese Zeile im Programm sein? Versuche, die Mathematik ( "/ 2") zu entfernen, und führe das Programm erneut aus. Was fällt dir auf? (Hinweis: Sieh dir an, wie weit sich Edison im Vergleich zum Startpunkt nach links bewegt.)


Versuch es!
Experimentiere mit dem Programm. Versuche, die Variablen zu ändern, um die Art und Weise zu ändern, wie Edison tanzt. Ändere die Gradzahl, die Edison drehen wird, die Geschwindigkeit, die Edison drehen wird, die Anzahl der Wendungen im Tanz oder alle drei!

 

Arbeitsblatt 5.5 - Herausforderung! Zur Musik tanzen
Tanzen macht mehr Spaß mit Musik! In dieser Übung schreiben Sie ein Programm, das Tanzbewegungen mit einigen Tönen oder einer Melodie kombiniert.
Du bist dran:
Schreiben Sie das folgende Programm und führen Sie es aus, das einen "Shimmy" -Tanz mit einigen Tönen kombiniert:

hgfhjk

Gestalte jetzt deinen eigenen Tanz für deinen Edison, indem du einige Töne hinzufügst oder eine Melodie verwenden. Kannst du es synchronisieren, damit Edison im Takt der Musik tanzt?

1. Beschreibe die Tanzbewegungen deines Roboters. Gibt es etwas in deinem Programm, das dir wirklich gefallen hat? Wenn ja, beschreibe es.

2. Welche Kombination von Tönen oder Noten hast du mit deinem Tanz gespielt?