Star Wars Sound mit Buzzer Modul

Einen Ton erzeugen, mit dem Buzzer Modul, für den Arduino Nano, geht recht einfach. Dazu verbinden wir das Buzzer Modul mit dem Nano. Ground auf Ground und das Signal vom Buzzer Modul auf Pin 8. Das Ganze sieht dann wie folgt aus. Ihr könnt auch ein fertiges Modul verwenden, z.B. von AZ-Delivery.

Nach dem wir nun alles verbunden haben, laden wir den Sketch hoch. Im Sketch werden zuerst die Töne defeniert und in zwei Sektionen unterteilt. Dazu haben wir die Möglichkeit, je nach Tonlage, zwei unterschiedliche LEDs aufplingen zulassen und dem ganzen noch mehr Style zu verleihen. Diese zwei LEDs werden über die Pins 3 und 4 angeschlossen, diese sind kein muss, sondern rein optional.

#include <arduino.h>

// Töne defenieren

const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
const int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
const int b = 466;
const int cH = 523;
const int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
const int fH = 698;
const int fSH = 740;
const int gH = 784;
const int gSH = 830;
const int aH = 880;
 
const int buzzerPin = 8;
const int ledPin1 = 2;
const int ledPin2 = 3;
 
int counter = 0;
 
void setup()
{
  //Setup Pin Mode für Ton und LEDs
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}
 
void loop()
{
 
  //Spiele erste Sektion
  firstSection();
 
  //Spiele zweite Sektion
  secondSection();
 
  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 350);  
  beep(a, 125);
  beep(cH, 500);
  beep(a, 375);  
  beep(cH, 125);
  beep(eH, 650);
 
  delay(500);
 
  //Wiederhole erste Sektion
  secondSection();
 

  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 650);  
 
  delay(650);
}
 
void beep(int note, int duration)
{
  //Spiele den Ton für den BuzzerPin
  tone(buzzerPin, note, duration);
 
  //Spielen Sie je nach Wert des Zählers unterschiedliche LEDs ab
  if(counter % 2 == 0)
  {
    digitalWrite(ledPin1, HIGH);
    delay(duration);
    digitalWrite(ledPin1, LOW);
  }else
  {
    digitalWrite(ledPin2, HIGH);
    delay(duration);
    digitalWrite(ledPin2, LOW);
  }
 
  //Stoppe den Ton für den BuzzerPin
  noTone(buzzerPin);
 
  delay(50);
 
  //Inkrementalzähler
  counter++;
}
 
void firstSection()
{
  beep(a, 500);
  beep(a, 500);    
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);  
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
 
  beep(eH, 500);
  beep(eH, 500);
  beep(eH, 500);  
  beep(fH, 350);
  beep(cH, 150);
  beep(gS, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
}
 
void secondSection()
{
  beep(aH, 500);
  beep(a, 300);
  beep(a, 150);
  beep(aH, 500);
  beep(gSH, 325);
  beep(gH, 175);
  beep(fSH, 125);
  beep(fH, 125);    
  beep(fSH, 250);
 
  delay(325);
 
  beep(aS, 250);
  beep(dSH, 500);
  beep(dH, 325);  
  beep(cSH, 175);  
  beep(cH, 125);  
  beep(b, 125);  
  beep(cH, 250);  
 
  delay(350);
}

Viel Spaß beim probieren und zaubern von neuen Melodien.