In diesem Kapitel lernst Du, wie man mit einem Piezo-Summer einen Ton spielen kann.
Wir hören einen Ton, wenn eine Schallwelle auf das Trommelfell in unseren Ohren trifft. Diese Schallwelle hat eine bestimmte Amplitude. Die Amplitude gibt die Höhe bzw. Tiefe der Wellenberge bzw. Wellentäler an und hängt mit der Lautsärke des Tons zusammen.
Wellenfunktionen sind außerdem periodische Funktionen. Das heißt, dass ein bestimmter Funktionswert in gleichbleibenden Abständen wieder auftaucht. Die sinus-Funktion hat zum Beispiel die Periode 2 $\pi$, weil sin(0) = sin(0 + 2 $\pi$) = sin(0 + 2 $\pi$ + 2 $\pi$) ist. Die Periodendauer T gibt an, wie viel Zeit das Durchlaufen einer Periode in Anspruch nimmt.
Einer Schallwelle kann man außerdem eine Frequenz f zuordnen. Diese gibt an, wie viele Perioden pro Sekunde durchlaufen werden und lässt sich wie folgt berechnen: f = 1/T. Die Frequenz mit der Tonhöhe zusammen, also zum Beispiel damit, ob wir ein c oder ein d hören. Die Einheit der Frequenz ist Hertz, was mit Hz abgekürzt wird, und so viel wie pro Sekunde bedeutet.
Um Töne abzuspielen, nutzen wir einen Piezo-Summer. In diesem ist ein Piezo-Kristall verbaut. Der Piezo-Kristall dehnt sich aus, wenn wir eine Spannung anlegen, und kehrt in seinen ursprünglichen Zustand zurück, wenn wir die Spannung wieder wegnehmen. Um nun einen Ton einer bestimmten Frequenz zu erzeugen, schalten wir die Spannung in einem bestimmten Takt ein und wieder aus. Das darfst Du nun einmal selbst ausprobieren.
Wir wollen zunächst den Kammerton a erzeugen.
Der Kammerton a ist der Ton, der von einem Orchester zu Beginn eines Konzertes von allen Instrumenten zum Einstimmen gespielt wird. Er liegt ungefähr bei 440 Hz.
💡 Hinweise:
- Welcher Teil der Schallwelle entsteht, wenn die Spannung angelegt wird? Welcher Teil der Welle entsteht, wenn die Spannung ausgeschaltet wird?
- Welche Bedeutung hat die Zeit *2t für die Welle? Welcher oben engeführten Größe entspricht sie?*
Wenn Du nicht weiter kommst, frag uns gerne. Zur Überprüfung Deiner Lösung kannst Du hier schauen:
int
, in der die berechnete Zeit t gespeichert ist.delay()
-Funktion festgelegt. Wenn wir delay(100)
schreiben, wartet der Microcontroller 100 Millisekunden, bis er in die nächste Code-Zeile springt. Die von Dir berechnete Zeit t liegt im unteren Millisekunden-Bereich. In diesem Bereich ist die einfache delay()
-Funktion zu ungenau. Nutze daher die Funktion delayMicroseconds()
, in der die Eingabe als Microsekunden interpretiert werden.Falls Du Dir bei den Fragen unsicher bist, frag gerne nach oder schau in die vorherigen Grundlagen-Abschnitte!
Tatsächlich ist in der Arduino IDE bereits eine Funktion hinterlegt, die genau das macht, was Du gerade selbst geschrieben hast. Das ist die sogenannte tone()
-Funktion.
// Spielt den Ton mit der Frequenz 440 auf dem am digtalen Pin 3 amgeschlossenen Piezo-Summer
tone(3,440);
Schreibe nun Dein Programm aus der vorherigen Aufgabe so um, dass Du anstelle des An- und Ausmachens des digitalen Pins die tone()
-Funktion nutzt, um den Kammerton a zu erzeugen. Hört sich beides gleich an oder hörst Du einen Unterschied?
Baue einen Button ein, der den Piezo-Summer anschalten kann.
Das Geräusch, das der Piezo-Summer macht, ist nicht unbedingt besonders schön. Daher ist es praktisch, den Piezo nur dann spielen zu lassen, wenn ein Button gedrückt wird, um Euch und Eure Mitmenschen zu schonen.
💡 Tipp: Orientiere Dich an dem Code, den Du in Grundlagen 4 geschrieben hast!