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