Jukebox im Seriellen 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("---------------------------");
}
Jukebox mit Tastenpad 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: