by luca
0 comment

ArduRGB it’s a simple project to show how to drive an RGB led with Arduino.

In the GitHub repository you can find the Arduino sketch and a sample program written in C# and in the forum you can ask for informations,requests…

[highlight color=”yellow”]Warning: the program described below is designed for a common cathod led, if you need to use a common anode one, the values sent to PWM output have to be substracted from 255[/highlight]

The Arduino program receives via serial communication a message of 3 bytes, each of them is the intensity of the color R (red), G (green) and B (blue). Those values are used to drive the 3 PWM ouputs (pin 9/10/11) connected to the led.

First, define the pins where you connected the led and the array for the receiving message:

// pins definition
const int red_pin = 9;
const int green_pin = 10;
const int blue_pin = 11;
// message variables
byte message[3];
int message_index;

In the setup() block, configure serial communication (9600 baud), pins (as output) and the default values (led off):

void setup() {
  // init serial communication
  // pins configured as output
  pinMode(red_pin, OUTPUT);
  pinMode(green_pin, OUTPUT);
  pinMode(blue_pin, OUTPUT);  
  // Start with black value (leds off)
  analogWrite(red_pin, 0);
  analogWrite(green_pin, 0);
  analogWrite(blue_pin, 0);
  // reset message position pointer
  message_index = 0;

Then, in loop() wait for a new byte coming to serial port, store it in the array and – if it’s the third byte received – send the 3 values to PWM outputs:

void loop() {
  // new byte from serial communication
  if (Serial.available() > 0) {
    // store received byte in message array
    // and increment pointer
    message[message_index] =;
    // if we received 3 bytes, reset pointer
    // and output the values
    if(message_index == 3) {
      message_index = 0;
      analogWrite(red_pin, message[0]);
      analogWrite(green_pin, message[1]);
      analogWrite(blue_pin, message[2]);

The program on your personal computer let you choose a color and send its RGB code through a serial port to Arduino:

As a prototype, I used a common cathod piranha RGB led:

connected to the 3 PWM outputs of Arduino via resistors (1Kohm is ok) to limit current in led:

Here is the prototype and a short video to show how it works:

[youtube id=”4fiB4xfmIrI” width=”600″ height=”350″]

Related Posts

Leave a Comment

11 − ten =