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:
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:
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:
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?
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:
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:
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:
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:
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:
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?