Töne erzeugen

Wenn hier von Tönen gesprochen wird, sind Schallereignisse gemeint, die üblicherweise von Musikinstrumenten, der menschlichen Stimme oder elastischen Körpern erzeugt werden. Bei der unten beschriebenen Hardware dient dazu ein piezo-elektrisches Element (Buzzer), in dem eine Metallmembran durch rasches Ein- und Ausschalten in Schwingung versetzt wird.

Die so erzeugten Töne können an der Höhe unterschieden werden. Gemeint ist damit die Anzahl der sich wiederholenden Schwingungen pro Sekunde. Allgemein gilt, je mehr Schwingungen, desto höher der Ton und umgekehrt. Die Tonhöhe wird in Hertz (Hz) gemessenen, benannt nach dem deutschen Physiker Heinrich Hertz (1857 – 1894).

Im Makecode-Editor sind Töne unter der Schaltfläche „Musik“ zu finden. Dort werden sie in unterschiedlichen Formen vorgehalten: Als Multifunktionsblock „spiele Melodie …“, mit dem Tonfolgen zusammengeklickt werden können und „spiele Note …, beziehungsweise „Note (Hz) …“. zum Festlegen einzelner Töne.

Untermenüs beim Anwählen von „Eingabe“ und „Musik“

Um die Töne erst auf Knopfdruck auszugeben, wird der Baustein „wenn Knopf A geklickt“ vorgegeben, u darin die Blöcke „spiele Note Mittleres C für 1 Schlag“ und „spiele Note Mittleres D für 1 Schlag“ einzubinden. Dadurch kann durch Betätigen des Knopfs A auf dem Simulator für jeweils eine halbe Sekunde ein „Mittleres C“ und ein „Mittleres D“ ausgegeben werden.

Blockcode einer Zweitonfolge auf Knopfdruck

Klickt man auf die im weißen Feld benannte Note, wird eine Klaviatur eingeblendet, auf der durch Anwahl einer Taste die dazu passende Note ausgewählt wird.

Tonauswahl

Die Notenlänge kann über einen Klick auf das kleine Dreieck vor dem Begriff „Schlag“ variiert werden.


Ein Piezo Lautsprecher und ein Knopf, wie sie auf dem Calliope mini verbaut sind, können mit einfachen Mitteln auch für einem Arduino zusammengestellt werden. Dazu wird der Pluspol des Lautsprechers (beispielsweise) mit Pin 11 und der Minuspol mit GND verbunden.

In Entsprechung dazu ist der Taster mit (beispielsweise) Pin 4 und GND verbunden. Der Widerstand hat 10 Kiloohm.

Zur Programmierung eines Tons dient der Befehl „tone(x, y);“, wobei x den Pin angibt und y die Tonhöhe. Die Tondauer wird mit dem Befehl „delay(ms);“ festgelegt, wobei ms für eine Zeitangabe in Millisekunden steht. Der Befehl „noTone(x);“ schaltet den Ton ab.

Notenschrift und dazu passender Arduino-Code

Soll die Tonfolge auf dem Arduino wie beim Calliope mini durch Knopfdruck ausgelöst werden, ergibt sich folgende Programmierung:

void setup(){
pinMode(4, INPUT);
}
void loop(){
if (digitalRead(4)) {
tone(11, 262);
noTone(11);

tone(11, 294);
delay(500);
noTone(11);
  }
} 

Zum Zusammenstellen einfacher Melodien werden die Frequenzen der benötigten Noten gebraucht. Hier eine Auswahl.

Weitere Frequenzen finden sich im Internet.


Einige Melodien

… können hier gezippt heruntergeladen werden. Für den Arduino als Sketche in separaten Ordnern, für den Calliope in Word-Dateien, aus denen der jeweilige Java-Code kopiert werden kann.

Java Benutzeroberfläche des MakeCode Editors

Einfügen kann man den Inhalt des Zwischenspeichers im MakeCode-Editor nach dem Umschalten auf „JavaScript“ in die Zeilen rechts. Ein Klick auf „Blöcke“ wandelt den JavaScript dann in Blockcode um.


Das Breadboard sowie die Bauteile (Taster und Lautsprecher) gibt es im Funduino-Shop.