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