sketch_92_Sprachsteuerung_Songs

sketch_92_Sprachsteuerung_Songs
  /*Abspielen von Songs, die auf einer micro SD-Card gespeichert sind.
  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 (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 11 Uhr")  // App erkennt Text nicht und zeigt meist an "...Uhr"
      {
       tmrpcm.play("Song11.wav");       
      }
      if(voice == "*spiele song 12")
      {
       tmrpcm.play("Song12.wav");        
      }
      else 
      {
      }
      voice="";
     } 
  }