#include <infrarrojo.h>// libreria para los senosres IR
int motor1 = 5; // el numero del pin para el primer motor V(-)
int motor1a = 6; //el numero del pin para el primer motor V(+)
int motor2 = 10; // el numero del pin para el segundo motor V(+)
int motor2a = 11; //el numero del pin para el segundo motor V(-)
/*
Ubicacion fisica de los sensores IR
sensor4 sensor1 sensor2 sensor3
*/
infrarrojo sen1(2);//EL numero de pin a usar para el sensor 1
infrarrojo sen2(4);//EL numero de pin a usar para el sensor 2
infrarrojo sen3(7);//EL numero de pin a usar para el sensor 3
infrarrojo sen4(8);//EL numero de pin a usar para el sensor 4
int VALOR;//variable que recibe el valor del dato de sensor
/*
Estado logico de los sensores sobre la linea:
blanco = 0
negro = 1
*/
int estadosen1;//almacena el que tiene la variable VALOR en el valor del sensor 1
int estadosen2;//almacena el que tiene la variable VALOR en el valor del sensor 2
int estadosen3;//almacena el que tiene la variable VALOR en el valor del sensor 3
int estadosen4;//almacena el que tiene la variable VALOR en el valor del sensor 4
void setup() {
//se configuran los motores como salida
pinMode(motor1, OUTPUT);
pinMode(motor1a, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor2a, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.print("\n leyendo estado sensor: \n");//imprime mensaje en el monitor serial
//obteniendo el valor del primer sensor via monitor serial
Serial.print(sen1.lectura(VALOR));//imprime el estado logico en el monitor serial del sensor 1
estadosen1 = sen1.lectura(VALOR);
//obteniendo el valor del segundo sensor via monitor serial
Serial.print(sen2.lectura(VALOR));//imprime el estado logico en el monitor serial del sensor 2
estadosen2 = sen2.lectura(VALOR);
//obteniendo el valor del tercer sensor via monitor serial
Serial.print(sen3.lectura(VALOR));//imprime el estado logico en el monitor serial del sensor 3
estadosen3 = sen3.lectura(VALOR);
//obteniendo el valor del cuarto sensor via monitor serial
Serial.print(sen4.lectura(VALOR));//imprime el estado logico en el monitor serial del sensor 4
estadosen4 = sen4.lectura(VALOR);
//delay(3000); //delay usado para conocer el estados de los sensores usando el monitor serial, para pruebas de los estados logicos de los sensores
if((estadosen1 == 1)&&(estadosen2 ==1))//si el sensor 1 y 2 estan en negro (1) el carro avanza
{
analogWrite(motor1,0); //reversa
analogWrite(motor1a, 200); //adelate, con un valor analogico de 200 para la velocidad del los motorreductores
analogWrite(motor2,200); //adelate, con un valor analogico de 200 para la velocidad del los motorreductores
analogWrite(motor2a, 0);//reversa
}
if((estadosen1 == 0)&&(estadosen2 ==0))//si el sensor 1 y 2 estan en blanco (0) el carro se detiene
{
analogWrite(motor1,0); //reversa
analogWrite(motor1a, 0); //adelate
analogWrite(motor2,0); //adelate
analogWrite(motor2a, 0);//reversa
}
if((estadosen3 == 1))//si el sensor 3 esta en negro (1) el carro avanza y gira hacia la derecha
{
analogWrite(motor1,0); //reversa
analogWrite(motor1a, 200); //adelate, con un valor analogico de 200 para la velocidad del los motorreductores
analogWrite(motor2,0); //adelate
analogWrite(motor2a, 0);//reversa
}
if((estadosen4 == 1))//si el sensor 3 esta en negro (1) el carro avanza y gira hacia la izquierda
{
analogWrite(motor1,0); //reversa
analogWrite(motor1a, 0); //adelate
analogWrite(motor2,200); //adelate, con un valor analogico de 200 para la velocidad del los motorreductores
analogWrite(motor2a, 0);//reversa
}
if((estadosen1 == 0)&&(estadosen2 ==0)&&(estadosen3==0)&&(estadosen4==0))//si todos los sensores estan en blanco (0) el carro se detiene
{
analogWrite(motor1,0); //reversa
analogWrite(motor1a, 0); //adelate
analogWrite(motor2,0); //adelate
analogWrite(motor2a, 0);//reversa
}
}