Buenas tardes, yo con mi mismo proyecto de nuevo al ataque.
Tas elaborar bloques de codigo con cada funcion de interrupcion asociada a una pulsacion de un boton exterior, ahora no puedo unirlas, dan error tras error de compilacion al unirlas, individualmente compilan bien. Una ayudita por favor.
Pongo bloques de codigo:
[unsigned long t;
#include <Stepper.h> //ponemos librería para controlar motores paso a paso
#define STEPS 200 // número de pasos que necesita para dar una vuelta. 200 en nuestro caso
// Ponemos nombre al motor, el número de pasos y los pins de control
Stepper stepper(STEPS, 8, 9, 10, 11); //Stepper nombre motor (número de pasos por vuelta, pins de control)
void setup()
{
// Velocidad del motor en RPM
stepper.setSpeed(100);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(18, INPUT_PULLUP);
pinMode(19, INPUT_PULLUP);
pinMode(20, INPUT_PULLUP);
pinMode(21, INPUT_PULLUP);
pinMode(30, OUTPUT);
pinMode(32, OUTPUT);
}
void loop() {
// Comprobamos que el botón está pulsado.
if ( digitalRead(2)==LOW ) {
t = millis(); // Guardamos CUANDO ha ocurrido.
//Girar 90º en un sentido
stepper.step(50);
digitalWrite(30,HIGH); // SALIDA A LED ROJO
delay(7000); //TIEMPO A
//Girar 90º en sentido contrario
stepper.step(-50);
digitalWrite(32,HIGH); // SALIDA A LED VERDE
delay(3000); //TIEMPO B
//Girar 90º en un sentido
stepper.step(50);
digitalWrite(30,HIGH); // SALIDA A LED ROJO
delay(7000); //TIEMPO A
//Girar 90º en sentido contrario
stepper.step(-50);
digitalWrite(32,HIGH); // SALIDA A LED VERDE
delay(3000); //TIEMPO B
//Girar 90º en un sentido
stepper.step(50);
digitalWrite(30,HIGH); // SALIDA A LED ROJO
delay(7000); //TIEMPO A
//Girar 90º en sentido contrario
stepper.step(-50);
digitalWrite(32,HIGH); // SALIDA A LED VERDE
delay(3000); //TIEMPO B
//Girar 90º en un sentido
stepper.step(50);
digitalWrite(30,HIGH); // SALIDA A LED ROJO
delay(7000); //TIEMPO A
//Girar 90º en sentido contrario
stepper.step(-50);
digitalWrite(32,HIGH); // SALIDA A LED VERDE
delay(3000); //TIEMPO B
//Girar 90º en un sentido
stepper.step(50);
digitalWrite(30,HIGH); // SALIDA A LED ROJO
delay(7000); //TIEMPO A
//Girar 90º en sentido contrario
stepper.step(-50);
digitalWrite(32,HIGH); // SALIDA A LED VERDE
delay(3000); //TIEMPO B
}
// Si el botón NO está pulsado.
else {
// queremos que el temporizado sea 57 seg
// asi que tenemos que comprobar que ha transcurrido ese
// tiempo
if ( millis()-t >57000 ) {
digitalWrite(30,HIGH);
stepper.step(50);
// Ha pasado el tiempo Y PONE MOTOR EN 50 (BO) Y LUZ ROJA
}
}
}]