Montagem do Circuito

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

proj3.png

O sensor ultrassônico HC-SR04 terá a função de identificar a distância dos objetos que estão a frente do JC-Mach I, fazendo com que evite a colisão e desvie desses objetos. O sensor ultrassônico funciona enviando uma onda ultrassônica pelo seu transmissor e, assim que essa onda acerta um objeto, ela retorna e é absorvida pelo receptor do sensor. Com isso, é possível identificar a distância do objeto a partir do intervalo de tempo entre a emissão e recepção dessa onda pelo sensor ultrassônico.

Esse sensor possui quatro pinos para conexão com o módulo Motor Shield L293D: o VCC do sensor conectado ao +5V do módulo, o GND do sensor conectado ao GND do módulo, o Trig (emissão) do sensor conectado à porta A0 do módulo e o Echo (recepção) do sensor conectado à porta A1 do módulo.

Elaboração do Código

Untitled

Para instalar a biblioteca, siga os mesmos passos apresentados no primeiro tutorial: navegue no menu superior esquerdo em Rascunho > Incluir Biblioteca > Gerenciar Bibliotecas ou pressione o atalho Ctrl+Shift+I para localizar e instalar a biblioteca.

#include <AFMotor.h>
#include <UltrasonicSensor.h>
#define LuzTraseira A4
#define LuzDianteira A5

UltrasonicSensor ultrasonic(A0, A1);  

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.run(RELEASE);
	MotorFrontalEsquerdo.run(RELEASE);
	MotorTraseiroDireito.run(RELEASE);
	MotorTraseiroEsquerdo.run(RELEASE);
	controlarLuzTraseira(true);
	delay(500);
	controlarLuzTraseira(false);
}

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