int timer = 0;
bool state = 0;
int timer2=0;
int intervalo = 1000;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); // Inicializa el pin del LED como salida
pinMode(12, OUTPUT );
pinMode(11, OUTPUT );
TCCR0A = (1 << WGM01); // Establece el modo CTC del timer0
OCR0A = 0xF9; // Establece el valor para 1ms
TIMSK0 |= (1 << OCIE0A); // Establece la solicitud de interrupción cuando el valor del
//temporizador coincide con el valor en OCR0A
sei(); // Habilita las interrupciones
TCCR0B |= (1 << CS01); // Establece el prescaler a 1/64 de reloj
TCCR0B |= (1 << CS00);
}
void loop() {
// De esta manera puedes contar 1 segundo porque la solicitud de interrupción es cada 1ms
if (timer >= intervalo) {
//state = !state;
timer = 0;
timer2++;
}
for (int positionCounter = 0; positionCounter <60; positionCounter ++){
if ((timer2 >= 1) && (timer2<=2)){
digitalWrite(13, !state);
}
digitalWrite(13, state);
if ((timer2 >= 3) && (timer2<=4)) {
digitalWrite(12, !state);
}
digitalWrite(12, state);
if ((timer2 >= 5) && (timer2<=6)) {
digitalWrite(11, !state);
}
digitalWrite(11, state);
if ((timer2 >= 7) && (timer2<=8)) {
timer2=0;
}
}
}
ISR(TIMER0_COMPA_vect) { // Esta es la solicitud de interrupción
timer++;
}