Nombre: Luis Eduardo Velasquez Puita
#include <LEANTEC_ControlMotor.h>
ControlMotor control(2,3,7,4,5,6); //
MotorDer1,MotorDer2,MotorIzq1,MotorIzq2,PWM_Derecho,PWM_Izquierdo
#define PIN_LDR1 2
#define PIN_LDR2 3
#define PIN_FL1 0
#define PIN_FL2 1
#define P_MUERTO 10
#define GIRO_LINEA 50
#define GIRO_FUERA 100
#define VELOCIDAD_NORMAL 255
#define VELOCIDAD_BAJA 200
#define VELOCIDAD_BAJA_GIRO 150
int OFFSET_LDR1 = 0;
int OFFSET_LDR2 = 0;
int OFFSET_FL1 = 0;
int OFFSET_FL2 = 0;
///
int sensores[4];
int valor_neutro=0;
int velocidad=255;
int direccion_anterior=0;
#define LDR1 0
#define LDR2 1
#define FL1 2
#define FL2 3
////
void leer_sensores();
int calcula_diferencia();
void mostrar_valores();
///
void setup(void){
Serial.begin(9600);
///
leer_sensores();
if(sensores[FL1] > sensores[FL2]){
OFFSET_FL1 = 0;
OFFSET_FL2 = sensores[FL1]-sensores[FL2];
else{
OFFSET_FL2 = 0; // Como FL2 es mayor, sumamos a FL1
OFFSET_FL1 = sensores[FL2]-sensores[FL1];
///
valor_neutro= sensores[FL1];
///
void loop(void)
leer_sensores();
//mostrar_valores();
control.Motor(velocidad,calcula_diferencia());
}
void mostrar_valores(){
///
Serial.print(" OFF_1 = " ); // Imprimimos el OFFSET del FL1
Serial.print(OFFSET_FL1);
Serial.print(" OFF_2 = " ); // Imprimimos el OFFSET del FL2
Serial.print(OFFSET_FL2);
Serial.print(" FL_1 = " ); // Imprimimos el valor del FL1
Serial.print(sensores[FL1]);
Serial.print(" FL_2 = " ); // Imprimimos el valor del FL2
Serial.print(sensores[FL2]);
Serial.print(" DIF = " ); // Imprimimos la diferencia entre el sensor 1 y el sensor 2
Serial.println(calcula_diferencia());
///
void leer_sensores(){
sensores[LDR1]=analogRead(PIN_LDR1)+OFFSET_LDR1
if(sensores[LDR1]<0){sensores[LDR1] = 0;}
else if(sensores[LDR1] > 1023){sensores[LDR1] = 1023;}
sensores[LDR2]=analogRead(PIN_LDR2)+OFFSET_LDR2;
if(sensores[LDR2]<0){sensores[LDR2] = 0;}
else if(sensores[LDR2] > 1023){sensores[LDR2] = 1023;}
sensores[FL1]=analogRead(PIN_FL1)+OFFSET_FL1;
if(sensores[FL1]<0){sensores[FL1] = 0;}
else if(sensores[FL1] > 1023){sensores[FL1] = 1023;}
sensores[FL2]=analogRead(PIN_FL2)+OFFSET_FL2;
if(sensores[FL2]<0){sensores[FL2] = 0;}
else if(sensores[FL2] > 1023){sensores[FL2] = 1023;}
}
///
int calcula_diferencia(){
int valor;
if((sensores[FL1] > valor_neutro + P_MUERTO)&&(sensores[FL2] > valor_neutro +
P_MUERTO)){
if(direccion_anterior==0){valor=100;}
else{valor=-100;}
velocidad = VELOCIDAD_BAJA_GIRO;
else{
valor = sensores[FL2]-sensores[FL1];
if((valor > P_MUERTO) || (valor < -P_MUERTO)){
velocidad = VELOCIDAD_BAJA;
if (valor > 0) {valor= GIRO_LINEA;direccion_anterior=0;}
if(valor < 0){valor = -GIRO_LINEA;direccion_anterior=1;}
else {
valor = 0;
velocidad = VELOCIDAD_NORMAL;
return valor; // Devolvemos el valor