Montagem do Circuito

Faremos a conexão dos motores, leds e alimentação externa no módulo Motor Shield L293D, conforme esquema apresentado abaixo.

proj2.png

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.

Elaboração do Código

#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);
}