I reviewed your suggestion (gammom blink) and rewrote code using millis function. Code below. However I am missing something. LED red, green are two LEDs, LED2 is a bi-color red/green LED. Using the code, LED2 goes red/green as expected. The LEDs red comes on, goes off and green comes on, then both come on and then are off for a second and the cycle repeats (red,green both,off) What am missing?
I am using this as an example for something in the future.
Thanks for your help.
//sketch_blink_2_sets_LEDs
//Blink 2 set of LEDs at different rates
//gammon.com.au/blink
const int redledPin = 12; //red led pin
const int greenledPin = 13; //green led pin
const int redled2Pin = 11; //red led 2 pin
const int greenled2Pin = 10; //green led 2 pin
//const int redbutton = 2; // 5v red input
//const int greenbutton = 3; // 5v green input
//const int redbutton2 = 4; // 5v red input 2
//const int greenbutton2 = 5; // 5v green input 2
//time peroid of blink
const unsigned long redledPininterval = 1000;
const unsigned long greenledPininterval = 2000;
const unsigned long redled2Pininterval = 5000;
const unsigned long greenled2Pininterval = 000;
//variablle holding the timer value
unsigned long redledPintimer;
unsigned long greenledPintimer;
unsigned long redled2Pintimer;
unsigned long greenled2Pintimer;
void setup() {
pinMode (redledPin, OUTPUT);
pinMode (greenledPin, OUTPUT);
pinMode (redled2Pin, OUTPUT);
pinMode (greenled2Pin, OUTPUT);
redledPintimer = millis ();
greenledPintimer = millis ();
redled2Pintimer = millis ();
greenled2Pintimer = millis ();
}
void toggleredledPin ()
{
if (digitalRead (redledPin) == LOW)
digitalWrite (redledPin, HIGH);
else
digitalWrite (redledPin, LOW);
redledPintimer = millis ();
}
void togglegreenledPin () {
if (digitalRead (greenledPin) == LOW)
digitalWrite (greenledPin, HIGH);
else
digitalWrite (greenledPin, LOW);
greenledPintimer = millis ();
}
void toggleredled2Pin ()
{
if (digitalRead (redled2Pin) == LOW)
digitalWrite (redled2Pin, HIGH);
else
digitalWrite (redled2Pin, LOW);
redled2Pintimer = millis ();
}
void togglegreenled2Pin ()
{
if (digitalRead (greenled2Pin) == LOW)
digitalWrite (greenled2Pin, HIGH);
else
digitalWrite (greenled2Pin, LOW);
greenled2Pintimer = millis ();
}
void toggledredled2Pin ()
{
if (digitalRead (redled2Pin) == LOW)
digitalWrite (redled2Pin, HIGH);
else
digitalWrite (redled2Pin, LOW);
redled2Pintimer = millis ();
}
void loop ()
{
if ( (millis() - greenledPintimer) >= greenledPininterval) //handling the blink of green led
togglegreenledPin ();
if ( (millis () - redledPintimer) >= redledPininterval)
toggleredledPin ();
if ( (millis() - greenled2Pintimer) >= greenled2Pininterval) //handling the blink of green led 2
togglegreenled2Pin ();
if ( (millis () - redled2Pintimer) >= redled2Pininterval) // handling the blink of red led 2
toggleredled2Pin ();
}