LED_RGB & LED_3 Module

Arduino Code

The main advantage of using the pins 9, 10, and 11 is that the module can be used in a digital or analog mode.

All the code be downloaded from here.

RGB_digital_random

// RGB_digital_random
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

#define WAIT            1000    // 1000ms (1s) delay

void color(byte v)
{
  digitalWrite(PIN_RED,    v       & 0x01); // write current values to LED pins
  digitalWrite(PIN_GREEN, (v >> 1) & 0x01);
  digitalWrite(PIN_BLUE,  (v >> 2) & 0x01); 
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
  randomSeed(analogRead(0));
}

// Main program
void loop()
{
  color(random(8));
  delay(WAIT);
}

RGB_digital_count

// RGB_digital_count
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

#define WAIT            1000    // 1000ms (1s) delay

void color(byte v)
{
  digitalWrite(PIN_RED,    v       & 0x01); // write current values to LED pins
  digitalWrite(PIN_GREEN, (v >> 1) & 0x01);
  digitalWrite(PIN_BLUE,  (v >> 2) & 0x01);
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
}

// Main program
void loop()
{
  // cycle through all colors
  for (byte i = 0; i < 8; i++) {
    color(i);
    delay(WAIT);
  }
}

RGB_digital_rainbow

// RGB_digital_rainbow
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

//Colors
#define BLACK           B000
#define RED             B001
#define GREEN           B010
#define YELLOW          B011
#define BLUE            B100
#define MAGENTA         B101
#define CYAN            B110
#define WHITE           B111

#define WAIT            1000    // 1000ms (1s) delay

byte pattern[] = { 
  RED, YELLOW, GREEN, CYAN, BLUE, MAGENTA
};

void color(byte v)
{
  digitalWrite(PIN_RED,    v       & 0x01); // write current values to LED pins
  digitalWrite(PIN_GREEN, (v >> 1) & 0x01);
  digitalWrite(PIN_BLUE,  (v >> 2) & 0x01); 
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
}

// Main program
void loop()
{
  for (byte i = 0; i < 6; i++) {
    color(pattern[i]);
    delay(WAIT);
  }
}

RGB_analog_random

// RGB_analog_random
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

#define WAIT             500    // 500ms (0.5s) delay

void color(byte r, byte g, byte b)
{
  analogWrite(PIN_RED,   r);    // write current values to LED pins
  analogWrite(PIN_GREEN, g); 
  analogWrite(PIN_BLUE,  b);  
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
}

// Main program
void loop()
{
  color(random(256), random(256), random(256));
  delay(WAIT);
}

RGB_analog_rainbow

// RGB_analog_rainbow
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

#define WAIT               4    // 4ms delay

void color(int r, int g, int b)
{
  analogWrite(PIN_RED,   r);    // write current values to LED pins
  analogWrite(PIN_GREEN, g); 
  analogWrite(PIN_BLUE,  b);  
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
}

// Main program
void loop()
{
  for (int i = 0; i < 256; i++){
    color(255, i, 0);
    delay(WAIT);
  }

  for (int i = 0; i < 256; i++){
    color(255 - i, 255, 0);
    delay(WAIT);
  }

  for (int i = 0; i < 256; i++){
    color(0, 255, i);
    delay(WAIT);
  }

  for (int i = 0; i < 256; i++){
    color(0, 255 - i, 255);
    delay(WAIT);
  }

  for (int i = 0; i < 256; i++){
    color(i, 0, 255);
    delay(WAIT);
  }

  for (int i = 0; i < 256; i++){
    color(255, 0, 255 - i);
    delay(WAIT);
  }
}

RGB_analog_hue

// RGB_analog_hue
// requires RGB Module

// Output Pins
#define PIN_RED            9    // red   LED, connected to digital pin  9
#define PIN_GREEN         10    // green LED, connected to digital pin 10
#define PIN_BLUE          11    // blue  LED, connected to digital pin 11

#define WAIT               3    // 3ms delay

void color(int r, int g, int b)
{
  analogWrite(PIN_RED,   r);    // write current values to LED pins
  analogWrite(PIN_GREEN, g); 
  analogWrite(PIN_BLUE,  b);  
}

void hsv(float H, float S, float V)
{
  // http://www.easyrgb.com/index.php?X=MATH&H=21#text21

  int var_i;
  float R, G, B, var_1, var_2, var_3, var_h;

  if (S == 0) {
    R = V;
    G = V;
    B = V;
  }
  else {
    var_h = H * 6;
    if (var_h == 6) var_h = 0;  // H must be < 1
    var_i = int(var_h) ;          // or ... var_i = floor( var_h )
    var_1 = V * (1 - S );
    var_2 = V * (1 - S * (var_h - var_i));
    var_3 = V * (1 - S * (1 - (var_h - var_i)));

    if (var_i == 0) {
      R = V;
      G = var_3;
      B = var_1;
    }
    else if (var_i == 1) {
      R = var_2;
      G = V;
      B = var_1;
    }
    else if (var_i == 2) {
      R = var_1;
      G = V;
      B = var_3;
    }
    else if (var_i == 3) {
      R = var_1;
      G = var_2;
      B = V;
    }
    else if (var_i == 4) {
      R = var_3;
      G = var_1;
      B = V;
    }
    else {
      R = V;
      G = var_1;
      B = var_2;
    }
  }

  color(255 * R, 255 * G, 255 * B);  // RGB results from 0 to 255
}

void setup()
{
  pinMode(PIN_RED,   OUTPUT);   // sets the RGB pins as output
  pinMode(PIN_GREEN, OUTPUT);   
  pinMode(PIN_BLUE,  OUTPUT); 
}

// Main program
void loop()
{
  for (float f = 0; f < 1; f += 0.0005) {
    hsv(f, 1, 1);
    delay(WAIT);
  }
}