🔊

Piezo-Summer

Projekt B06 - Töne und Melodien erzeugen

Beginner
tone()
Piezo
Frequenzen
1
Lernziele

Was du lernst

  • tone() Funktion - Töne mit Frequenzen erzeugen
  • Noten und Frequenzen - Musiknoten als Zahlen
  • Melodien programmieren - Sequenzen von Tönen abspielen
  • Piezo-Buzzer - Passiver vs. aktiver Buzzer

Voraussetzungen

Grundlagen aus B01-B05 verstanden

2
Theorie

Noten und Frequenzen

Frequenztabelle (4. Oktave)

C4 = 262 Hz

D4 = 294 Hz

E4 = 330 Hz

F4 = 349 Hz

G4 = 392 Hz

A4 = 440 Hz (Kammerton)

H4 = 494 Hz

C5 = 523 Hz

Wie funktioniert ein Piezo?

Ein passiver Piezo wandelt elektrische Schwingungen in Schall um.

  • Frequenz = Tonhöhe
  • tone(pin, freq) erzeugt den Ton
  • noTone(pin) stoppt den Ton

Aktiver Buzzer: Erzeugt nur einen festen Ton bei HIGH. Wir nutzen passiv!

3
Code

Schritt 1: Einzelner Ton

// Schritt 1: Einen Ton erzeugen

const int BUZZER_PIN = 9;

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);

  // A4 (Kammerton) fuer 1 Sekunde spielen
  tone(BUZZER_PIN, 440);  // 440 Hz = A4
  delay(1000);
  noTone(BUZZER_PIN);      // Ton aus

  Serial.begin(9600);
  Serial.println("Fertig!");
}

void loop() {
  // Leer
}

Teste es!

Du solltest einen klaren Ton bei 440 Hz hören (A4, der Kammerton zum Stimmen).

3
Code

Schritt 2: Tonleiter spielen

// Schritt 2: C-Dur Tonleiter

const int BUZZER_PIN = 9;

// Noten als Konstanten
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523

int tonleiter[] = {NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
                   NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5};

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);

  for (int i = 0; i < 8; i++) {
    tone(BUZZER_PIN, tonleiter[i], 300);  // 300ms
    delay(350);  // Kurze Pause zwischen Noten
  }
}

void loop() { }
3
Code

Schritt 3: Melodie programmieren

// Fertige Version: "Alle meine Entchen"

const int BUZZER_PIN = 9;

#define C4 262
#define D4 294
#define E4 330
#define F4 349
#define G4 392
#define A4 440
#define P  0  // Pause

int melodie[] = {C4,D4,E4,F4, G4,G4, A4,A4,A4,A4, G4,P};
int dauer[]   = {300,300,300,300, 600,600, 300,300,300,300, 1200,300};

void setup() {
  pinMode(BUZZER_PIN, OUTPUT);
  for (int i = 0; i < 12; i++) {
    if (melodie[i] == P) {
      noTone(BUZZER_PIN);
    } else {
      tone(BUZZER_PIN, melodie[i], dauer[i]);
    }
    delay(dauer[i] + 30);
  }
}

void loop() { }
🔊

Geschafft!

Du kannst jetzt Töne und Melodien erzeugen

tone()

Töne erzeugen

Noten

Frequenztabelle nutzen

Melodien

Sequenzen abspielen

Nächstes Projekt

B07: LCD 1602 Display - Text anzeigen mit I2C

← →
1 / 7