const int switchPin = 8;
const int ledPin1 = 7;
const int ledPin2 = 2;
enum { Off = HIGH, On = LOW };
const unsigned long T1 = 1000;
const unsigned long T2 = 5000 - T1;
unsigned long period;
unsigned long msec0;
int state;
// -----------------------------------------------------------------------------
void loop ()
{
unsigned long msec = millis ();
byte sw = digitalRead (switchPin);
if (LOW == sw) {
digitalWrite (ledPin1, Off);
digitalWrite (ledPin2, Off);
state = 0;
msec0 = msec;
period = 0;
return;
}
if (msec - msec0 >= period) {
msec0 = msec;
Serial.println (msec);
switch (state) {
case 0:
digitalWrite (ledPin2, Off);
digitalWrite (ledPin1, On); // handles start
period = T2;
break;
case 1:
digitalWrite (ledPin2, On); // both on
period = T1;
break;
case 2:
digitalWrite (ledPin1, Off);
period = T2;
break;
case 3:
digitalWrite (ledPin1, On); // both on
period = T1;
break;
}
if (4 <= ++state)
state = 0;
}
}
void setup () {
Serial.begin (9600);
pinMode (switchPin, INPUT_PULLUP);
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
}