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 // 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 // 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 // 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 // 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 // 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 // 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); } }