Código carro seguidor de línea

Tengo que realizar un carro seguidor de línea con arduino uno, este es el código pero necesito configurar los sensores para que ande más rápido y de curvas.
int val;
const int NEAR =2; // 
const int s1 =3; // 
const int s2 =4; // 
const int s3 =5; // 
const int s4 =6; // 
const int s5 =7; // 
const int CLP =1; // 
int sen1; //variable s1
int sen2; //variable s1
int sen3; //variable s1
int sen4; //variable s1
int sen5; //variable s1
int PARO; //variable s1
int SenCLP; //variable s1
void setup()
{
//Declarar los pines entrada sensores
attachInterrupt(0, Fparo, RISING) ;
pinMode(s1, INPUT);
pinMode(s2, INPUT); 
pinMode(s3, INPUT);
pinMode(s4, INPUT);
pinMode(s5, INPUT);
pinMode(CLP, INPUT);
//Declarar los pines para el motor 1
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
//Declarar los pines para el motor 2
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
PARO = digitalRead (NEAR); 
sen1 = digitalRead (s1);
sen2 = digitalRead (s2);
sen3 = digitalRead (s3);
sen4 = digitalRead (s4);
sen5 = digitalRead (s5);
Serial.print("OBSATCULO "); //Imprimimos el valor optenido de LDR
Serial.println(PARO); //Imprimimos el valor optenido de LDR
Serial.print("sen 1 "); //Imprimimos el valor optenido de LDR
Serial.println(sen1); //Imprimimos el valor optenido de LDR
Serial.print("sen 2 "); //Imprimimos el valor optenido de LDR
Serial.println(sen2); //Imprimimos el valor optenido de LDR
Serial.print("sen 3 "); //Imprimimos el valor optenido de LDR
Serial.println(sen3); //Imprimimos el valor optenido de LDR
Serial.print("sen 4 "); //Imprimimos el valor optenido de LDR
Serial.println(sen4); //Imprimimos el valor optenido de LDR
Serial.print("sen 5 "); //Imprimimos el valor optenido de LDR
Serial.println(sen5); //Imprimimos el valor optenido de LDR
if(sen3 == 0 && sen2 == 1 && sen4 == 1)
{
motores(180,180);
}
else if(sen2 == 0)
{
motores(180 ,110);
}
else if(sen4 == 0)
{
motores(110,180);
}
else if(sen1 == 0)
{
motores(180 ,90);
}
else if(sen5 == 0)
{
motores(90,180);
}
else 
{
motores(0,0);
}
}
void motores(int m1, int m2)
{
//m1 y m2 son las velocidades del primer
// y segundo motor, entre -255 y 255
//Invertir el giro del motor 1 si es necesario
if(m1 < 0)
{
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
m1 = -m1;
}
else
{
digitalWrite(9, LOW);
digitalWrite(8,HIGH);
}
//Invertir el giro del motor 2 si es necesario
if(m2 < 0)
{
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
m2 = -m2;
}
else
{
digitalWrite(12, LOW);
digitalWrite(13,HIGH);
}
//Generar pulso PWM
analogWrite(10, m1);
analogWrite(11, m2);
}
void Fparo()
{
motores(0,0);
while(digitalRead(2))
{
}
}

Añade tu respuesta

Haz clic para o