void loop() { unsigned long now = millis(); // time since boot in milliseconds if(Serial.available()) { level = Serial.read() % 4; last_message = now; } else if(now - last_message > 60*1000 && level < 3) { // if no message received after 60*1000 ms, increase alert level last_message = now; // well, sorta level ++; } if(level != oldlevel) { set_led_color(level); oldlevel = level; } delay(50); }
Hint: sizeof(int) == 2 on avr