Como es mi primera intervención os mando un saludo a todos y os felicito por hacer posible este foro.
Pues bien, tengo que "juvilar" mi antiguo modulo fabricado a base de temporizadores y pasarme a Arduino.
¿Que es un modulo "hombre muerto"?
Un sistema que mediante pulsaciones manuales del usuario, rearma de nuevo un primer temporizador e informa que el individuo continua "despierto". Se utiliza, o se utilizaba por ejemplo, para conductores, vigilantes. maquinistas de tren, etc.
El modulo funciona de la siguiente manera.
Un temporizador se arma solo para un tiempo determinado, por ejemplo, 5 minutos. Finalizado este tiempo, si el usuario no pulsa el botón indicado, salta un pitido de aviso durante 30 segundos, pasados los cuales se envía orden de parada inmediata.
El primer temporizador se puede redisparar las veces que queramos, que volverá a inicializarse a 5 minutos.El segundo actua como consecuencia del disparo del primero. Este si se detiene pulsando un botón, queda reinicializado junto con el primero y todo vuelve a armarse de nuevo, pero si el segundo temporizados (30seg.) acaba su tiempo dispara por relé una orden de Stop a la maquinaria correspondiente.
Necesitaría un programa que enlazara los dos temporizadores y que un solo botón reinicializára todo de nuevo.
En el sistema actual, después de finalizar el primer redisparable ( 30 minutos ),suena un pitido de aviso que no para, y cuando finaliza el tiempo del segundo redisparable (2 minutos), manda un disparo del relé ( en mi caso, un sms de emergencia a unos números móviles)
También tengo botones de pánico para atacar directamente al final del segundo redisparable y aviso de falta de alimentación, cada uno con su sms correspondiente.
Me conformo con que alguien me oriente sobre un redisparable de 30 minutuos, y ya me buscaría la vida para continuar.
Un saludo a todos.
Peter.
Hola.
Deberías echar un vistazo al ejemplo blinkwithoutdelay del ide. Básicamente trabaja con la función millis() que devuelve un entero largo con los milisegundos transcurridos desde el encendido del arduino.
Entonces deberías hacer algo así como:
const unsigned long tiempo1=30*60000; // 30 minutos en milisegundos
const unsigned long tiempo2=tiempo1+(2*60000); // tiempo1 + dos minutos en milisegundos
const int pulsador=2; // pin entrada pulsador
unsigned long ultima_pulsacion;
void setup() {
ultima_pulsacion=millis();
}
void loop() {
if (digitalRead(pulsador)==HIGH) ultima_pulsacion=millis(); // si se pulsa botón, ultima pulsación será millis actual
unsigned long tiempo_transcurrido=millis()-ultima_pulsacion;
if (tiempo_transcurrido>tiempo1) {
Serial.println("Fase 2");
} else if (tiempo_transcurrido>tiempo1) {
Serial.println("Fase 1");
}
}
Gracias compi, al menos ya tengo algo por donde empezar. Ha llovido mucho desde mi antiguo "Basic"
Es la primera vez que compro una placa Arduino1 y por ahora todo me fascina.
En cuanto vea un curso de programación por Madrid me apunto, aun así, procurare pillarme algún libro. En la red hay mucha información, pero toda desordenada y hablando casi siempre de lo mismo.
Montare unos leds y unos botones para hacerlo funcionar y probaré.
Muchas gracias, aunque agradeceré mas información sobre lo que quiero hacer. ( esquemas, programas, etc).
Un saludo a todos.