// EXEMPLO 3: TESTE DE MOVIMENTO DO ROBô VIA USB
// DEFINIÇÃO DE NOMES PARA GPIO (pinos):
#define IN1 32 // define o nome IN1 (driver LN298) para GPIO 32 (ESP32)
#define IN2 33 // define o nome IN2 (driver LN298) para GPIO 33 (ESP32)
#define IN3 18 // define o nome IN3 (driver LN298) para GPIO 18 (ESP32)
#define IN4 19 // define o nome IN4 (driver LN298) para GPIO 19 (ESP32)
// Definição de variaveis:
char comando; // variavel tipo caracter
void setup()
{// função de inicialização (configurações)
//configuração das GPIO como saidas digitais:
pinMode(IN1, OUTPUT); //GPIO 32 (IN1) -> Saída
pinMode(IN2, OUTPUT); //GPIO 33 (IN2) -> Saída
pinMode(IN3, OUTPUT); //GPIO 18 (IN3) -> Saída
pinMode(IN4, OUTPUT); //GPIO 19 (IN4) -> Saída
//Configuração da porta serial assíncrona (USB) do ESP32:
Serial.begin(9600); // inicia a porta serial em 9600bps (BAUDRATE)
Serial.println("envie o caracter de comando:");
}//fim setup
void loop()
{// FUNÇÃO DE LAÇO INFINITO (PROCESSAMENTO)
// se o numero de caracter disponivel for (>0) faz a leitura do caracter e guarda na variavel comando
if(Serial.available()>0) comando=Serial.read();
if(comando=='P') parado();// se comando for igual ao caracter P chama função de usuário parado
if(comando=='F') frente();// se comando for igual ao caracter F chama função de usuário frente
if(comando=='T') tras();// se comando for igual ao caracter P chama função de usuário tras
if(comando=='D') direita();// se comando for igual ao caracter P chama função de usuário direita
if(comando=='E') esquerda();// se comando for igual ao caracter P chama função de usuário esquerda
}// FIM LOOP
// FUNÇÕES DO USUÁRIO:
void parado(){// função para robo parado
// motor esquerda parado
digitalWrite(IN1, LOW);// IN1=0
digitalWrite(IN2, LOW);// IN2=0
// motor direita parado
digitalWrite(IN3, LOW);// IN3=0
digitalWrite(IN4, LOW);// IN4=0
}//fim da função parado
void frente(){// função para robô andar para frente
// motor esquerda horário
digitalWrite(IN1, HIGH);// IN1=1
digitalWrite(IN2, LOW);// IN2=0
// motor direita horário
digitalWrite(IN3, HIGH);// IN3=1
digitalWrite(IN4, LOW);// IN4=0
}//fim da função frente
void tras(){// função para robô andar para tras
// motor esquerda anti-horário
digitalWrite(IN1, LOW);// IN1=0
digitalWrite(IN2, HIGH);// IN2=1
// motor direita anti-horário
digitalWrite(IN3, LOW);// IN3=0
digitalWrite(IN4, HIGH);// IN4=1
}//fim da função tras
void direita(){// função para robô andar para direita
// motor esquerda horário
digitalWrite(IN1, HIGH);// IN1=1
digitalWrite(IN2, LOW);// IN2=0
// motor direita anti-horário
digitalWrite(IN3, LOW);// IN3=0
digitalWrite(IN4, HIGH);// IN4=1
}//fim da função frente
void esquerda(){// função para robô andar para esquerda
// motor esquerda anti-orário
digitalWrite(IN1, LOW);// IN1=0
digitalWrite(IN2, HIGH);// IN2=1
// motor direita horário
digitalWrite(IN3, HIGH);// IN3=1
digitalWrite(IN4, LOW);// IN4=0
}//fim da função esquerda