Good day,
I am posting here because I a stumped.
I have created this sketch that generates a random, 0 or 1. If 1, then light the red LED. If 0, then turn off the red LED. Do that for green and blue LED as well.
Then delay for a random amount of time, between .25 and 1 second.
But, here is where I get confused. Towards the end of the sketch, it checks if all random numbers are 0, if true then set the delay variable to 0, for no delay.
I want this check done, so that the there is always at least one color of the LED lit.
But once is a while, the LED is completely dark.
Any ideas on what I am missing?
Thanks in advance for your help.
Dave
Here is my code
/*
- Random RGB
*/
int L1 = 9; // Red LED connected to pin 9
int L2 = 10; // Blue LED connected to pin 10
int L3 = 11; // Green LED connected to pin 11
int R1 = 0; // random number 1
int R2 = 0; // random number 2
int R3 = 0; // random number 3
int D = 0; // delay value
void setup() // run once, when the program starts
{
pinMode(L1, OUTPUT); // sets the digital pin as output
pinMode(L2, OUTPUT); // sets the digital pin as output
pinMode(L3, OUTPUT); // sets the digital pin as output
randomSeed (analogRead (0)); // random seed
}
void loop()
{
//generate random delay time -between .25 and 1 second
D = random (250,1001);
// === Red LED ===
R1 = random (2); //generate random value of 0 or 1
if (R1 == 1) // if 1, LED on, if 0 LED off
{
digitalWrite(L1, HIGH);
}
if (R1 == 0)
{
digitalWrite(L1, LOW);
}
// === Blue LED ===
R2 = random (2); // generate random value of 0 or 1
if (R2 == 1) // if 1 LED on, if 0 LED off
{
digitalWrite(L2, HIGH); // LED on
}
if (R1 == 0)
{
digitalWrite(L2, LOW); // LED off
}
// === Green LED ===
R3 = random (2); // generate random value of 0 or 1
if (R3 == 1) // if 1 LED on, if 0 LED off
{
digitalWrite(L3, HIGH); // LED on
}
if (R1 == 0)
{
digitalWrite(L3, LOW); // LED off
}
// Check if all random numbers are 0
// If true, set delay to 0
if (R1 == 0 && R2 == 0 && R3 == 0)
{
D = 0;
}
// === Delay ===
delay(D);
}