/*       PROJECT ASTROMECH_05
 *       functional program
 *       by Vitor's Inventions
     ***************************/

//************************************************************************************* sound definition part.
#include <SD.h>                      // need to include the SD library                
#define SD_ChipSelectPin 53  //example uses hardware SS pin 53 on Mega2560                                                                                                 
#include <TMRpcm.h>           //  also need to include this library...
#include <SPI.h>
TMRpcm tmrpcm;   // create an object for use in this sketch
                                                            
                                                                                       
int aleatorio = 0;
unsigned long tempoAnterior = 0;
int ref = 0 ;

//***************************************************************************************Bluethoot
#include <SoftwareSerial.h>
#include <HCSR04.h>
#define pinRx 18
#define pinTx 19
char comando;
//***************************************************************************************led definition

#define LEDzero 30
#define LEDvermelho 22
#define LEDamarelo  26
#define LEDverde 24
#define LEDazul 28
#define light 6













//PIN MOTOR DOME

#define head1 44
#define head2 48


//DEFINIÇÃO PINOS MOTORES 
#define MRIGHT1 38
#define MRIGHT2 40

#define MLEFT1 34
#define MLEFT2 36




















void setup() {  //*    --SETUP--

 Serial.begin(9600);
  Serial1.begin(9600);
 
//SETUP SOUND 
  
   tmrpcm.speakerPin = 5; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc
  //Complimentary Output or Dual Speakers:
  
  
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
    Serial.println("SD fail");  
    return;   // don't do anything more if not

  }
  else{   
    Serial.println("SD ok");   
  }
  

  
  
  
// SET LEDS AND MOTOR DOMO AS OUTPUT

  pinMode(LEDvermelho, OUTPUT);
  pinMode(LEDamarelo, OUTPUT);
  pinMode(LEDverde, OUTPUT);
  pinMode(LEDazul, OUTPUT);
  pinMode(LEDzero, OUTPUT);
  pinMode(light, OUTPUT);

  pinMode(head1, OUTPUT);
  pinMode(head2, OUTPUT);


   pinMode(MRIGHT1, OUTPUT);
  pinMode(MRIGHT2, OUTPUT);
   pinMode(MLEFT1, OUTPUT);
  pinMode(MLEFT2, OUTPUT);

 
  
  digitalWrite(LEDvermelho, LOW);
  digitalWrite(LEDverde, LOW);
  digitalWrite(LEDamarelo, LOW);
  digitalWrite(LEDazul, LOW);
  digitalWrite(head1, LOW);
  digitalWrite(head2, LOW);

  
  Serial.println("DROID TYPE: ");
  Serial.println("");
  Serial.println("End of the Setup, Astromech *READY*");
  Serial.println("");
  Serial.println("ALL SYSTEMS ONLINE");
  Serial.println("");
  Serial.println("Sequence of bluethoot recived letters will start soon... ");
  Serial.println("");
  delay(1000);

   digitalWrite(LEDzero, HIGH);
  digitalWrite(LEDazul, HIGH);//********LED AZUL ON 
  tmrpcm.volume(10);
  tmrpcm.play("astro18.wav"); //the sound file  will play each time the arduino powers up
 
  delay(750);
  digitalWrite(LEDazul, LOW);//********LED AZUL OFF
  delay(750);
  digitalWrite(LEDazul, HIGH);//********LED AZUL ON 
   
  delay(2000);

  tmrpcm.play("astro20.wav"); //the sound file will play each time the arduino powers up
 

  
}


 

    
  










void loop() {    //      --LOOP 



unsigned long tempoAtual = millis();

  if (tempoAtual - tempoAnterior == 15000) { //robot sound system using millis
    tempoAnterior = tempoAtual;
     ref = ref + 1 ;
     switch(ref){

      case 1 :
      tmrpcm.play("astro1.wav"); 
      break;
      
       case 2 :
      tmrpcm.play("astro2.wav"); 
      break;

     case 3 :
      tmrpcm.play("astro3.wav"); 
      break;

     case 4 :
      tmrpcm.play("astro4.wav"); 
      break;

     case 5 :
      tmrpcm.play("astro5.wav"); 
      break;

     case 6 :
      tmrpcm.play("astro6.wav"); 
      break;

     case 7 :
      tmrpcm.play("astro7.wav"); 
      break;

     case 8 :
      tmrpcm.play("astro8.wav"); 
      break;

     case 9 :
      tmrpcm.play("roger.wav"); 
      break;

     case 10 :
      tmrpcm.play("astro9.wav"); 
      break;

     case 11 :
      tmrpcm.play("astro10.wav"); 
      break;

     case 12 :
      tmrpcm.play("fail.wav"); 
      break;

     case 13 :
      tmrpcm.play("astro11.wav"); 
      break;

       case 14 :
      tmrpcm.play("astro12.wav"); 
      break;
       case 15 :
      tmrpcm.play("astro13.wav"); 
      break;
       case 16 :
      tmrpcm.play("astro14.wav"); 
      break;
       case 17 :
      tmrpcm.play("astro15.wav"); 
      break;
       case 18 :
      tmrpcm.play("astro16.wav"); 
      break;
       case 19 :
      tmrpcm.play("astro17.wav"); 
      break;
       case 20 :
      tmrpcm.play("danger.wav"); 
      break;
       case 21 :
      tmrpcm.play("astro18.wav"); 
      break;
       case 22 :
      tmrpcm.play("astro19.wav"); 
      break;
       case 23 :
      tmrpcm.play("astro20.wav"); 
      break;
       case 24 :
      tmrpcm.play("astro21.wav"); 
      break;
      case 25 :
      tmrpcm.play("astro22.wav"); 
      break;
      case 26 :
      tmrpcm.play("battle.wav"); 
      ref = 0;
      break;
     
    
    }
  }   
    
    
    
   


//THE DROID FUNCTIONS BELOW ARE CONTROLED BY BLUETHOOT SIGNALS SEND FROM MY PHONE



  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte);
  }     



 switch (Serial1.read()) {      
   
  
   case 'I':                 //****************DOME ROTATION RIGHT
      
       digitalWrite(head1, LOW);
       digitalWrite(head2, HIGH);
        break;
    
    case 'G':              //*****************DOME ROTATION LEFT
       digitalWrite(head2, LOW);
       digitalWrite(head1, HIGH);
       
        break;


     

    case 'X':                 //****************12V LED WITH RELAY
      
       
       digitalWrite(light, HIGH);
        break;
        
    case 'V':                 //****************12V LED WITH RELAY
      
       digitalWrite(light, LOW);
       
        break;





  
  case 'F':                                 //FRONT
        digitalWrite(MLEFT1, HIGH);
       digitalWrite(MLEFT2, LOW);
    
       

       digitalWrite(MRIGHT1, LOW);
       digitalWrite(MRIGHT2, HIGH);
      
        break;
    
    case 'B':                               //BACK
      
       digitalWrite(MRIGHT1, HIGH);
       digitalWrite(MRIGHT2, LOW);
      
       
       digitalWrite(MLEFT1,LOW);
       digitalWrite(MLEFT2, HIGH);
       
        break;
      
     case 'L':  //     LEFT
      
       
        digitalWrite(MLEFT1, LOW);
       digitalWrite(MLEFT2, HIGH);
    
       digitalWrite(MRIGHT1, LOW);
       digitalWrite(MRIGHT2, HIGH);
      
        break;
      
     case 'R':                            // RIGHT
      
      
         digitalWrite(MLEFT1, HIGH);
       digitalWrite(MLEFT2, LOW);
    
       

       digitalWrite(MRIGHT1, HIGH);
       digitalWrite(MRIGHT2, LOW);
        break;
     
      
 
      
 
     case 'S':                                 //STOP
       digitalWrite(head1, LOW);
       digitalWrite(head2, LOW);


       digitalWrite(MRIGHT1, LOW);
       digitalWrite(MRIGHT2, LOW);

       digitalWrite(MLEFT1, LOW);
       digitalWrite (MLEFT2, LOW);
      
        break;
  
      
   

 
  break;   
   
    case 'W':                            //LED SET 1
        
       digitalWrite(LEDazul, HIGH);
       digitalWrite(LEDvermelho, HIGH);
       digitalWrite(LEDamarelo, LOW );
      digitalWrite(LEDverde, LOW);   
     break;
    

    
    case 'U':                             //LED SET 2
      
    digitalWrite(LEDverde, HIGH);
    digitalWrite(LEDamarelo, HIGH );
    digitalWrite(LEDvermelho, LOW);
    digitalWrite(LEDazul, LOW);
    
     break;
     
   
}

  }
  
