// pinos dos motores
int motor_d1 = 4;
int motor_d2 = 5;
int motor_e1 = 6;
int motor_e2 = 7;
//controles dos motores
int veloc = 255; //usar valores de 0 a 255 para controlar a velocidade
int virar = 30; // este valor controla a curva que o robô faz
void setup() {
//controle de motores
pinMode (motor_d1, OUTPUT);
pinMode (motor_d2, OUTPUT);
pinMode (motor_e1, OUTPUT);
pinMode (motor_e2, OUTPUT);
}
void loop() {
frente();
delay (3000);
direita();
delay (3000);
esquerda();
delay (3000);
pare();
delay (3000);
}// fim do loop
// controles dos motores
void frente (){
analogWrite (motor_d1, veloc);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, veloc);
analogWrite (motor_e2, 0);
}
void re (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, veloc);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, veloc);
}
void direita (){
analogWrite (motor_d1, veloc);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, veloc);
delay (virar);
}
void esquerda (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, veloc);
analogWrite (motor_e1, veloc);
analogWrite (motor_e2, 0);
delay (virar);
}
void pare (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, 0);
}
//---------------------------------------------------------------------------//
// Programa de seguidor de linha inicial
int preto_d_min = 1023;
int preto_e_min = 1023;
int preto_d = 0;
int preto_e = 0;
int x = 0;
int botao;
int t = 45; //regulagem que varia de 0 a 90 - controla o quanto vira
int margem = 0; //regulagem que varia de 0 a 1023
// pinos dos motores
int motor_d1 = 4;
int motor_d2 = 5;
int motor_e1 = 6;
int motor_e2 = 7;
//controles dos motores
int veloc = 255; //usar valores de 0 a 255 para controlar a velocidade
int virar = 30; // este valor controla a curva que o robô faz
void setup() {
// put your setup code here, to run once:
pinMode (2, INPUT);
pinMode (3, INPUT);
pinMode (A0, INPUT);
pinMode (13, OUTPUT);
//controle de motores
pinMode (motor_d1, OUTPUT);
pinMode (motor_d2, OUTPUT);
pinMode (motor_e1, OUTPUT);
pinMode (motor_e2, OUTPUT);
Serial.begin (9600);
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);
preto_d = analogRead (A1);
preto_e = analogRead (A2);
if (preto_d<preto_d_min){
preto_d_min=preto_d;
}
if (preto_e<preto_e_min){
preto_e_min=preto_e;
}
Serial.println (x);
}
digitalWrite (13, LOW);
Serial.print ("direito= ");
Serial.print (preto_d_min);
Serial.print ("\t");
Serial.print (" esquerdo= ");
Serial.println (preto_e_min);
for (int y=0; y<10; y++){
digitalWrite (13, HIGH);
delay (100);
digitalWrite (13, LOW);
delay (100);
}
delay (3000);
}
void loop() {
// put your main code here, to run repeatedly:
int sensor_d = analogRead (A1);
int sensor_e = analogRead (A2);
Serial.print ("direito= ");
Serial.print (sensor_d);
Serial.print ("\t");
Serial.print (" esquerdo= ");
Serial.println (sensor_e);
//siga em frente
if(sensor_d<preto_d_min-margem&&sensor_e<preto_e_min-margem){
frente();
}
//vire a direita
if(sensor_d>preto_d_min-margem&&sensor_e<preto_e_min-margem){
direita();
}
//vire a esquerda
if(sensor_d<preto_d_min-margem&&sensor_e>preto_e_min-margem){
esquerda();
}
//cruzamento
if(sensor_d>preto_d_min-margem&&sensor_e>preto_e_min-margem){
pare();
}
}// fim do loop
// controles dos motores
void frente (){
analogWrite (motor_d1, veloc);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, veloc);
analogWrite (motor_e2, 0);
}
void re (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, veloc);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, veloc);
}
void direita (){
analogWrite (motor_d1, veloc);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, veloc);
delay (virar);
}
void esquerda (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, veloc);
analogWrite (motor_e1, veloc);
analogWrite (motor_e2, 0);
delay (virar);
}
void pare (){
analogWrite (motor_d1, 0);
analogWrite (motor_d2, 0);
analogWrite (motor_e1, 0);
analogWrite (motor_e2, 0);
}