// LED5_random
// requires LED5 Module

// Output Pins
#define PIN_LED0           8    // LED0, connected to digital pin  8
#define PIN_LED1           9    // LED1, connected to digital pin  9
#define PIN_LED2          10    // LED2, connected to digital pin 10
#define PIN_LED3          11    // LED3, connected to digital pin 11
#define PIN_LED4          12    // LED4, connected to digital pin 12

#define WAIT            1000    // 1000ms (1s) delay

void led5(byte v)
{
  digitalWrite(PIN_LED0,  v       & 0x01); // write current values to LED pins
  digitalWrite(PIN_LED1, (v >> 1) & 0x01);
  digitalWrite(PIN_LED2, (v >> 2) & 0x01);
  digitalWrite(PIN_LED3, (v >> 3) & 0x01);
  digitalWrite(PIN_LED4, (v >> 4) & 0x01);
}

void setup()
{
  pinMode(PIN_LED0, OUTPUT);    // sets the RGB pins as output
  pinMode(PIN_LED1, OUTPUT);
  pinMode(PIN_LED2, OUTPUT);
  pinMode(PIN_LED3, OUTPUT);
  pinMode(PIN_LED4, OUTPUT);
  randomSeed(analogRead(0));
}

// Main program
void loop()
{
  led5(random(32));
  delay(WAIT);
}
