Lektion 15 Arduino Array : Melodien programmieren lernen

Was du für dieses Projekt brauchst

Was sind Arduino Arrays? Die Grundlagen

Ein Arduino Array ist eine Liste von Werten, die du unter einem gemeinsamen Namen speicherst. Statt für jeden Ton eine eigene Variable anzulegen, fasst du alle Frequenzen in einer Liste zusammen.

Array mit fester Größe deklarieren

Wenn du weißt, wie viele Elemente du brauchst, kannst du die Größe vorab festlegen:

int zahlen[6];
Arduino Array Deklaration mit fester Größe für 6 Integer-Werte


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Damit hast du Platz für 6 Integer-Werte reserviert. Die Werte selbst sind noch leer.

Array direkt mit Werten füllen

Eleganter ist es, das Array gleich mit Werten zu füllen. Die Größe wird dann automatisch berechnet:

int zahlen[] = {10, 78, 45, 67, 38, 14};
Arduino Array Initialisierung mit Werten und automatischer Größenberechnung

Auf Array-Elemente zugreifen

Wichtig: Die Zählung beginnt immer bei 0! Das erste Element hat den Index [0], das zweite [1], usw.

Wert in ein Array schreiben:

zahlen[3] = 50;
Arduino Array Zugriff zum Schreiben eines Wertes an Index 3

Damit ersetzt du den vierten Wert (Index 3) durch 50.

Wert aus einem Array auslesen:

a = zahlen[3];
Arduino Array Zugriff zum Auslesen eines Wertes aus Index 3

Die Variable a erhält jetzt den Wert, der an Position 3 gespeichert ist.

Arrays für Melodien nutzen

Für eine Melodie benötigst du zwei Arrays und eine Zählvariable:

  • frequenzen[] – Enthält die Tonhöhen in Hertz (z.B. 262 Hz für den Ton C)
  • tonDauer[] – Enthält die Spieldauer jedes Tons in Millisekunden
  • tonAnzahl – Gibt an, wie viele Töne deine Melodie hat

Mit einer for-Schleife spielst du dann alle Töne nacheinander ab. Das ist viel eleganter, als jeden Ton einzeln zu programmieren!

Die Verkabelung: So schließt du den Buzzer an

Der Aufbau ist denkbar einfach:

  • Piezo-Buzzer Plus (+) an Pin 9 des Arduino
  • Piezo-Buzzer Minus (-) an GND (Ground)
Arduino Verkabelung eines Piezo-Buzzers an Pin 9 und GND für Melodien

Tipp: Ein Piezo-Buzzer hat normalerweise keine feste Polarität. Falls er nicht funktioniert, drehe einfach die Anschlüsse um.

Der Code: Deine erste Arduino Array Melodie

Einstieg mit 6 Tönen

Beginne mit diesem übersichtlichen Beispiel, um das Prinzip zu verstehen:

int frequenzen[] = {262, 294, 330, 349, 392, 392};
int tonDauer[]= {200, 200, 200, 200, 400, 400};
int tonAnzahl = 6;

void setup() {

}

void loop() {
  for (int ton=0; ton<tonAnzahl; ton=ton+1){
    tone(9, frequenzen[ton]);
    delay(tonDauer[ton]);
    noTone(9);
    delay(tonDauer[ton]);
  }
}

So funktioniert der Code:

  1. Die for-Schleife läuft von 0 bis 5 (weil tonAnzahl = 6)
  2. Bei jedem Durchlauf liest sie frequenzen[ton] und tonDauer[ton] aus
  3. tone(9, frequenzen[ton]) spielt den Ton auf Pin 9
  4. delay(tonDauer[ton]) wartet die angegebene Dauer
  5. noTone(9) stoppt den Ton
  6. Eine kurze Pause (delay) sorgt für saubere Trennung zwischen den Tönen

Lade den Code hoch und höre dir deine erste Array-basierte Melodie an!

Die vollständige Melodie mit 27 Tönen

Jetzt wird’s musikalischer! Hier ist eine komplette Melodie:

int frequenzen[] = {262, 294, 330, 349, 392, 392, 440, 440, 440, 440, 392, 440, 440, 440, 440, 392, 349, 349, 349, 349, 330, 330, 392, 392, 392, 392, 262};
int tonDauer[]= {200, 200, 200, 200, 400, 400, 200, 200, 200, 200, 800, 200, 200, 200, 200, 800, 200, 200, 200, 200, 400, 400, 200, 200, 200, 200, 800};
int tonAnzahl = 27;

void setup() {

}

void loop() {
  for (int ton=0; ton<tonAnzahl; ton=ton+1){
    tone(9, frequenzen[ton]);
    delay(tonDauer[ton]);
    noTone(9);
    delay(tonDauer[ton]);
  }
}

Ideen zum Experimentieren:

  • Ändere einzelne Frequenzen und erstelle deine eigene Melodie
  • Füge eine Pause zwischen Wiederholungen ein: delay(2000); nach der for-Schleife
  • Experimentiere mit verschiedenen Tondauern – mache manche Töne kürzer oder länger
  • Ergänze weitere Töne, indem du einfach mehr Werte in die Arrays einfügst

Was du jetzt über Arduino Arrays weißt

Du hast heute gelernt:

  • Wie du Arrays deklarierst und mit Werten füllst
  • Wie du über den Index auf einzelne Array-Elemente zugreifst (denk an die 0!)
  • Wie du Arrays mit for-Schleifen durchläufst
  • Wie du Arrays praktisch einsetzt: für Melodien mit der tone()-Funktion

Die Vorteile von Arrays:

  • Übersichtlich: Statt 27 einzelner Variablen hast du zwei kompakte Listen
  • Flexibel: Mit Schleifen verarbeitest du beliebig viele Werte
  • Erweiterbar: Füge einfach weitere Werte hinzu, ohne den restlichen Code zu ändern

Arrays gehören zu den wichtigsten Werkzeugen in der Arduino-Programmierung. Du wirst sie immer wieder verwenden – für Sensor-Messreihen, LED-Muster, Bewegungsabläufe und vieles mehr. Mit diesem Wissen kannst du jetzt komplexere Projekte angehen, bei denen du viele zusammengehörige Daten verwalten musst.

Viel Spaß beim Programmieren deiner eigenen Melodien!

4 8 votes
Article Rating
Abonnieren
Benachrichtige mich bei
11 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
sofia tege
11 Monate zuvor

danke, NWT hätte mich sonst gekocht<3

Raze VorteX
6 Jahre zuvor

zum glück bin ich eigentlich mit dem Thema hier schon durch an sich aber ne schön gemachtes tut…
besonders das auch auf die Nutzung von arrays in Verbindung mit for schleifen eingegangen wird fand ich gut.

aber mal zur Qualitätskontrolle ;P beim vorletzten Containerschiff bild „Zuseisen“? scheint mir eigentlich Zuweisen zu heißen :) text in Bildern vielleicht besser kontrollieren ärgerlich da typos zu haben :/ und ka wieso aber der „Für die Lösung hier klicken!“ button verschiebt bei mir nur die Namen eine Zeile runter Lösung wird allerdings auch schon angezeigt weis aber nicht ob das nur bei mir so ist…
MfG
Raze

Raze VorteX
Antworte an  Stefan Hermann
6 Jahre zuvor

freut mich. spam sollte kein proplem sein gängig wäre da wohl ein reputation system das neuen/unbekannten usern ein limit an nachrichten pro zeit setzt etwa 1 alle 5 min… report systeme und gegebenenfalls mods je nach grösse und bedarf also vom technischem aspekt dürften trolle keine chance bei einer aktiv geführten seite haben. viel erfolg.
mfg
RazeVorteX

momslayer3000
Antworte an  Raze VorteX
3 Jahre zuvor

cooler kommentar jedoch würde cih mir nochmal die rs im text anschauen :/
MFG
momslayer3000

9 Jahre zuvor

Sehr gutes Programm!

the real marcel darvis
Antworte an  Marcel Davis
6 Jahre zuvor

geiler name

Shyning
10 Jahre zuvor

Viele der Klammern bei den Arrays sind falsch
Oftmals geht der int mit { auf und mit ) zu
Hat mich im ersten moment verwirrt^^

MOMslayer2500
Antworte an  Stefan Hermann
3 Jahre zuvor

Sehr gut )
;-]

Mirda_
Antworte an  Shyning
9 Jahre zuvor

Danke wegen euch bin ich nicht beim Test durchgefallen

11
0
Ich würde mich über deine Meinung freuen.x