const byte LEDred = 9;
const byte LEDyel = 10;
const byte LEDgrn = 11;
boolean muxit = false;
volatile byte LEDState = HIGH;
void setup() {
cli();
//set timer1 interrupt at 1 Hz
TCCR1A = 0;// set entire TCCR1A register to 0
TCCR1B = 0;// same for TCCR1B
TCNT1 = 0;//initialize counter value to 0
// set compare match register for 1hz increments
OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536)
// turn on CTC mode
TCCR1B |= (1 << WGM12);
// Set CS10 and CS12 bits for 1024 prescaler
TCCR1B |= (1 << CS12) | (1 << CS10);
// enable timer compare interrupt
TIMSK1 |= (1 << OCIE1A);
sei();
pinMode(LEDred, OUTPUT);
pinMode(LEDyel, OUTPUT);
pinMode(LEDgrn, OUTPUT);
}
void loop() {
if (muxit == true) {
muxit = false;
digitalWrite(LEDred, HIGH);
delay(333);
digitalWrite(LEDred, LOW);
digitalWrite(LEDyel, HIGH);
delay(333);
digitalWrite(LEDyel, LOW);
digitalWrite(LEDgrn, HIGH);
delay(333);
digitalWrite(LEDgrn, LOW);
}
}
ISR(TIMER1_COMPA_vect) {//timer1 interrupt 1Hz toggles pin 13 (LED) //generates pulse wave of frequency 1Hz/2 = 0.5kHz (takes two cycles for full wave- toggle high then toggle low)
muxit = true;
// Serial.println(muxit);
}