Zum Inhalt springen
Arduino Tutorials Anfänger · 30 Min. · Aktualisiert am 23. Juli 2026

Mit einem Piezo Töne erzeugen

Piezo Buzzer auf einem Arduino Breadboard

Wenn du mit deinem Arduino einfache Töne erzeugen möchtest, bietet sich ein günstiger Piezo an. Für musikalischen Hochgenuss sorgst du damit zwar nicht, aber für schlichte Anwendungen reicht er allemal.

In diesem Tutorial lernst du, wie du einen Piezo mit deinem Arduino verbindest und Töne in verschiedenen Höhen ausgibst.

Aktiver vs. Passiver Piezo

Es gibt zwei Arten von Piezos: Bei aktiven Piezos wird einfach nur Strom angelegt, damit sie einen einzigen vordefinierten Ton abgeben. Passive Piezos eignen sich hingegen dazu, verschiedene Töne und damit auch ganze Melodien zu erzeugen.

Wenn du also mehr als nur einen einzigen Ton erzeugen möchtest, achte darauf, dir einen passiven Piezo zuzulegen. Im Folgenden geht es ausschließlich um passive Piezos.

Den Piezo am Arduino anschließen

Da dein Piezo nur über zwei Pins verfügt, benötigst du auch nur zwei Kabel, um ihn an deinem Arduino anzuschließen. Schließe zunächst einen der Pins – welcher ist egal – an GND an. Den anderen Pin verbindest du mit einem Digitalpin des Arduinos. Im folgenden Aufbau ist das Pin 9:

Anschluss des Piezo am Arduino
Screenshot: Tinkercad

Und das war auch schon alles. Zeit für etwas Musik!

Mit der Funktion tone() Töne erzeugen

Um Töne und Melodien mit verschieden langen Noten zu spielen, benötigst du nur die Funktion tone(). Du kannst auf diese Funktion direkt in deiner Arduino IDE zugreifen und musst hierfür nichts installieren oder vorbereiten.

Die Funktion rufst du immer mit mindestens zwei Parametern auf: dem Pin, an dem der Piezo angeschlossen ist und die Tonhöhe in Hertz.

Wenn dein Piezo also wie oben zu sehen an Digitalpin 9 angeschlossen ist und du den Kammerton A mit seinen 440 Hertz spielen möchtest, wäre der Code hierfür:

tone(9, 440);

Dein Piezo spielt diesen Ton dann so lange, bis er den Befehl erhält, etwas anderes zu tun – z.B. einen anderen Ton auszugeben.

Du hast allerdings die Möglichkeit, die Tonlänge direkt über einen dritten Parameter vorzugeben. Soll der Piezo den Ton A genau 1000 Millisekunden spielen, trägst du folgendes in deinen Sketch ein:

tone(9, 440, 1000);

Wenn du deinen Piezo ganz ausschalten möchtest, erreichst du das ganz einfach mit der Funktion noTone().

noTone(9);

Noten und Melodien spielen

Jeder Note entspricht eine bestimmte Frequenz. Wie du oben gesehen hast, ist die Frequenz des Kammertons A genau 440Hz. Das A in der nächsten Oktave hat die Frequenz 880Hz.

Eine sehr umfangreiche Sammlung von Tönen und ihren entsprechenden Frequenzen findest du hier auf Github.

Zu jeder guten Melodie gehören auch Pausen. Diese kannst du wie gewohnt mit der Funktion delay() zwischen die Töne setzen.

Damit hast du alles beisammen, um eine erste kleine Melodie zu spielen. Der folgende Sketch spielt in einer Schleife eine C-Dur-Tonleiter ab. Die Frequenzen der einzelnen Noten liegen dabei in einem Array, das du der Reihe nach durchgehst:

// Eine kleine Melodie mit einem passiven Piezo an Pin 9

int piezoPin = 9;

// Frequenzen der Noten in Hertz
int melodie[] = {262, 294, 330, 349, 392, 440, 494, 523}; // C-Dur-Tonleiter
int noten = 8;

void setup() {
  // hier ist nichts nötig - tone() kümmert sich um den Pin
}

void loop() {
  // spiele nacheinander alle Noten der Melodie
  for (int i = 0; i < noten; i++) {
    tone(piezoPin, melodie[i], 300); // jede Note 300 ms lang
    delay(400);                      // kurze Pause zwischen den Noten
  }

  noTone(piezoPin); // Piezo ausschalten
  delay(2000);      // 2 Sekunden warten, dann von vorn
}

Ein kleiner Kniff steckt in den Zeitangaben: Mit dem dritten Parameter von tone() gibst du vor, dass jede Note 300 Millisekunden klingt. Das delay() von 400 Millisekunden ist etwas länger – so entsteht zwischen den Noten eine kurze Pause und die Töne verschwimmen nicht ineinander.

Mehr Projekte für Arduino, ESP32, Raspi & Co
Werde Mitglied bei Pollux Labs und finde dein nächstes Projekt. Zum Beispiel:
Über 100 Maker sind bereits Mitglied bei Pollux Labs
  • ESP32 Internetradio
  • Arduino Wetterstation
  • ESP8266 & Raspi Webserver
  • Automatische Bewässerung
  • ... und viele mehr!