Buenas, estoy haciendo un proyecto con 3 ldr y un motor unipolar de 6 cables. La idea esque un ldr gire a la izquierda, otro se quede quieto y otro gire a la derecha. No puedo lograr que esto ocurra y no se por qué... les dejo el codigo a ver si alguien me puede ayudar.
int ESTADO;
int ESPERA = 0;
const int pin_ldr0 = A0;
const int pin_ldr1 = A1;
const int pin_ldr2 = A2;
boolean ver_datos = true;
int motorPin1 = 13; // PIN-es del Motor
int motorPin2 = 12;
int motorPin3 = 11;
int motorPin4 = 10;
int delayTime = 600; // Delay que determina la velocidad de giro
void setup() {
pinMode(motorPin1, OUTPUT); // Configuración de los PIN-es como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
ESTADO = ESPERA;
Serial.begin(9600);
}
void loop() {
int estado_ldr0 = analogRead(pin_ldr0);
int estado_ldr1 = analogRead(pin_ldr1);
int estado_ldr2 = analogRead(pin_ldr2);
estado_ldr0 = map(analogRead(pin_ldr0),0,800,0,1023);
estado_ldr1 = map(analogRead(pin_ldr1),0,800,0,1023);
estado_ldr2 = map(analogRead(pin_ldr2),0,880,0,1023);
if((estado_ldr1>estado_ldr0)&&(estado_ldr2>estado_ldr0)){
//lrd 1 es el mayor, el robot no se mueve
} else if((estado_ldr0>estado_ldr1)&&(estado_ldr2>estado_ldr1)){
//lrd0 es el mayor, giro a la izquierda
derecha();
} else if((estado_ldr0>estado_ldr2)&&(estado_ldr1>estado_ldr2)){
//lrd2 es el mayor, giro a la derecha
izquierda();
}
}
void izquierda(){
digitalWrite(motorPin1, LOW); // Cuarto paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Tercer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Segundo paso
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH); // Primer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
void derecha (){
digitalWrite(motorPin1, HIGH); // Primer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Segundo paso
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Tercer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Cuarto paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
espero que me puedan ayudar...ya no se que hacer...gracias