#define EMITTER_PIN 12 //Emitter es controlado por el pin digital 2
#define pwm_i 3
#define izq_1 5
#define izq_2 4
#define pwm_d 9
#define der_1 7
#define der_2 8
//Los sensores del 0 al 5 se conectaron a las entradas analógicas del 0 al 5, respectivamente.
void setup()
{
delay(1000);
pinMode(izq_1,OUTPUT);
pinMode(izq_2,OUTPUT);
pinMode(der_1,OUTPUT);
pinMode(der_2,OUTPUT);
pinMode(6,OUTPUT);
delay(500);
int i;
pinMode(13, OUTPUT);
digitalWrite(13, HIGH); // Encender LED para indicar que está en modo calibración.
for (i = 0; i < 400; i++) //Realizar la calibración, toma unos 10 segundos
{
qtra.calibrate(); // Lee todos los sensores 10 veces a 2.5ms cada uno.
}
digitalWrite(13, LOW); // Apagar el LED para indicar que pasó la calibración.
}
void loop()
{
unsigned int position = qtra.readLine(sensorValues);
digitalWrite(6,HIGH);
if (sensorValues[0] < 500 && sensorValues[1] < 500 && sensorValues[2] < 500 && sensorValues[3] < 500 && sensorValues[4] < 500 && sensorValues[5] < 500 && sensorValues[6] < 500 && sensorValues[7] < 500)
{
digitalWrite(izq_1,LOW);
digitalWrite(izq_2,HIGH);
analogWrite(pwm_i,75);
digitalWrite(der_1,LOW);
digitalWrite(der_2,HIGH);
analogWrite(pwm_d,75);
}
if (sensorValues[3] > 500 && sensorValues[4] > 500)
{
digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,150);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,150);
}
if(sensorValues[3] > 500 && sensorValues[2] > 500)
{digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,150);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,125);
}
if(sensorValues[2] > 500 && sensorValues[1] > 500)
{digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,150);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,100);
}
if(sensorValues[1] > 500 && sensorValues[0] > 500)
{digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,150);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,75);
}
if (sensorValues[4] > 500 && sensorValues[5] > 500)
{
digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,125);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,150);
}
if(sensorValues[5] > 500 && sensorValues[6] > 500)
{digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,100);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,150);
}
if(sensorValues[6] > 500 && sensorValues[7] > 500)
{digitalWrite(izq_1,HIGH);
digitalWrite(izq_2,LOW);
analogWrite(pwm_i,75);
digitalWrite(der_1,HIGH);
digitalWrite(der_2,LOW);
analogWrite(pwm_d,150);
}
}
Explicación:
"pmw_d" corresponde al motor derecho.
"pmw_i" corresponde al motor izquierdo.
Velocidad máxima 150, velocidad mínima 0.
- La parte derecha del sensor corresponde a los sensores 0, 1 y 2.
- La parte central del sensor corresponde a los sensores 3 y 4.
- La parte izquierda del sensor corresponde a los sensores 5, 6 y 7.
- Si los sensores del lado derecho detectan negro arrojando valores mayores a 500 (Cercanos a 1000) el motor del lado izquierdo baja la velocidad. Asimismo pasa con el lado izquierdo, cuando los sensores detectan negro y arrojan valores mayores a 500 el motor del lado derecho baja la velocidad y el motor del lado izquierdo se pone a su máxima velocidad.
- Si los sensores de la parte central (3 y 4) arrojan valores mayores a 500 se le asigna a ambos motores la velocidad máxima.
Comentarios
Publicar un comentario