Perdón pero me respondo a mi mismo... he encontrado un código que funciona bien, a falta de ajustar un par de cosas:
int motorPin1 = 5; // Pines del Motor
int motorPin2 = 6;
int motorPin3 = 7;
int motorPin4 = 8;
int delayTime = 1; // DelayTime determina la espera entre uno y otro paso
int delayTime1 = 2; // DelayTime1 determina la velocidad de giro entre uno y otro paso
int count = 0; // cuenta los pasos del motor 400 una vuelta completa
int pinLDR = A1; // leeremos el pin 0 LDR
int i = 0;
int valorLDR = 0; //Aquí almacenamos los datos recogidos del LDR:
int vuelta = 1; //Aqui almacenamos el numero de ciclos de vueltas
void setup()
{
// Visualización de los valores por la consola, hay que clicar en el botón Serial Monitor
Serial.begin(9600);
pinMode(motorPin1, OUTPUT); // Configuracion de los Pines como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
//Guardamos el valor leido en una variable
valorLDR = analogRead(pinLDR);
// Impresión de los valores leídos por el sensor por pantalla
Serial.print("LDR = ");
Serial.println(valorLDR);
delay (10000);// tiempo de retardo
if (valorLDR <= 110 and count >= 0 and vuelta <= 0)
abrir();
else if (valorLDR >= 220 and count <= 9555 and vuelta >= 1)
cerrar();
else
parar();
}
void abrir()
{
for (count = 0; count < 9555; count++)
{
// Punto A (Primero)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
// Punto B (Segundo)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto C (Tercero)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto D (Cuarto)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
Serial.println(vuelta);
}
count = 9555;
vuelta = vuelta + 1;
delay(delayTime);
}
void cerrar()
{
for (count = 9555; count > 0; count--) //
{
// Punto D (Cuarto)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
// Punto C (Tercero)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto B (Segundo)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
// Punto A (Primero)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime1);
Serial.println(vuelta);
}
count = 0;
vuelta = vuelta - 1;
delay(delayTime);
}
void parar()
{
for (i = 0; i < 3; i++)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime1);
}
1º - Están invertidos los sentidos de giro con respecto a lo que yo necesito, en este código cuando es apertura gira en un sentido, y yo necesito que sea en el contrario... y lo mismo cuando es cerrar la puerta.
2º - Creo que el número de vuetas está especificado en la cifra 9555, si subo serán más vueltas y si bajo serán menos ¿correcto?
GRACIAS!!