Buenas noches a todos:
Os presento mi proyecto sencillo para ver si me podéis ayudar un poco a resolver algunas dudas. Según vaya aprendiendo lo iré haciendo mas completo.
Consiste mediante reles, para poder separar un circuito de secuencia de los disparadores, cada vez que se activa el rele cierra un circuito prendiendo un artefacto pirotécnico.
Dispongo de una placa Arduino Mega, una placa de 8 reles (los reles se activan por LOW), un pulsador con su resistencia y dos led con su resistencia.
Proyecto 1.0.:
Consiste en que una vez se realice una pulsación de dos segundos, se iniciaría una secuencia de parpadeo de dos led de advertencia durante un tiempo y se seguirá por conectar el rele 1º por un segundo y su posterior des-conexión, esperar 35 segundos y conectar el rele 2º por un segundo y su posterior des-conexión, esperar 60 segundos y continuara con esta dinámica hasta el rele 8º que una vez se produzca su des-conexión se pare todo.
Este es el código que he empezado escribir para que me ayudéis a completarlo, me falta hacer que no se repita y ajustar el pulsador para que tras pulsarlo durante dos segundos se inicie la secuencia.
const int ReleDisparador1 = 23; //Primer rele que activara el articulo pirotécnico
const int ReleDisparador2 = 25;
const int ReleDisparador3 = 27;
const int ReleDisparador4 = 29;
const int ReleDisparador5 = 31;
const int ReleDisparador6 = 33;
const int ReleDisparador7 = 35;
const int ReleDisparador8 = 37; //Octavo rele que activara el articulo pirotécnico
const int Activador = 2; // Pulsador de disparo de la secuencia
const int LedAlarma1 = 7; // Led indicador de comienzo de la secuencia
const int LedAlarma2 = 8; // Led indicador de comienzo de la secuencia
int EstadoActivador = 0; // Variable para leer el estado del pulsador
int Activar = 0; // Variable para activar rele, tiene que ser 0 ya que el modelo de rele se activa por LOW
int Desactivar = 1; // Variable para desactivar un rele, tiene que ser 1 ya que el modelo de rele se desactiva por HIGH
int Encender = 1; // Variable para encender un led
int Apagar = 1; // Variable para apagar un led
void setup() {
pinMode(ReleDisparador1, OUTPUT);
pinMode(ReleDisparador2, OUTPUT);
pinMode(ReleDisparador3, OUTPUT);
pinMode(ReleDisparador4, OUTPUT);
pinMode(ReleDisparador5, OUTPUT);
pinMode(ReleDisparador6, OUTPUT);
pinMode(ReleDisparador7, OUTPUT);
pinMode(ReleDisparador8, OUTPUT);
pinMode(Activador, INPUT);
pinMode(LedAlarma1, OUTPUT);
pinMode(LedAlarma2, OUTPUT);
digitalWrite(ReleDisparador1, Desactivar); // Esto es para desactivar todos los reles ya que la placa de los reles a si lo requiere
digitalWrite(ReleDisparador2, Desactivar);
digitalWrite(ReleDisparador3, Desactivar);
digitalWrite(ReleDisparador4, Desactivar);
digitalWrite(ReleDisparador5, Desactivar);
digitalWrite(ReleDisparador6, Desactivar);
digitalWrite(ReleDisparador7, Desactivar);
digitalWrite(ReleDisparador8, Desactivar);
digitalWrite(LedAlarma1, Apagar);
digitalWrite(LedAlarma2, Apagar);
}
void loop(){
EstadoActivador = digitalRead(Activador);
// <===================================================Falta modificar para que cumpla
// que se tiene que apretar durante dos segundos
if (EstadoActivador == HIGH) {
digitalWrite(LedAlarma1, Encender); //Se encienden dos led de alarma que se alternam
delay(5000);
digitalWrite(LedAlarma1, Apagar);
digitalWrite(LedAlarma2, Encender);
delay(5000);
digitalWrite(LedAlarma2, Apagar);
digitalWrite(LedAlarma1, Encender);
delay(3000);
digitalWrite(LedAlarma1, Apagar);
digitalWrite(LedAlarma2, Encender);
delay(3000);
digitalWrite(LedAlarma2, Apagar);
digitalWrite(LedAlarma1, Encender);
delay(2000);
digitalWrite(LedAlarma1, Apagar);
digitalWrite(LedAlarma2, Encender);
delay(2000);
digitalWrite(LedAlarma2, Apagar); //Finalizan los led de alarma
digitalWrite(ReleDisparador1, Activar); // Activa el rele
delay(1000); // todo esto durante 1 seg
digitalWrite(ReleDisparador1, Desactivar); // hasta que se apaga
delay(35000); // y espera 35 seg que es lo que duraría el articulo pirotécnico
digitalWrite(ReleDisparador2, Activar); // Activa el rele
delay(1000); // todo esto durante 1 seg
digitalWrite(ReleDisparador2, Desactivar); // hasta que se apaga
delay(60000); // y este dura 60 seg
digitalWrite(ReleDisparador3, Activar); // Activa el rele
delay(1000); // todo esto durante 1 seg
digitalWrite(ReleDisparador3, Desactivar); // hasta que se apaga
delay(60000); // y este dura 60 seg
// y los siguientes reles
// <====================================================Falta añadir para que no se repita
}
}
Quedo a la espera de vuestra ayuda.
Un saludo y agradeceros vuestra ayuda por adelantado.