Faremos a conexão dos motores, leds e alimentação externa no módulo Motor Shield L293D, conforme esquema apresentado abaixo.
Para realizar a conexão dos quatro leds que simulam os faróis e lanternas do JC-Mach I são necessários dois resistores de 220 Ω e uma protoboard, como demonstrado no circuito acima. Note que os dois leds dianteiros, assim como os dois leds traseiros, estão conectados em paralelo.
#include <AFMotor.h>
#define LuzTraseira A4
#define LuzDianteira A5
AF_DCMotor MotorFrontalDireito(3);
AF_DCMotor MotorFrontalEsquerdo(4);
AF_DCMotor MotorTraseiroDireito(2);
AF_DCMotor MotorTraseiroEsquerdo(1);
void controlarLuzDianteira(bool on_off) {
if (on_off == true) //Se receber "true", acende a luz dianteira.
{
digitalWrite(LuzDianteira, HIGH);
}
else //Se receber "false", apaga a luz dianteira.
{
digitalWrite(LuzDianteira, LOW);
}
}
void controlarLuzTraseira(bool on_off) {
if (on_off == true) //Se receber "true", acende a luz traseira.
{
digitalWrite(LuzTraseira, HIGH);
}
else //Se receber "false", apaga a luz traseira.
{
digitalWrite(LuzTraseira, LOW);
}
}
void moverParaFrente() {
MotorFrontalDireito.setSpeed(200);
MotorFrontalEsquerdo.setSpeed(200);
MotorTraseiroDireito.setSpeed(200);
MotorTraseiroEsquerdo.setSpeed(200);
MotorFrontalDireito.run(FORWARD);
MotorFrontalEsquerdo.run(FORWARD);
MotorTraseiroDireito.run(FORWARD);
MotorTraseiroEsquerdo.run(FORWARD);
}
void moverParaTras() {
MotorFrontalDireito.setSpeed(200);
MotorFrontalEsquerdo.setSpeed(200);
MotorTraseiroDireito.setSpeed(200);
MotorTraseiroEsquerdo.setSpeed(200);
MotorFrontalDireito.run(BACKWARD);
MotorFrontalEsquerdo.run(BACKWARD);
MotorTraseiroDireito.run(BACKWARD);
MotorTraseiroEsquerdo.run(BACKWARD);
controlarLuzTraseira(true);
}
void frear() {
MotorFrontalDireito.setSpeed(0);
MotorFrontalEsquerdo.setSpeed(0);
MotorTraseiroDireito.setSpeed(0);
MotorTraseiroEsquerdo.setSpeed(0);
MotorFrontalDireito.run(RELEASE);
MotorFrontalEsquerdo.run(RELEASE);
MotorTraseiroDireito.run(RELEASE);
MotorTraseiroEsquerdo.run(RELEASE);
controlarLuzTraseira(true);
delay(500);
controlarLuzTraseira(false);
}
<aside> 💡 Note que foi adicionado o comando controlarLuzTraseira() nas funções moverParaTras() e frear().
</aside>
void fazerCurvaEsquerda() {
MotorFrontalDireito.setSpeed(200);
MotorFrontalEsquerdo.setSpeed(200);
MotorTraseiroDireito.setSpeed(200);
MotorTraseiroEsquerdo.setSpeed(200);
MotorFrontalDireito.run(FORWARD);
MotorFrontalEsquerdo.run(BACKWARD);
MotorTraseiroDireito.run(FORWARD);
MotorTraseiroEsquerdo.run(BACKWARD);
}
void fazerCurvaDireita() {
MotorFrontalDireito.setSpeed(200);
MotorFrontalEsquerdo.setSpeed(200);
MotorTraseiroDireito.setSpeed(200);
MotorTraseiroEsquerdo.setSpeed(200);
MotorFrontalDireito.run(BACKWARD);
MotorFrontalEsquerdo.run(FORWARD);
MotorTraseiroDireito.run(BACKWARD);
MotorTraseiroEsquerdo.run(FORWARD);
}