/*Abspielen von Songs, die auf einer micro SD-Card gespeichert sind. Maximal 21 Songs, sonst keine Funktion mehr. Die Songs muessen als .wav-Datei gespeichert sein (Details siehe "Tutorial"). Der Aufruf des jeweiligen Songs erfolgt per Sprachsteuerung von einem Smartphone mit der App "AMR_Voice". Der gesprochene Text wird von der App in eine Zeichenfolge umgewandelt und auch angezeigt und muss exakt der im Sketch hinterlegten Zeichenfolge entsprechen, auch Gross-Kleinbuchstaben (zum Beispiel "Spiele Song 1"). Siehe auch: https://www.electronicshub.org/music-player-using-arduino/ Uebertragen werden die Zeichenfolgen per Bluetooth vom Phone zu einem Modul HC-05 und weiter zum Arduino. Als Baudrate zum HC-05 wird 9600 verwendet, siehe auch unten HC_Serial.begin(9600). Im allgemeinen ist das im HC-05 so voreingestellt. Wenn nicht, muss die Baudrate mit AT-Befehlen umgestellt werden. Konfiguration des HC-05 siehe Mechatronik Teil 4 "Sketch 85 Bluetooth Modul HC-05 konfigurieren". Die Ausgabe erfolgt von Pin D9 als PWM-Signal (keine Analog-Sinus-Schwingungen) ueber einen Transistor-Verstaerker an den Lautsprecher. Mit tmrpcm.setVolume(3) kann die Lautstaerke eingestellt werden (bei >5 verzerrt)*/ /*fuer micro SD Karten-Leser:*/ #include <SD.h> // SD.h ist standardmaessig vorhanden #include <TMRpcm.h> // TMRpcm muss geladen werden #include <SPI.h> // SP.h ist standardmaessig vorhanden #define SD_ChipSelectPin 4 // Pin D4 muss hier verwendet werden TMRpcm tmrpcm; /*fuer Bluetooth-Modul HC-05:*/ #include <SoftwareSerial.h> SoftwareSerial HC_Serial(6,7); // Pin D6 wird RxD (an TxD des HC-05) und Pin D7 wird TxD (an RxD des HC-05) /*fuer Spracherkennung, als Signal ueber HC-05:*/ String voice; void setup() { tmrpcm.speakerPin = 9; // Pin D9 muss hier verwendet werden tmrpcm.setVolume(5); // bei >5 verzerrt Serial.begin(9600); // Initialisierung Serial Monitor if (!SD.begin(SD_ChipSelectPin)) // Prueft, ob eine SD-Karte eingesteckt ist { Serial.println("SD fail"); return; } Serial.println("Bereit"); HC_Serial.begin(9600); // Baudrate zum HC-05 auf 9600 } void loop() { while (HC_Serial.available()) { delay(10); char c = HC_Serial.read(); if (c == '#') {break;} // “#“ zeigt das Ende eines Befehls an, deshalb soll der Loop verlassen werden voice += c; } if (voice.length() > 0) { Serial.println(voice); if(voice == "*Spiele Song 1") { tmrpcm.play("Song1.wav"); } if(voice == "*Spiele Song 2") { tmrpcm.play("Song2.wav"); } if(voice == "*Spiele Song 3") { tmrpcm.play("Song3.wav"); } if(voice == "*Spiele Song 4") { tmrpcm.play("Song4.wav"); } if(voice == "*Spiele Song 5") { tmrpcm.play("Song5.wav"); } if(voice == "*Spiele Song 6") { tmrpcm.play("Song6.wav"); } if(voice == "*Spiele Song 7") { tmrpcm.play("Song7.wav"); } if(voice == "*Spiele Song 8") { tmrpcm.play("Song8.wav"); } if(voice == "*Spiele Song 9") { tmrpcm.play("Song9.wav"); } if(voice == "*Spiele Song 10") { tmrpcm.play("Song10.wav"); } if(voice == "*Spiele Song 11") { tmrpcm.play("Song11.wav"); } if(voice == "*Spiele Song 12") { tmrpcm.play("Song12.wav"); } if(voice == "*Spiele Song 13") { tmrpcm.play("Song13.wav"); } if(voice == "*Spiele Song 14") { tmrpcm.play("Song14.wav"); } if(voice == "*Spiele Song 15") { tmrpcm.play("Song15.wav"); } if(voice == "*Spiele Song 16") { tmrpcm.play("Song16.wav"); } if(voice == "*Spiele Song 17") { tmrpcm.play("Song17.wav"); } if(voice == "*Spiele Song 18") { tmrpcm.play("Song18.wav"); } if(voice == "*Spiele Song 19") { tmrpcm.play("Song19.wav"); } if(voice == "*Spiele Song 20") { tmrpcm.play("Song20.wav"); } if(voice == "*Spiele Song 21") { tmrpcm.play("Song21.wav"); } else { } voice=""; } }