#include <TimerOne.h>
#define led_rojo 2
#define led_verde 4
int A = 1; // variable para la interrupción y loop
int t_enc = 0;
int t_apag = 0;
int segundos = 0; // variable para contar segundos
int minutos = 0; // variable para contar minutos
void setup() {
pinMode(led_rojo, OUTPUT);
pinMode(led_verde, OUTPUT);
digitalWrite(led_rojo, LOW); // Asegurar que los LEDs comiencen apagados
digitalWrite(led_verde, LOW); // Asegurar que los LEDs comiencen apagados
Timer1.initialize(1000); // inicializo el timer 1 con una cuenta de 1000 microsegundos.
Timer1.attachInterrupt(ISR_Blink); // Activa la interrupción y la asocia a ISR_Blink
}
void ISR_Blink() {
noInterrupts(); // Suspende las interrupciones
A = 1;
interrupts(); // Autoriza las interrupciones
}
void loop() {
if (A == 1) {
A = 0;
if (t_enc < 1000) {
t_enc++;
digitalWrite(led_rojo, HIGH); // Enciende el LED rojo
} else if (t_apag < 1000) {
t_apag++;
digitalWrite(led_rojo, LOW); // Apaga el LED rojo
} else {
t_enc = 0;
t_apag = 0;
segundos++;
}
if (segundos > 60){
minutos++;
digitalWrite(led_verde, HIGH); // Enciende el LED verde
} else if (segundos < 0) { // 60 segundos es igual a 1 min
digitalWrite(led_verde, LOW); // Apaga el LED verde
}
}
}