Töne und Funktionen

Hier lernst du, wie du mit dem Arduino und einem Lautsprecher Töne erzeugen und Tonfolgen abspielen kannst.

Viele Leute meinen, dass ein Lautsprecher sofort einen Ton von sich gebe, wenn er an eine Stromversorgung angeschlossen wird. Das ist aber falsch: Ein Lautsprecher besteht nämlich nur aus einer elastisch aufgehängten (1) Membran und einem (2) Elektromagnet. Fließt Elektrizität durch diesen Elektromagnet, wird die Membran angezogen, fließt keine Elektrizität, fällt die Membran wieder zurück. Ein Ton entsteht, indem die Membran schnell abwechselnd angezogen und wieder los gelassen wird, also die Stromversorgung abwechselnd ein- und ausgeschaltet wird.

Um einen Ton zu erzeugen, kann der Lautsprecher also mit einem seiner Anschlüsse (egal welcher) zum Beispiel an Pin 11 und mit dem anderen an den Minuspol angeschlossen werden. Pin 11 muss schnell abwechselnd HIGH und LOW geschaltet werden. Weil man Töne häufig braucht, gibt es eine Anweisung, die sich um das schnelle Ein- und Aus-schalten kümmert, selbst wenn der Mikrocontroller gerade etwas anderes macht.

Der Programmcode sieht dann so aus:

Aufgabe 5.1

Schließe einen lautsprecher an einen Pin an und programmiere ein Lied. Wenn dir wirklich nichts besseres einfällt, kannst du „Alle meine Entchen nehmen“. Die Klaviertastatur rechts kann dir helfen, die Frequenzen zu den Noten herauszufinden.

Hinweis: Wenn zwei Töne direkt aufeinanderfolgen, benötigst du keine noTone Anweisung dazwischen. Es geht dann auch tone(11,200); delay(120); tone(11,400); delay(500);tone(11,1000);…

Unterprogramme

Programmteile, die mehrfach benötigt werden (wie z. B. ein Refrain), muss man nicht mehrfach programmieren. Man legt dafür ein sogenanntes Unterprogramm an, das man wie eine ganz gewöhnliche Anweisung überall dort aufruft, wo es ausgeführt werden soll.

Namensgebung: Für die Namen von Unterprogrammen kann man beliebige selbst gewählte Worte verwenden, die keine Leerzeichen und keine Sonderzeichen (wie Umlaute oder Symbole) und als erstes Zeichen auch keine Zahl enthalten. Möglich wären also oma, opa oder hundl6, unmöglich sind aber 16hund, rüpel oder a#. Dabei kommt es auf Groß- und Kleinschreibung an. Natürlich darf man keine Bezeichner verwenden, die schon als Befehle in der Programmiersprache verwendet werden.

Aufgabe 5.2

Vielleicht hat auch dein Musikstück einen Takt oder einen Refrain, der sich wiederholt? Probiere, diesen Teil als Unterprogramm zu schreiben.

Ein Transistor als Verstärker

Dein Lautsprecher ist relativ leise, weil der Arduino durch seine Pins nur geringe elektrische Leistungen leiten kann. Höhere Leistung kannst du am Pin V_in beziehen, das aber nicht programmierbar sondern einfach immer an ist Mit einem Transistor kannst du trotzdem V_in für den Lautsprecher nutzen.

Die Anschlüsse des Transistors heißen Basis, Kollektor und Emitter. Der Transistor ist das technische Gerät das am häufigsten auf der Erde hergestellt wird. Das liegt auch daran, dass alleine in einem modernen Computerprozessor mehr als 1 Milliarde Transistoren verbaut sind. Im Mikro-controller auf dem Arduino sind es etwa 100000 - Transistoren können also sehr klein gebaut werden