//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");
}
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
led11:A
led11:C
led12:A
led12:C
led13:A
led13:C
led14:A
led14:C
bz1:1
bz1:2
servo1:GND
servo1:V+
servo1:PWM
led15:A
led15:C
led16:A
led16:C
led17:A
led17:C
led18:A
led18:C