Unexpected behavior ? what am I missing?


good day,
i posting here because stumped.
i have created sketch generates random, 0 or 1.  if 1, light red led.  if 0, turn off red led.  do green , blue led well.
then delay random amount of time, between .25 , 1 second.

but, here confused.  towards end of sketch, checks if random numbers 0, if true set delay variable 0, no delay.

i want check done, there @ least 1 color of led lit.

but once while, led dark.

any ideas on missing?

thanks in advance help.
dave

here code
===========

/*
* random rgb
*
*
*/

int l1 = 9;                // red led connected pin 9
int l2 = 10;               // blue led connected pin 10
int l3 = 11;               // green led connected 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 program starts
{
pinmode(l1, output);      // sets digital pin output
pinmode(l2, output);      // sets digital pin output
pinmode(l3, output);      // sets digital pin output
randomseed (analogread (0));    // random seed

}

void loop()                    

{
  //generate random delay time -between .25 , 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 random numbers 0
//  if true, set delay 0

if (r1 == 0 && r2 == 0 && r3 == 0)
{

d = 0;

}

// === delay ===

delay(d);

}

do still experience problem if change end of loop() like:

code: [select]

//  check if random numbers 0
//  if true, set delay 0

if (!(r1 == 0 && r2 == 0 && r3 == 0))
  delay(d);


i don't know how arduino delay function works, in libraries (e.g. <util/delay.h>) delay(0) equivalent delaying maximum amount of time function can achieve.

- ben


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Unexpected behavior ? what am I missing?


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums