Hola!!!
Estoy tratando de hacer un Rastreador de línea.
Pero no logro que el robotito se mueva siguiendo la línea, solo hace un moviento corto y se mueve sobre el blanco en círculos.
Código:
*/
//Variables de Salida
const int irIzquierda = 7;
const int irDerecha = 6;
const int ledTest = 13;
/*
Variables Motor
*/
const int AIA = 9;
const int AIB = 10;
const int BIA = 4;
const int BIB = 11;
/*
Variables Entradas
*/
const int trIzquierda = A0;
const int trDerecha = A1;
/*
Datos reflectividad guardada
*/
int refDer = 0;
int refIzq = 0;
/*FIN VARIABLES*/
void setup() {
//INICIO SETUP ENTRADAS / SALIDAS
pinMode(irIzquierda, OUTPUT);
pinMode(irDerecha, OUTPUT);
pinMode(ledTest, OUTPUT);
digitalWrite(irIzquierda, LOW);
digitalWrite(irDerecha, LOW);
digitalWrite(ledTest, LOW);
/*
Inicializacion salidas del Motor
*/
pinMode(AIA, OUTPUT);
pinMode(AIB, OUTPUT);
pinMode(BIA, OUTPUT);
pinMode(BIB, OUTPUT);
analogWrite(AIA, 0);
analogWrite(AIB, 0);
analogWrite(BIA, 0);
analogWrite(BIB, 0);
Serial.begin(9600);
}
void loop() {
digitalWrite(ledTest, HIGH);
digitalWrite(irIzquierda, HIGH);
refIzq = analogRead(trIzquierda);
digitalWrite(irDerecha, HIGH);
refDer = analogRead(trDerecha);
digitalWrite(ledTest, LOW);
Serial.print(refIzq);
Serial.print(",");
Serial.println(refDer);
movimiento();
delay(50);
}
void movimiento(){
if (refDer < 1000 && refIzq < 1000) {
atras();
}
else if (refDer > 1000 && refIzq > 1000) {
adelante();
}
else if (refDer < 1000 && refIzq > 1000) {
derecha();
}
else if (refDer > 1000 && refIzq < 1000) { //
izquierda();
}
}
void adelante()
{
analogWrite(AIA, 255);
analogWrite(AIB, 0);
analogWrite(BIA, 255);
analogWrite(BIB, 0);
}
void atras()
{
analogWrite(AIA, 0);
analogWrite(AIB, 255);
analogWrite(BIA, 0);
analogWrite(BIB, 255);
}
void derecha()
{
analogWrite(AIA, 255);
analogWrite(AIB, 0);
analogWrite(BIA, 0);
analogWrite(BIB, 255);
}
void izquierda()
{
analogWrite(AIA, 0);
analogWrite(AIB, 255);
analogWrite(BIA, 255);
analogWrite(BIB, 0);
}
Desde ya, muchas gracias!