MINT - Unterricht  mit  Arduino und anderen

Im PXT-Editor sind Töne unter der Schaltfläche "Musik" zu finden. Dort werden sie als "Klingelton" vorgehalten. Klingeltöne können in der Tonhöhe variiert werden, wobei Werte im Hunderterbereich tiefen, solche im Tausenderbereich hohen Tönen entsprechen.

Hier eine Beispielcodierung, bei der nach Betätigen des Knopfs A auf dem Calliope mini oder der Simulation für eine  halbe Sekunde ein Ton von 1000 Hz ausgegeben wird. 

 

Vier Komponenten werden dazu benötigt:

  1. Die Klammer "wenn Knopf A gedrückt"
  2. Der Block "Klingelton" definiert die Tonhöhe
  3. Der Befehl "pausiere" begrenzt den Ton auf 500 Millisekunden (= eine halbe Sekunde)
  4. Der zweite Block "Klingelton" schaltet den Ton ab (ist mit 1 Hz unhörbar).

Interessant ist, dass Noten (Töne mit einer bestimmten Frequenz) ausgegeben werden können, deren Auswahl über eine grafisch nachempfundene Klaviatur möglich ist. Die Tonlänge kann zwischen 1 und 1/16 Takt variiert werden.

Hier das Beispiel für eine Folge von zwei Noten im Abstand von einer Sekunde:

Wer über Grundkenntnisse in der Notenschrift verfügt, dem wird es mit diesen Werkzeugen sicher gelingen, einfache Melodien zusammenzustellen. Beim Progammieren empfiehlt sich, mit einem Klick auf das Lautsprechersymbol unterhalb des Simulators, die Audio-Ausgabe auf dem PC so lange stumm zu schalten.

Hier eine laienhafte Annäherung an die Melodie "Hänsel und Gretel" als Download


Ein Piezo Lautsprecher und ein Knopf, wie sie auf dem Calliope mini verbaut sind, können auf einfache Weise auch an einem Arduino eingerichtet 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

Zur Programmierung eines Tons dient der Befehl "tone(x, y);", wobei x den Pin angibt und y die Tonhöhe. Der Befehl "noTone(x,y);" schaltet den Ton ab.

Soll der Ton wie beim Calliope mini durch Knopfdruck ausgelöst werden, ergibt sich folgende Programmierung:

void setup(){

pinMode(4, INPUT_PULLUP);

}

void loop(){

if (digitalRead(4) == LOW)

{

tone(11, 1000);

delay(500);

noTone(11);

}

}

Und hier der dazu passende grafische Programmcode, erstellt mit Ardublock. Eine Anleitung, wie Ardublock in die Arduino IDE eingebunden werden kann, findet sich hier als Download

 

 


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