Juke­box

Juke­box im Seri­el­len Monitor

#include "PlayRtttl.hpp"

#define Lautsprecher 7

// Interpret und Titel als String
String TitelSong;

char TeDeum[] =
"Charpentier/Te_Deum:d=4,o=6,b=63:8c5,8f5,16f5,16g5,8a5,8f5,c,8a5,8a5,8a_5,16c,16a_5,16a5,16a_5,8c,16g5,16f5,16g5,16a5,8g5,8c5,8f5,16f5,16g5,8a5,8f5,c,8a5,8a5,16a_5,16c,16a5,16a_5,g5,16f5,2f5";

char FuerElise[] =
"Beethoven/Für_Elise:d=8,o=5,b=125:32p,e6,d#6,e6,d#6,e6,b,d6,c6,4a.,32p,c,e,a,4b.,32p,e,g#,b,4c.6,32p,e,e6,d#6,e6,d#6,e6,b,d6,c6,4a.,32p,c,e,a,4b.,32p,d,c6,b,2a";

char FuenfteSymphonie[] =
"Beethoven/5._Symphonie:d=4,o=5,b=180:8f,8f,8f,1c#,8p,8d#,8d#,8d#,1c,8p,8f,8f,8f,8c#,8f#,8f#,8f#,8f,8c#6,8c#6,8c#6,2a#,8p,8f,8f,8f,8c,8f#,8f#,8f#,8f,8d#6,8d#6,8d#6,1c6";

char OdeandieFreude[] =
"Beethoven/Ode_an_die_Freude#:d=4,o=6,b=100:a5,a5,a_5,c,c,a_5,a5,g5,f5,f5,g5,a5,a.5,8g5,2g5,";

char Bolero[] =
"Ravel/Bolero:d=4,o=5,b=80:c6,8c6,16b,16c6,16d6,16c6,16b,16a,8c6,16c6,16a,c6,8c6,16b,16c6,16a,16g,16e,16f,2g,16g,16f,16e,16d,16e,16f,16g,16a,g,g,";

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) { ; }
  delay(500);

  // Menü im Seriellen Monitor
  Serial.println("1: Te Deum");
  Serial.println("2: Für Elise");
  Serial.println("3: Ode an die Freude");
  Serial.println("4: Bolero");
  Serial.println("5: Titel anzeigen");
  Serial.println("--------------------");
}

void loop() 
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0) 
  {
    // Eingabe im Seriellen Monitor lesen
    char Zeichen = Serial.read();

    if (Zeichen == '1') 
    {
      // char-Array des Titels in String umwandeln
      TitelSong = String(TeDeum);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, TeDeum);
    }

    if (Zeichen == '2') 
    {
      // char-Array des Titels in String umwandeln
      TitelSong = String(FuerElise);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, FuerElise);
    }
   
    if (Zeichen == '3') 
    {
      // char-Array des Titels in String umwandeln
      TitelSong = String(OdeandieFreude);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, OdeandieFreude);
    }

    if (Zeichen == '4') 
    {
      // char-Array des Titels in String umwandeln
      TitelSong = String(Bolero);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, Bolero);
    }

 if (Zeichen == '5') 
    {
      // char-Array des Titels in String umwandeln
      TitelSong = String(FuenfteSymphonie);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, FuenfteSymphonie);
    }

    if (Zeichen == '6') 
    {
      Serial.println("1: Te Deum");
      Serial.println("2: Für Elise");
      Serial.println("3: Ode an die Freude");
      Serial.println("4: Bolero");
      Serial.println("5: 5. Symphonie");
      Serial.println("6: Titel anzeigen");
      Serial.println("--------------------");     
    }
  }
}

void ZeigeTitel() 
{
  // Teil des Strings bis zum ersten Doppelpunkt kürzen
  TitelSong = TitelSong.substring(0, TitelSong.indexOf(":"));

  // _ durch leerzeichen ersetzen
  TitelSong.replace("_", " ");

  // erster Teil des Strings bis zum / -> Name des Interpreten
  String Interpret = TitelSong.substring(0, TitelSong.indexOf("/"));

  // zweiter Teil des Strings vom / + 1 bis zum Ende des Strings -> Name des Titels
  String Titel = TitelSong.substring(TitelSong.indexOf("/") + 1, TitelSong.length());

  Serial.println("Spiele:");

  // Interpret anzeigen
  Serial.print(Interpret + " ");

  // Titel anzeigen
  Serial.println(Titel);
  Serial.println("---------------------------");
}

Juke­box mit Tas­ten­pad und LCD

#include "PlayRtttl.hpp"
#include "LiquidCrystal_I2C.h"

// Name des LCDs (lcd) festlegen
LiquidCrystal_I2C lcd(0x27, 20, 4);

#define Lautsprecher  7

// Variable für die gedrückte Taste des Tastenpads
int GedrueckteTaste;

String TitelSong;

char TeDeum[] =
"Charpentier/Te_Deum:d=4,o=5,b=63:8c,8f,16f,16g,8a,8f,c6,8a,8a,8a#,16c6,16a#,16a,16a#,8c6,16g,16f,16g,16a,8g,8c,8f,16f,16g,8a,8f,c6,8a,8a,16a#,16c6,16a,16a#,g,16f,2f";

char FuerElise[] =
"Beethoven/Für_Elise:d=8,o=5,b=125:32p,e6,d#6,e6,d#6,e6,b,d6,c6,4a.,32p,c,e,a,4b.,32p,e,g#,b,4c.6,32p,e,e6,d#6,e6,d#6,e6,b,d6,c6,4a.,32p,c,e,a,4b.,32p,d,c6,b,2a";

char OdeandieFreude[] =
"Beethoven/Ode_an_die_Freude:d=4,o=6,b=100:a5,a5,a_5,c,c,a_5,a5,g5,f5,f5,g5,a5,a.5,8g5,2g5,";

char Bolero[] =
"Ravel/Bolero:d=4,o=5,b=80:c6,8c6,16b,16c6,16d6,16c6,16b,16a,8c6,16c6,16a,c6,8c6,16b,16c6,16a,16g,16e,16f,2g,16g,16f,16e,16d,16e,16f,16g,16a,g,g,";

void setup()
{
  // LCD starten
  lcd.init();

  // Hintergrundbeleuchtung einschalten
  lcd.backlight();
}

void loop()
{
  // Tastenpad abfragen
  int Analogwert = analogRead(A0);
 
  // linke Taste;
  switch (Analogwert)
  {
    case 0 ... 20:
      // char-Array des Titels in String umwandeln
      TitelSong = String(TeDeum);

      // Funktion aufrufen, Interpret/Titel extrahieren
      ZeigeTitel();

      // Titel spielen
      playRtttlBlocking(Lautsprecher, TeDeum);
      break;

    // obere Taste
    case 30 ... 60:
      TitelSong = String(FuerElise);
      ZeigeTitel();
      playRtttlBlocking(Lautsprecher, FuerElise);
      break;

    // rechte Taste
    case 70 ... 120:
      TitelSong = String(OdeandieFreude);
      ZeigeTitel();
      playRtttlBlocking(Lautsprecher, OdeandieFreude);
      break;

    // untere Taste
    case 150 ... 200:
      TitelSong = String(Bolero);
      ZeigeTitel();
      playRtttlBlocking(Lautsprecher, Bolero);
      break;

    // rechte äußere Taste
    case 300 ... 400:
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("1: Te Deum");
      lcd.setCursor(0, 1);
      lcd.print("2: F\365r Elise");
      lcd.setCursor(0, 2);
      lcd.print("3: Ode an die Freude");
      lcd.setCursor(0, 3);
      lcd.print("4: Bolero");
      break;
  }
}

void ZeigeTitel() 
{
  // Teil des Strings bis zum ersten Doppelpunkt kürzen
  TitelSong = TitelSong.substring(0, TitelSong.indexOf(":"));

  // _ durch leerzeichen ersetzen
  TitelSong.replace("_", " ");

  // erster Teil des Strings bis zum / -> Name des Interpreten
  String Interpret = TitelSong.substring(0, TitelSong.indexOf("/"));

  // zweiter Teil des Strings vom / + 1 bis zum Ende des Strings -> Name des Titels
  String Titel = TitelSong.substring(TitelSong.indexOf("/") + 1, TitelSong.length());

   // Titel auf dem LCD anzeigen
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Spiele:");
  lcd.setCursor(0, 1);
  lcd.print(Interpret);
  lcd.setCursor(0, 2);
  lcd.print(Titel);
}

Letzte Aktualisierung: 25. Jul 2023 @ 18:56