#include "SoftwareSerial.h"
#include "MP3Player_KT403A.h"
// RX/TX festlegen
SoftwareSerial mp3(2, 3);
// Zuweisung nach Ablesen des Analogwerts Tastenpad
int Taster;
// gelesener Wert Tastenpad
int Analogwert;
void setup()
{
// SoftwareSerial starten
mp3.begin(9600);
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial)
{
;
}
delay(100);
// SD-Karte zuweisen
SelectPlayerDevice(0x02);
// Lautstärke setzen (14 bis 30)
SetVolume(20);
Serial.println("Steuerung:");
Serial.println("------------------");
Serial.println("a -> alle abspielen");
Serial.println("n -> folgender Song");
Serial.println("v -> vorheriger Song");
Serial.println("a -> alle abspielen");
Serial.println("p -> Pause");
Serial.println("w -> weiter abspielen");
Serial.println("a -> alle abspielen");
Serial.println("+ -> lauter");
Serial.println("- -> leiser");
}
void loop()
{
// serielle Eingabe lesen
char Kommando = 0;
while (Serial.available())
{
Kommando = Serial.read();
switch (Kommando)
{
case 'p':
PlayPause();
Serial.println("Pause");
break;
case 'w':
PlayResume();
Serial.println("Weiter");
break;
case 'n':
PlayNext();
Serial.println("Folgenden Song abspielen");
break;
case 'z':
PlayPrevious();
Serial.println("Vorherigen Song abspielen");
break;
case 'a':
PlayLoop();
Serial.println("alle Songs spielen");
break;
case '+':
IncreaseVolume();
Serial.println("lauter");
break;
case '-':
DecreaseVolume();
Serial.println("leiser");
break;
default:
break;
}
}
// gedrückte Taste abfragen
Taster = Tasterabfrage();
// Taste links -> voheriger Titel
if (Taster == 1)
{
PlayPrevious();
Serial.println("Vorherigen Song abspielen");
}
// Taste oben Mitte -> lauter
if (Taster == 2)
{
IncreaseVolume();
Serial.println("lauter");
}
// Taste unten Mitte -> leiser
if (Taster == 3)
{
DecreaseVolume();
Serial.println("leiser");
}
// Taste rechts -> nächster Titel
if (Taster == 4)
{
PlayNext();
Serial.println("Folgenden Song abspielen");
}
// Taste außen -> Pause
if (Taster == 5)
{
PlayPause();
Serial.println("Pause");
}
}
int Tasterabfrage()
{
int Analogwert = analogRead(A0);
// kurzes delay() -> doppelten Tastendruck so weit wie möglich verhindern
delay(200);
// Serial.println(Analogwert);
/* für die Abfrage von Wertebereichen muss
A0 gibt je nach Taster einen Wert aus
über den Seriellen Monitor wird dieser Wert angezeigt
und kann dann eventuell angepasst werden
*/
switch (Analogwert) {
case 0 ... 20:
Taster = 1;
break;
case 30 ... 60:
Taster = 2;
break;
case 70 ... 120:
Taster = 3;
break;
case 150 ... 200:
Taster = 4;
break;
case 300 ... 400:
Taster = 5;
break;
default:
return 0;
}
// gedrückten Taster zurückgeben
return Taster;
}
Letzte Aktualisierung: