Instructables
Picture of Using an RGB LED to Detect Colours
DSC03098.JPG
I am going to show you how you can use an RGB LED and a Cds photocell as a colour sensor for a micro-controller. I will illustrate the method to retrieve a colour using Arduino, and I will show you a how you can verify the colour being scanned with a small Processing sketch.

We will be making this colour sensor on a breadboard, but it is easily transferred onto a prototyping board, and for those who fab their own boards, this would be an awesome kit that is super cheap to throw together. I am sure it would only take about two minutes to write a gerber file for this circuit and make a nice little finished sensor.
 
Remove these adsRemove these ads by Signing Up

Step 1: Gather Some Parts

For this sensor you will need
  • a breadboard (not required, but it is how I will walk you through it.)
  • an RGB LED (alternatively you could use 3 LEDs)
  • A 220 ohm resistor
  • A CdS photocell (these can be salvaged out of all kinds of things like nightlights or garden lamps)
  • An Arduino, or a clone. I am using a RBB in this example
  •  

Tools you will need
  • A computer
  • a cable to upload to your Arduino

Step 2: A Little Theory

Picture of A Little Theory
Some of you might be wondering how a CdS photocell can detect colours. Well it is surprisingly simple and provides pretty accurate results.

We see colour as a frequency of light reflected from an object. So different colours reflect different wavelengths which our eyes then interpret as colours. (Maybe brain...I am no scientist)

A common CdS photocell has a very similar response to colour as the human eye.

Because colours absorb certain wavelengths and reflect certain wavelengths, we can use different wavelengths(colours) of light and take readings(from a sensor that has nearly human responses) and thereby make a pretty good guess at what colour the sensor is being exposed to.

1-40 of 52Next »
fzolkifli7 months ago

can u send me the more specific schematic? ive tried the schematic given but it wont work. email: farzul_92@yahoo.com

undertakerbro10 months ago
If I put red in front the R value is highest, same for G and B. How do I detect black? Or white?
so that means you will use the RGB LED to detect colors. Isn't it?
Also your idea is an awesome one. But it will be better if it can sense colors with a white led by using the technique of the RGB combination. I am going to make one with three LDRs and a small RGB LED to show which color it is.
sarihan1 year ago
hi there.. im an undergrad doing a project with sensors.. and I find this very useful.. but I just wanna check is this sensor able to detect different shades of colour.. for example, blue.. can it detect different shades of blue like coral blue/navy blue/royal blue.. and for red..
Hey it is a very helpful tutorial. I too wanna make one but the color output to be in an audio form. The one like my speaking colour sensor. What should be special requirements for that?
UNGUREANU1 year ago
hello..could you pls send me a schematic of this project..because i want to put a LCD to show the color that is being detected, so that i can know where should i put it
hexdim262 years ago
thank you for the idea!!!
shooper32 years ago
My son is color blind. Often times he'll ask us what color something is. Could this help with that. Is it able to detect colors that are not real brigh, such as in clothing?
_SarahC_2 years ago
This is excellent!

Have you seen any problems with the red color - due to the spike in sensitivity that the LDR has?
fjordcarver (author)  _SarahC_2 years ago
Not so much, balancing against the white and black is important. Basically you are subtracting the reflection recieved from the black (theoretically 'no reflection') before deciding what colour you are seeing. each colour is flashed seperate and has its own balancing value. This does a fairly decent job at correction.
If you are having difficulty with a certain range, you can 'trick' it to perform better by changing your black balance. Might have been a good idea to add a pot for fine tuning without rescanning. Thanks for the compliment. Not much to it, throw one together and play. Cheers.
This is pretty neat! Thanks for sharing and good luck in the contest. :)
haidamous2 years ago
Hello,

I have a project and I need to detect White Red Blue and green colors.
The PIC microcontroller code is done, i just need the schematic to build my project
I must also use 4 sirenges (one for each color) for the color mixing part
I appreciate your prompt help, i need it for my project.
Plzzz

Thank you :D
fjordcarver (author)  haidamous2 years ago
Sounds like an interesting project, but it is well beyond the scope of this instructable.
haidamous2 years ago
Hello,

I have a project and I need to detect White Red Blue and green colors.
I must also use 4 sirenges (one for each color)
I appreciate your prompt help.

Thank you :D
fjordcarver (author)  haidamous2 years ago
This sensor will help you with detecting the colours.
mccoywm2 years ago
This is a great project. I documented my results doing the same here http://uscee.wordpress.com/
fjordcarver (author)  mccoywm2 years ago
Great Job!! Glad to see that everything works well. Nice documentation too.
Did you try out the processing sketch? It is a quicker way to see the colour.
I noticed that you will be working on getting an LED to light the same colour next, check out my Magical chameleon lamp project if you need any pointers.
Cheers!
Sky-Monkey2 years ago
Nicely written -

I will put it together and try it, but until then - curious if know how surface finish/texture of the object being scanned effects the reading. Also, as a derivative of that question, will it sense equally well through a clear film, glass, etc?

Thanks
fjordcarver (author)  Sky-Monkey2 years ago
It should work fine through a film so long as no frequecies are being blocked. Reflectivity will play with the readings a bit.
Cheers.
I think it should be noted that the colors output are qualitative only. The RGB values output by this device are from it's own non-standard color space that is not the same as sRGB (i.e. the RGB displayed by a monitor). Your code also assumes that LEDs and photoresistors have linear responses which they do not. Calibration should only need to be done once, if the calibration values are stored in the EEPROM. However, it might be interesting to see what strange colors you get when you calibrate using a non-white target.
fjordcarver (author)  yardleydobon2 years ago
I don't claim that the values output by the sensor are the the same output as a monitor, only that it is easy to ouput the colour that the sensor 'sees' to the monitor, given that the values are in the same range. Have you tried it out? Or are you finding flaws in theory? I find that it gives quite accurate results. I.e the colours being displayed on the monitor very closely resemble the object being scanned.
You can certainly mess with the readings by providing a yellow sample in place of white. But that would be true of just about anything. Just try wearing a pair of yellow ski goggles around and see how effective your own colour perception becomes.
I'm not saying that this device doesn't work. I'm sure it works well enough. I'm saying that it should be noted that the results are qualitative only. It can't be used to take accurate, quantitative measurements because of nonlinearites and its unknown color space. Your intro image makes it look like you are using your device to measure sRGB, which it can't do as is. It's not my intention to disparage your work, but simply to clarify your device's limitations.

Also, I suggested calibrating on a non-white target not as a criticism but as a fun way to play with your device.
fjordcarver (author)  yardleydobon2 years ago
Try it out. then we can discuss the limitations. It works fantastically, not moderately well. The colour put in front of it IS accurately displayed to the screen. 'nuff said.
I notice that we are in some of same competitions. ;) Cheers.
endolith2 years ago
LEDs can be used as sensors, too.
fjordcarver (author)  endolith2 years ago
Yes they can, but I don't think they would have the sensitivity for this. Maybe if you took a reading from a Red housing one, a green housing one, and a blue housing one(do they make those) and really padded the numbers.......hmmm, I might look into it in the future. But my gut says that it probably would not have the sensitivity of this setup.
I want to incorporate this into a robot run greenhouse so it can tell me when the tomatoes and peppers are ripe.
fjordcarver (author)  TheDodgyLodger2 years ago
Cool idea, I want to see that.
wgrube2 years ago
Very nice instructable!
fjordcarver (author)  wgrube2 years ago
Thanks
mathman472 years ago
Perfect Instructable. I've have everything except for the CDS cell. Making a run to the Shack tomorrow. Very well written - covers the subject very thoroughly. Thanks. Hope you win something with this. I'm now a follower and I voted.
Dennis, KC9PYD
fjordcarver (author)  mathman472 years ago
Cool, thank you. Let us know how it turned out.
A stop light interpreter for blind drivers! I know a few who need this badly. Neat device, great work.
fjordcarver (author)  stringstretcher2 years ago
Thanks.
dokcal2 years ago
Brilliant idea, and probably the best-written instructable I've ever seen!

I've only ever programmed in BASIC, but your breakdown of the Arduino code was really easy to follow. I wish more people would take the time to explain their code, rather than just presenting it as a "black box."

fjordcarver (author)  dokcal2 years ago
Cheers! One of the best comments(compliments) I have received!
It is really great to hear such positive feedback, moreover, I am really glad that people 'get it'.
Thanks again. (I am beaming)
rick62132 years ago
Really nice instructable, the drawings are great and easy to read and understand!
fjordcarver (author)  rick62132 years ago
Thanks!!
Hey, congrats on the LED contest!!!
fjordcarver (author)  matt.e.jenkins2 years ago
Thanks!! Cheers! I am so excited. This will be the best Christmas ever! A robot shirt for me to hack! I can't wait!!!! I have had a lilypad sitting on a shelf for awhile, keep tossing ideas around for it, but never found the perfect garment.
I think I will no longer have an excuse.
thecapt2 years ago
Great timing! I am in the process of writing a routine for a marble sorter and was just going to use a white LED. I was thinking of doing this with RGB, but since I was only concerned with 3 marble colors I assumed that the value from the white LED would vary enough based on color. If it does not, I'll have to try with this RGB style. Even if I don't, this code is a good reference tool. Thank you very much.
1-40 of 52Next »