-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d4653d5
commit d8b6b62
Showing
1 changed file
with
149 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
|
||
|
||
#include <Ultrasonic.h> | ||
|
||
|
||
//********************Definição dos pinos******************** | ||
// Pinos vão mudar de acordo com a nescessidade | ||
#define trigger 14 | ||
#define echo 15 | ||
#define triggeresq 16 | ||
#define echoesq 17 | ||
#define triggerdir 18 | ||
#define echodir 19 | ||
#define sensor1 2 | ||
#define sensor2 3 | ||
#define sensor3 4 | ||
#define sensor4 5 | ||
//********************Criação dos objetos******************** | ||
Ultrasonic ultrasonic(trigger, echo); | ||
Ultrasonic ultrasonicesq(triggeresq, echoesq); | ||
Ultrasonic ultrasonicdir(triggerdir, echodir); | ||
int var = 0; | ||
int a = 0; | ||
int b = 1; | ||
//********************Função de configuração****************** | ||
void setup() { | ||
//Configuração de velocidade dos motores | ||
//Pinos para o motor prescisão ser colocados em portas analógicas | ||
Serial.begin(9600);//Habilita a comunicação serial | ||
pinMode(6, OUTPUT); | ||
pinMode(7, OUTPUT); | ||
pinMode(9, OUTPUT); | ||
pinMode(10, OUTPUT); | ||
pinMode(sensor1, INPUT);//Configura o pino do sensor 1 como entrada | ||
pinMode(sensor2, INPUT);//Configura o pino do sensor 2 como entrada | ||
|
||
|
||
//pinMode(sensor3, INPUT);//Configura o pino do sensor 3 como entrada | ||
//pinMode(sensor4, INPUT);//Configura o pino do sensor 4 como entrada | ||
} | ||
//********************Função de principal******************** | ||
void loop() { | ||
//Cálculo e conversão da leitura do sensor ultrassônico | ||
long microsec = ultrasonic.timing(); | ||
long microsecesq = ultrasonicesq.timing(); | ||
long microsecdir = ultrasonicdir.timing(); | ||
|
||
float distancia = ultrasonic.convert(microsec, Ultrasonic::CM); | ||
float distanciaesq = ultrasonicesq.convert(microsecesq, Ultrasonic::CM); | ||
float distanciadir = ultrasonicdir.convert(microsecdir, Ultrasonic::CM); | ||
|
||
|
||
//Mostra as leitura dos sensores | ||
//Quando for ler remova o /* */ | ||
/* | ||
Serial.print("A distancia: "); | ||
Serial.print(distancia); | ||
Serial.print("\t"); | ||
Serial.print("Sensor da frente: "); | ||
Serial.println(digitalRead(sensor1)); | ||
//Serial.print("Sensor da tras: "); | ||
//Serial.println(digitalRead(sensor2)); | ||
Serial.print("A distancia 2: "); | ||
Serial.print(distanciaesq); | ||
Serial.print("\t"); | ||
Serial.print("A distancia 3: "); | ||
Serial.println(distanciadir); | ||
//delay(1000); | ||
//delay(1000); | ||
*/ | ||
//Verifica se tem alguma coisa na sua frente e se os sensor estão no branco | ||
if (distancia > 20 && distanciadir > 20 && distanciaesq > 20 && digitalRead(sensor1) == a && digitalRead(sensor2) == a ) { | ||
Serial.println("procurando oponente"); | ||
if (var == 0){ | ||
girar();//Fica Girando | ||
} | ||
|
||
} | ||
//Se caso encontrar algo na sua frente | ||
if ((distancia < 20 && distancia > 0) && distanciadir > 20 && distanciaesq > 20 && digitalRead(sensor1) == a && digitalRead(sensor2) == a ) { | ||
Serial.println("achei o oponente"); | ||
frente();//Movimenta para frente | ||
|
||
|
||
} | ||
if ((distanciaesq < 20 && distanciaesq > 0) && distanciadir > 20 && distancia > 20 && digitalRead(sensor1) == a && digitalRead(sensor2) == a ) { | ||
Serial.println("achei o oponente ESQUERDA"); | ||
|
||
giraresq();//Movimenta para esquerda | ||
var = 1; | ||
|
||
} | ||
if ((distanciadir < 20 && distanciadir > 0) && distanciaesq > 20 && distancia > 20 && digitalRead(sensor1) == a && digitalRead(sensor2) == a) { | ||
Serial.println("achei o oponente DIREITA"); | ||
girar();//Movimenta para esquerda | ||
var = 0; | ||
} | ||
//Se caso encontre a borda e não o oponente | ||
if (digitalRead(sensor1) == b || digitalRead(sensor2) == b) { | ||
Serial.println("Sensor da frente achou borda 1"); | ||
stop(); | ||
delay(1); | ||
re(); | ||
delay(300); | ||
stop(); | ||
|
||
} | ||
/*if (digitalRead(sensor3) == 1 ||digitalRead(sensor4) == 1 ) { | ||
Serial.println("Sensor da traseira achou borda 3"); | ||
frente(); | ||
}*/ | ||
|
||
} | ||
//********************Movimenta do robô******************** | ||
void re() { | ||
Serial.println("Re"); | ||
digitalWrite(6, LOW); | ||
digitalWrite(7, HIGH); | ||
digitalWrite(9, LOW); | ||
digitalWrite(10, HIGH); | ||
} | ||
void frente() { | ||
Serial.println("Frente"); | ||
digitalWrite(6, LOW); | ||
digitalWrite(7, HIGH); | ||
digitalWrite(9, LOW); | ||
digitalWrite(10, HIGH); | ||
} | ||
void giraresq() { | ||
Serial.println("Girando"); | ||
digitalWrite(6, LOW); | ||
digitalWrite(7, HIGH); | ||
digitalWrite(9, HIGH); | ||
digitalWrite(10, LOW); | ||
} | ||
void girar() { | ||
Serial.println("Girando"); | ||
digitalWrite(6, HIGH); | ||
digitalWrite(7, LOW); | ||
digitalWrite(9, LOW); | ||
digitalWrite(10, HIGH); | ||
} | ||
void stop() { | ||
Serial.println("parado"); | ||
digitalWrite(6, LOW); | ||
digitalWrite(7, LOW); | ||
digitalWrite(9, LOW); | ||
digitalWrite(10, LOW); | ||
} |