//App Bluetooth
#include <DabbleESP32.h>
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
//Esp32 - Servo
#include <ESP32Servo.h>
Servo Angulo; // Nomeia o Servo
// Variáveis
char contador;
//Pinos dos Componentes
#define F1 36 // Farol Esquerdo
#define F2 22 // Farol Direito
#define FR1 3 // Farolete Direito 1
#define FR2 21 // Farolete Direito 2
#define FR3 34 // Farolete Esquerdo 1
#define FR4 35 // Farolete Esquerdo 2
#define L1 32 // Lanterna Esquerda
#define L2 19 // Lanterna Direita
#define LR1 33 // Lanterna Ré Esquerda
#define LR2 18 // Lanterna Ré Direita
#define PA1 39 // Pisca Alerta Frente Esquerda
#define PA2 1 // Pisca Alerta Frente Direita
#define PA3 25 // Pisca Alerta Atrás Esquerda
#define PA4 5 // Pisca Alerta Atrás Direita
#define BZ 23 // Buzina
#define A1A 14 // Ponte H: Motor A - Esquerdo - Vermelho
#define A1B 12 // Ponte H: Motor A - Esquerdo - Preto
#define B1A 4 // Ponte H: Motor B - Direito - Vermelho
#define B1B 2 // Ponte H: Motor B - Direito - Preto
void setup () {
Serial.begin(115200); // Inicia o Monitor Serial
Dabble.begin("MEL");
Angulo.attach(15); // Pino de conexão do servo Motor
Angulo.write(90); // Posiciona o Servo Motor a noventa graus
pinMode (F1,OUTPUT);
pinMode (F2,OUTPUT);
pinMode (FR1,OUTPUT);
pinMode (FR2,OUTPUT);
pinMode (FR3,OUTPUT);
pinMode (FR4,OUTPUT);
pinMode (L1,OUTPUT);
pinMode (L2,OUTPUT);
pinMode (LR1,OUTPUT);
pinMode (LR2,OUTPUT);
pinMode (PA1,OUTPUT);
pinMode (PA2,OUTPUT);
pinMode (PA3,OUTPUT);
pinMode (PA4,OUTPUT);
pinMode (BZ,OUTPUT);
pinMode (A1A,OUTPUT);
pinMode (A1B,OUTPUT);
pinMode (B1A,OUTPUT);
pinMode (B1B,OUTPUT);
}
void loop () {
Dabble.processInput(); // Limpa os dados recebidos do Celular
Serial.print("KeyPressed: ");
if (GamePad.isUpPressed()) // Carro avança
{
Serial.print("Up");
digitalWrite(F1, 1);
digitalWrite(F2, 1);
digitalWrite(L1, 1);
digitalWrite(L2, 1);
digitalWrite(A1A, 1);
digitalWrite(A1B, 0);
digitalWrite(B1A, 1);
digitalWrite(B1A, 0);
}
if (GamePad.isDownPressed()) // Carro recua
{
Serial.print("Down");
digitalWrite(F1, 1);
digitalWrite(F2, 1);
digitalWrite(L1, 1);
digitalWrite(L2, 1);
digitalWrite(LR1, 1);
digitalWrite(LR2, 1);
digitalWrite(A1A, 0);
digitalWrite(A1B, 1);
digitalWrite(B1A, 0);
digitalWrite(B1A, 1);
}
if (GamePad.isLeftPressed()) // Liga Farolete
{
digitalWrite(FR1, 1);
digitalWrite(FR2, 1);
digitalWrite(FR3, 1);
digitalWrite(FR4, 1);
Serial.print("Left");
}
if (GamePad.isRightPressed()) // Liga Pisca Alerta
{
for(contador=0;contador<6;contador++){
digitalWrite(PA1, 1);
digitalWrite(PA2, 1);
digitalWrite(PA3, 1);
digitalWrite(PA4, 1);
delay(300);
digitalWrite(PA1, 0);
digitalWrite(PA2, 0);
digitalWrite(PA3, 0);
digitalWrite(PA4, 0);
delay(300);
}
Serial.print("Right");
}
if (GamePad.isSquarePressed()) // Vira para Esquerda
{
Angulo.write(135);
digitalWrite(PA1, 1);
digitalWrite(PA3, 1);
Serial.print("Square");
}
if (GamePad.isCirclePressed()) // Vira para Direita
{
Angulo.write(45);
digitalWrite(PA2, 1);
digitalWrite(PA4, 1);
Serial.print("Circle");
}
if (GamePad.isCrossPressed()) // Alarme
{
digitalWrite(BZ, 1);
for(contador=0;contador<6;contador++){
digitalWrite(PA1, 1);
digitalWrite(PA2, 1);
digitalWrite(PA3, 1);
digitalWrite(PA4, 1);
delay(300);
digitalWrite(PA1, 0);
digitalWrite(PA2, 0);
digitalWrite(PA3, 0);
digitalWrite(PA4, 0);
delay(300);
}
Serial.print("Cross");
}
if (GamePad.isTrianglePressed()) // Endireita o eixo
{
Angulo.write(90);
Serial.print("Triangle");
}
if (GamePad.isStartPressed()) // Contingência
{
Angulo.write(90);
digitalWrite(A1A, 0);
digitalWrite(A1B, 0);
digitalWrite(B1A, 0);
digitalWrite(B1A, 0);
digitalWrite(F1, 1);
digitalWrite(F2, 1);
digitalWrite(FR1, 1);
digitalWrite(FR2, 1);
digitalWrite(FR3, 1);
digitalWrite(FR4, 1);
digitalWrite(L1, 1);
digitalWrite(L2, 1);
digitalWrite(LR1, 1);
digitalWrite(LR2, 1);
digitalWrite(PA1, 1);
digitalWrite(PA2, 1);
digitalWrite(PA3, 1);
digitalWrite(PA4, 1);
Serial.print("Start");
}
if (GamePad.isSelectPressed())
{
Angulo.write(90);
digitalWrite(A1A, 0);
digitalWrite(A1B, 0);
digitalWrite(B1A, 0);
digitalWrite(B1A, 0);
digitalWrite(F1, 0);
digitalWrite(F2, 0);
digitalWrite(L1, 0);
digitalWrite(L2, 0);
digitalWrite(FR1, 0);
digitalWrite(FR2, 0);
digitalWrite(FR3, 0);
digitalWrite(FR4, 0);
digitalWrite(LR1, 0);
digitalWrite(LR2, 0);
digitalWrite(PA1, 0);
digitalWrite(PA2, 0);
digitalWrite(PA3, 0);
digitalWrite(PA4, 0);
Serial.print("Select");
}
}