#include <AFMotor.h>                //biblioteca ‘Adafruit Motor Shield library’ para controle dos motores
#include <SoftwareSerial.h>         //biblioteca de comunicação serial
#define RX 2                        //pino 2 (será usado como RX pelo software - deve ser ligado no Tx do modem)
#define TX A3                       //pino 3 (será usado como TX pelo software - deve ser ligado no Rx do modem)

SoftwareSerial bluetooth(RX, TX);   //cria um objeto de comunicação serial

char controle = '0';                //para armazenar o caractere recebido

AF_DCMotor mEsq(3);                 //AF_DCMotor é o objeto; mEsq o nome da variável; '3' foi a porta escolhida 
AF_DCMotor mDir(4);                 //motor 'mDir' ligado na porta 4

void setup() { 
  bluetooth.begin(9600);            //inicializa o objeto bluetooth a 9600bps
  pinMode(LED_BUILTIN, OUTPUT);     //este é o LED da placa, porta digital 13
  digitalWrite(LED_BUILTIN, LOW);   //inicia com o LED desligado
  //velocidade inicial - vai de 0 até 255
  mEsq.setSpeed(150);
  mDir.setSpeed(150);
  //parar os motores
  mEsq.run(RELEASE); //'run' controla o motor e o parâmetro 'RELEASE' desliga o motor
  mDir.run(RELEASE); 
  controle = 0; 
}

void loop() { 
  if(bluetooth.available()) {       //se houver dados na interface serial na qual está o bluetooth
  
    controle = bluetooth.read();    //lê os dados vindos do bluetooth e coloca na variável 'controle'

    switch (controle){
      case 0: //este valor ser enviado pelo App, você pode trocar
        mEsq.run(RELEASE); //'RELEASE' desliga o motor
        mDir.run(RELEASE);
        break;
      case 1:
        mEsq.run(BACKWARD); //motor no sentido 'para frente'
        mDir.run(BACKWARD);
        break;
      case 2:
        mEsq.run(FORWARD); //motor no sentido 'para trás'
        mDir.run(FORWARD);
        break;   
      case 3:              
        mEsq.run(FORWARD); //esquerda
        mDir.run(RELEASE);
        break;
      case 4:
        mEsq.run(BACKWARD); //direita
        mDir.run(RELEASE);
        break;              
     }  
  }
}
