Mikrocontrolling Kurswelt

Der Einstieg ins Mikrocontrolling

Tonleiter

Der Piezo wird mit einem I/O-Pin (hier Pin 9) und dem GND am Mikrocontroller verbunden. Um die Lautstärke zu reduzieren, kannst du ein Widerstand verwendet werden, empfohlen werden 220Ω.

Programmiere den Piezo

Wir brauchen 3 Befehle: tone() + delay(), um den Ton zu erzeugen und noTone(), um den Ton zu beenden.

In der klassischen Programmierung mit Text sieht es genauso aus:

Um einzelne Töne sauber voneinander zu trennen, verwenden wir nach jeder Note den Befehl noTone(), gefolgt von einer kurzen Pause (empfohlen werden 25ms).

Den Befehl tone() gibt es nur 2 und 3 Argumente. Die Alternative Syntax zum Befehl tone(), mit den 3 Argumenten (Pin, Frequenz, Dauer) schauen wir uns später noch einmal genauer an.

Tonleiter

Jedem Ton ist eine bestimmte Frequenz zugeordnet. Frequenzen werden in Schwingungen pro Sekunde oder in Herz (HZ) angegeben. Programmiere die Tonleiter, nutze die Tabelle und den (passiven) Piezo.

C und C geht nicht

Ein Problem bekommen wir mit den 2 unterschiedlichen C-Noten, denen 2 unterschiedliche Frequenzen zugeordnet sind. Es handelt sich um 2 unterschiedliche Variablen, die also unterschiedlich benannt werden müssen. Um sie unterschiedlich zu benennen, können wir ein viergestrichenes C (C4) und ein fünfgestrichenes C (C5) als Name verwenden.

Notentabelle

Mehr dazu erfährst du später in der vollständigen Notentabelle – aber keine Angst: Hier geht es nicht ums Notenlesen, sondern ums Programmieren: Wir haben alles für dich vorbereitet.

Hintergrund

Für die Note existieren 2 verschiedene Bezeichnungen: H und B. Die zugeordnete Frequenz ist dieselbe – wieso also?

Die Legende

Die unterschiedliche Bezeichnung soll durch einen Abschreibfehler entstanden sein. Ein Mönch im Mittelalter schrieb viele Stücke mit einer nicht sehr leserlichen Schrift nieder. Durch das viele Abschreiben wurde des Öfteren aus der Note B die Note H. Im Laufe der Zeit habe sich die falsche Note in einigen Regionen ungewollt etabliert haben und das Phänomen der doppelten Notenbezeichnung ist entstanden.

Deine Aufgabe: Programmiere die Tonleiter (Tabelle oben).

Tippe: Verwende auch hier Funktionen und speichere dein Programm, du wirst es für das nächste Projekt noch brauchen.

Das warten(25ms) am Ende dient dazu, die einzelnen Noten sauber voneinander zu trennen. Denke an die LEDs, die du schon programmiert hast: Der Mikrocontroller ist schnell, kurze Pausen können helfen.

Wir dürfen 2 unterschiedliche Funktionen nicht gleich benennen:

Note_C und Note_C geht nicht
Note_C4 und Note_C5 ist kein Problem

Klicke das Bild an, um es zu vergrößern

Das delay(25ms) am Ende dient dazu, die einzelnen Noten sauber voneinander zu trennen. Denke an die LEDs, die du schon programmiert hast: Der Mikrocontroller ist schnell, kurze Pausen können helfen.

Keine Leerzeichen: Wir dürfen in einem Namen (egal ob Funktion oder Variable) keine Leerzeichen verwenden

Note D geht nicht
Note_D ist kein Problem

Wir dürfen 2 unterschiedliche Funktionen nicht gleich benennen:

Note_C und Note_C geht nicht
Note_C4 und Note_C5 ist kein Problem

				
					void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  Note_C4();
  Note_D();
  Note_E();
  Note_F();
  Note_G();
  Note_A();
  Note_H();
  Note_C5();
  delay(1000);
}

void Note_C4() {
  tone(9, 262);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_D() {
  tone(9, 294);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_E() {
  tone(9, 330);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_F() {
  tone(9, 349);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_G() {
  tone(9, 392);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_A() {
  tone(9, 440);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_H() {
  tone(9, 494);
  delay(200);
  noTone(9);
  delay(25);
}

void Note_C5() {
  tone(9, 523);
  delay(200);
  noTone(9);
  delay(25);
}