//controles de calibração
int branco_d = 0;
int branco_e = 0;
int preto_d = 0;
int preto_e = 0;
int ldr_d;
int ldr_e;
int x = 0;
int botao;
int calibracao_d;
int calibracao_e;
int margem = 0; //controle proporcional do robô para ajuste de sensibilidade
// Controle d configuração dos motores
int frente_d = 30;
int frente_e = 150;
int re_d = 150;
int re_e = 30;
int pare = 90;
//controle de velocidade do robô
int t=15;
#include <Servo.h>
Servo motor_d;
Servo motor_e;
//pinos e variaveis
int emisor=11;
int receptor=12;
long cml,duracao;
void setup (){
Serial.begin(9600);
motor_d.attach(4);
motor_e.attach(5);
pinMode(13,OUTPUT);
pinMode(emisor,OUTPUT);
pinMode(receptor,INPUT);
//motor parado
motor_d.write(pare);
motor_e.write(pare);
//calibração
botao = analogRead (A0);
Serial.println (botao);
while(botao>200){
digitalWrite (13, HIGH);
delay (300);
digitalWrite (13, LOW);
delay (300);
botao = analogRead (A0);
Serial.println (botao);
}
for (x=0; x<10; x++){
digitalWrite (13, HIGH);
delay (100);
ldr_d = analogRead (A1);
ldr_e = analogRead (A2);
branco_d = branco_d + ldr_d;
branco_e = branco_e + ldr_e;
Serial.println (x);
}
digitalWrite (13, LOW);
branco_d = branco_d/10;
branco_e = branco_e/10;
Serial.print ("branco direito= ");
Serial.print (branco_d);
Serial.print ("\t");
Serial.print ("branco esquerdo= ");
Serial.println (branco_e);
delay(5000);
Serial.println (x);
botao = analogRead (A0);
Serial.println (botao);
while(botao>200){
digitalWrite (13, HIGH);
delay (300);
digitalWrite (13, LOW);
delay (300);
botao = analogRead (A0);
}
for (x=10; x>0; x--){
digitalWrite (13, HIGH);
delay (100);
ldr_d = analogRead (A1);
ldr_e = analogRead (A2);
preto_d = preto_d + ldr_d;
preto_e = preto_e + ldr_e;
Serial.println (x);
}
digitalWrite (13, LOW);
preto_d = preto_d/10;
preto_e = preto_e/10;
Serial.print ("preto direito= ");
Serial.print (preto_d);
Serial.print ("\t");
Serial.print ("preto esquerdo= ");
Serial.println (preto_e);
delay(3000);
for (int y=0; y<10; y++){
digitalWrite (13, HIGH);
delay (250);
digitalWrite (13, LOW);
delay (250);
}
}
void loop (){
sonar();
int sensor_d=analogRead(A1);
int sensor_e=analogRead(A2);
Serial.print(sensor_d);
Serial.print("\t");
Serial.println(sensor_e);
Serial.print("\t");
Serial.println(cml);
//siga em frente
if(sensor_d<preto_d&&sensor_e<preto_e){
motor_d.write(frente_d);
motor_e.write(frente_e);
delay (t);
}
//vire a direita
if(sensor_d>preto_d&&sensor_e<preto_e){
motor_d.write(re_d);
motor_e.write(frente_e);
delay(t);
}
if(sensor_d<preto_d&&sensor_e>preto_e){
motor_d.write(frente_d);
motor_e.write(re_e);
delay(t);
}
if(sensor_d>preto_d&&sensor_e>preto_e){
motor_d.write(pare);
motor_e.write(pare);
}
/*inicio do desviar
if(cml<5){
//parar
motor_d.write(90);
motor_e.write(90);
delay(500);
//virar a esquerda
motor_d.write(0);
motor_e.write(0);
delay(1100);
//andar
motor_d.write(180);
motor_e.write(0);
delay(1700);
//virar a direita
motor_d.write(180);
motor_e.write(180);
delay(1100);
//andar
motor_d.write(180);
motor_e.write(0);
delay(1700);
//virar a esquerda
motor_d.write(0);
motor_e.write(0);
delay(1100);
}
*/
}//fim do loop
int sonar(){
digitalWrite(emisor,LOW);
delayMicroseconds(2);
digitalWrite(emisor,HIGH);
delayMicroseconds(10);
digitalWrite(emisor,LOW);
duracao= pulseIn(receptor,HIGH);
cml=microsecondstocentimeters(duracao);
return cml;
}
long microsecondstocentimeters(long microseconds){
return microseconds/29/2;
}
Nenhum comentário:
Postar um comentário