Picture of RGB's with Arduino and Processing
Here is an easy(enough) project to introduce you to the Arduino microcontroller, as well as Processing. This is my first Arduino and Processing project and I didn't have too much bother getting it working.

This is my entry to the Sparkfun Microcontroller contest so if you think it's good, please vote!!(voting starts the 14th feb). Thanks!!

 Once everything is set-up, you will be able to control the color of the RBG's from your computer, using the Processing program, and also see the output color in the program( it ain't perfect but it's handy if you want this for remote lighting)

Below is a screenshot of the Processing executing. By clicking (and/or holding) on the up and down arrows, you can change the color levels of each of the colors in the RGB.

Remove these adsRemove these ads by Signing Up

Step 1: Equipment

A computer with Arduino and Processing. Try to get the most up-to-date release e and

An Arduino(make sure it has PWM outputs, which is all/most)

RGB Led's

Resistors(100x2 ,180x1)

Jumper wires


USB cable(for the Arduino)

If you are using more than one RGB, you may need to calculate the different values for the resistors. Follow this tutorial or use this site to calculate the required resistances.


When i put the skech in Arduino the rgb led lights on, but when I start the Processing Sketch and the ColorMixer are displayed the RGB led lights off and nothing works.

I can change the values on the ColorMixer displayed on screen, but the LED connected to the Arduino stay off.

When I press the stop button on Processing the led lights on...

Akin Yildiz5 months ago

hello, can you tell me if this item is a common anode or cathode please? thank you !!

nazdreg2007 (author)  Akin Yildiz5 months ago
I believe they are common Anode based on what similar models are. I can't find the exact datasheet for what you linked but very similar ones are common anode so that'd be my guess.

Hope that good enough for you! That a bloody good offer you found!

ok so what I don't understand is that where does the GND go then??? the R,G,B of the led goes to "Dout" of the arduino, and what about the anode leg? this is where I am confused.. thank you for your reply, i'm a beginner in all of this..

nazdreg2007 (author)  Akin Yildiz5 months ago

here you go. The transistor you use will depend on the number of leds you are powering. You should also have a resistor in series with each led to limit the current.

rgb diagram.png

wow man, thank you very much for taking the time to do that..!! very good/clear explanation. what if I am using just 3 rgbs in parallel (60mA total) do you think I'll still need a transistor, won't just resistors be enough?

nazdreg2007 (author)  Akin Yildiz5 months ago

So is connected to your 5 volt supply line. The three colors are connected to an arduino pin. The arduino can sink enough current per pin if you are just using one rgb led but if you are planning on using a number of LEDs, you mush connect the leds to a transistor which is controlled by the arduino. I'll put up a diagram later to describe what i mean.

marios85431 year ago
Hey. Thanks for replying. It opens a little window but it's blank. In the proccesing window it says that that font of yours could not be loaded. Thanks and HELP
marios85431 year ago
Hey again dude. I tried the suggestions but got other probs now. Do you have any idea how to run the proccesing
nazdreg2007 (author)  marios85431 year ago
what type of errors are you getting?
marios85431 year ago
I can't open the colour mixer in proccesing. Also where are the instructions on how to connect the lcd??? PLEASE HELP. Can you upload an app with proccesing? Iv tried it and succesfully exported the app but I open it and shows a grey window. 
nazdreg2007 (author)  marios85431 year ago
To connect the LCD, i just followed the instruction on this page and inserted the correct pins into the program. As for teh file not opening, this project was completed three years ago so perhaps the newer processing IDE isn't quite as backward compatible as we'd like. To upload an app, i'd need to know what serial port you are using because you'd be unable to edit it in the app
Hi nazdreg2007
Thanks for replying and offering to upload an app. I'm using COM4
nazdreg2007 (author)  marios85431 year ago
I tried to export the application but it failed to run after export. My advice is to check if setting the com port to 0 works...that's what worked for me...If you have 3 com ports open up when you type Serial.list(), and the arduino's com is the second one, then you'd type 1 in for your serial port, and if it was third on the list, you'd type 2....i think that'll work
nazdreg2007 (author)  nazdreg20071 year ago
to get rid of your array error, port = new Serial(this,Serial.list()[0],9600); set the port to 0...i just tried it there and it worked.
marios85431 year ago
Oh and i forgot to say that I sometimes get an ArrayIndexOutOfBoundsException:1
FireCGun1 year ago
can some one plz tell me how i can download the code?
my computer keeps saving it as .tmp and i cant change it.
nazdreg2007 (author)  FireCGun1 year ago
See if you can open the .tmp in notepad. if that doesn't work, when you download, "save as" and in the dropdown select .txt.....that should hopefully work
Darkkeep1 year ago
Love the concept...get's your hands dirty with two great IDE platforms. I'm currently working on a project that will call for certain light spectrums for growth phases. Excellent DIY. I may post some of the code when I get a working prototype. What I'm developing is more than a weekend project ;-) Despite on how you're sending the info...still impressive.
adellelin2 years ago
Hi, really excited by this project, however it's not running for me on processing. I'm using 1.5.1 does the code need to change for that? This is the error code I'm getting, just wondering if you can help. Thanks!!

Display 0 does not exist, using the default display instead.
Mar 28 18:02:48 yingxis-MacBook-Pro.local java[16626] : CGContextGetCTM: invalid context 0x0
Mar 28 18:02:48 yingxis-MacBook-Pro.local java[16626] : CGContextSetBaseCTM: invalid context 0x0
Mar 28 18:02:48 yingxis-MacBook-Pro.local java[16626] : CGContextGetCTM: invalid context 0x0
Mar 28 18:02:48 yingxis-MacBook-Pro.local java[16626] : CGContextSetBaseCTM: invalid context 0x0
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.2pre2
[0] "/dev/tty.usbserial-A6005kTq"
[1] "/dev/cu.usbserial-A6005kTq"
[2] "/dev/tty.Bluetooth-PDA-Sync"
[3] "/dev/cu.Bluetooth-PDA-Sync"
[4] "/dev/tty.Bluetooth-Modem"
[5] "/dev/cu.Bluetooth-Modem"
at processing.core.PFont.(
at processing.core.PApplet.loadFont(
at sketch_130328b.draw(
at processing.core.PApplet.handleDraw(
Invalid memory access of location 0xb20c4b70 eip=0x547f290c
nazdreg2007 (author)  adellelin2 years ago
Hey, sorry for the delay. It looks like to me that there may be a problem with your install of processing. maybe try a clean reinstall and see if that helps.
I used an older version of processing but i don't think the code would need much or any editing to run on 1.5.1......As i said, it looks like an install problem. Lemme know if that works
He11uvaCook2 years ago
This is a great Instructable! How hard would this be to connect the Arduino to an Android device via bluetooth or wifi to control the LED color from my phone?
nazdreg2007 (author)  He11uvaCook2 years ago
I don't think it would be too hard....the bluetooth would probably be the easiest way because as far as i know, no extra code is needed on the arduino side....for wifi there would be but nothing drastic. The Processing code itself can be used to create an android app so with the necessary mods for the bluetooth, you should have the system running quickly.
Nman1203 years ago
in your processing code download there is an error that I found:

in the text for over the arrow buttons:
text(s, 30, 100, 40, 20);

the end 20 needs to be 30 or else only the blue shows up. great program though
nazdreg2007 (author)  Nman1203 years ago
I not noticed any probs with it......but i'll have a look over the next few days and get back to you :-)
32teeth3 years ago
as for your pin mapping to the PWM pins.
i would recommend using 9,10,11 since they are next to each other.
just a thought

good stuff
nazdreg2007 (author)  32teeth3 years ago
Your right.....I never thought of that. I started at 3 and went for the next PWM pins.
RPKH4 years ago
Is there a specific reason why you have chosen to send the values for r,g,b over the serial instead of using the arduino library in processing?
nazdreg2007 (author)  RPKH4 years ago
Yeah, the processing library could have made things much easier....I'll update with some new code to use it..
nazdreg2007 (author)  RPKH4 years ago
There is no specific reason for sending the data this way. It never occurred with me to use that library. Might look into it.
I am getting an error in processing
saying it cannot load this font AngsanaNew-25.vlw

then this line is highlighted
font = loadFont("AngsanaNew-25.vlw"); // import the font(tools->create)

nazdreg2007 (author)  beverageexpert4 years ago
ok, first of all, click on tools then create font. this will open up another window. in this window, select the font and size.tke note of the filename(ctrl +c) and click ok. now paste the file name into theloadFont("
the answer is in your comment, go to tools, then create font, then choose AngsanaNew and make it size 25 then click "ok" and try to run the code again
tigerbomb84 years ago
i would vote but i can not see this in the contest page
nazdreg2007 (author)  tigerbomb84 years ago
Thanks!! It's still waiting for approval for entry so maybe if you try later on today or tomorrow, it should be there. Thanks again!!
cool and why did you put thins in the micro controllers section there is an arduino section
nazdreg2007 (author)  tigerbomb84 years ago
To be honest, i forgot cause i entered this in the micro controller contest, so thats what i was thinking, not Adruino.
you can move it