Reports.DIYColorSensor History

Hide minor edits - Show changes to output

Changed lines 237-240 from:
Stick the black box on top of the color sensor. Open the Processing app and set the white and black balance as described above. If it isn't already on, switch on the Sensing switch. Values should start coming into the Processing app. Put an object about an inch above the photo cell so the light from the LEDs hit it. See what values you get!\\\

The sensor works best with objects which are NOT shiny. Foam and cloth work the best.
to:
Stick the black box on top of the color sensor. Open the Processing app and set the white and black balance as described above. If it isn't already on, switch on the Sensing switch. Values should start coming into the Processing app. Put an object about an inch above the photo cell so the light from the LEDs hit it.\\\
Changed line 8 from:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.jpg""\\
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.jpg""\\\
Changed line 32 from:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.jpg""\\
to:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.jpg""\\\
Changed line 229 from:
http://a1.vox.com/6a00cd9720e4244cd500e398f237c10004-pi?format=.jpg""\\
to:
http://a1.vox.com/6a00cd9720e4244cd500e398f237c10004-pi?format=.jpg""\\\
Changed line 8 from:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.jpg""
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.jpg""\\
Changed line 32 from:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.jpg""
to:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.jpg""\\
Changed line 229 from:
http://a1.vox.com/6a00cd9720e4244cd500e398f237c10004-pi?format=.jpg""
to:
http://a1.vox.com/6a00cd9720e4244cd500e398f237c10004-pi?format=.jpg""\\
Changed line 8 from:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.png""
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.jpg""
Changed line 32 from:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.png""
to:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.jpg""
Added line 229:
http://a1.vox.com/6a00cd9720e4244cd500e398f237c10004-pi?format=.jpg""
Changed line 8 from:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.png"TEST IMAGE"
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.png""
Added line 32:
http://a4.vox.com/6a00cd9720e4244cd500f48cf0a00c0002-pi?format=.png""
Deleted lines 8-9:
ThisWiki:/uploads/parts.jpg
[[Attach:parts.jpg]]
Changed line 8 from:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi"TEST IMAGE"
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi?format=.png"TEST IMAGE"
Changed lines 8-9 from:
ThisWiki:http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi
to:
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi"TEST IMAGE"
Added lines 8-9:
ThisWiki:http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi
http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi
Added line 8:
ThisWiki:/uploads/parts.jpg
Changed line 8 from:
<img src="http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi">
to:
[[Attach:parts.jpg]]
Changed line 8 from:
to:
<img src="http://a2.vox.com/6a00cd9720e4244cd500f48cf0af2a0003-500pi">
Changed lines 81-82 from:
if(blackBalanceSet && whiteBalanceSet && digitalRead(sensingPin) == HIGH && digitalRead(whiteBalancePin == LOW) && digitalRead(blackBalancePin) == LOW) {
to:
if(blackBalanceSet && whiteBalanceSet && digitalRead(sensingPin) == HIGH
&& digitalRead(whiteBalancePin == LOW) && digitalRead(blackBalancePin) == LOW) {
Added lines 232-237:

!Color Sensing
Stick the black box on top of the color sensor. Open the Processing app and set the white and black balance as described above. If it isn't already on, switch on the Sensing switch. Values should start coming into the Processing app. Put an object about an inch above the photo cell so the light from the LEDs hit it. See what values you get!\\\

The sensor works best with objects which are NOT shiny. Foam and cloth work the best.
Changed lines 227-231 from:
Before we start sensing we're going to need to find out what the minimum and maximum values we get from the photo cell when each LED is on so that we can normalize all of them. I built some code into the Arduino program to do this, and this is why we need buttons for setting white and black balancing as mentioned before. In the code it takes whatever the minimum and maximum are from each and makes it so any values between them will go from 0 to 255, making it as easy as possible to visualize the data in Processing.
to:
Before we start sensing we're going to need to find out what the minimum and maximum values we get from the photo cell when each LED is on so that we can normalize all of them. I built some code into the Arduino program to do this, and this is why we need buttons for setting white and black balancing as mentioned before. In the code it takes whatever the minimum and maximum are from each and makes it so any values between them will go from 0 to 255, making it as easy as possible to visualize the data in Processing.\\\
To do this:\\\
1) Hold your white piece of paper or foam board about an inch above the photo cell and LED, being sure its completely covering both of them.\\\
2) Hit the White Balance button. The red, green, and blue LEDs should quickly blink one after another. When this happens the values have been recorded. These are the maximum values the photo cell can reach for each color, because nothing can reflect more red, green, and blue light than something pure white.\\\
3) Do the same thing with the Black Balance button and the piece of black foam. This gives us our lowest possible values.\\\
Changed lines 40-41 from:
!!Arduino
to:
!!Arduino Code
Changed lines 129-130 from:
!!Data Visualization in Processing
to:
!!Data Visualization in Processing Code
Changed lines 42-53 from:
int greenPin = 2;
int bluePin = 3;
int redPin = 4;
int whiteBalancePin = 5;
int blackBalancePin = 6;
int sensingPin = 7;
boolean whiteBalanceSet = false;
boolean blackBalanceSet = false;
int greenVal = 0;
int blueVal = 0;
int redVal = 0;
to:
int greenPin = 2;\\
int bluePin = 3;\\
int redPin = 4;\\
int whiteBalancePin = 5;\\
int blackBalancePin = 6;\\
int sensingPin = 7;\\
boolean whiteBalanceSet = false;\\
boolean blackBalanceSet = false;\\
int greenVal = 0;\\
int blueVal = 0;\\
int redVal = 0;\\
Changed lines 133-140 from:
PFont font;
String buff = "";
int val = 0;
int NEWLINE = 10;
int xPos,yPos,zPos = 0;
int displaySize = 2;
int an1, an2, an3;
to:
PFont font;\\
String buff = "";\\
int val = 0;\\
int NEWLINE = 10;\\
int xPos,yPos,zPos = 0;\\
int displaySize = 2;\\
int an1, an2, an3;\\
Added lines 38-225:
!Code

!!Arduino

int greenPin = 2;
int bluePin = 3;
int redPin = 4;
int whiteBalancePin = 5;
int blackBalancePin = 6;
int sensingPin = 7;
boolean whiteBalanceSet = false;
boolean blackBalanceSet = false;
int greenVal = 0;
int blueVal = 0;
int redVal = 0;

int ledPinsArray[] = {
redPin, greenPin, bluePin};
float colorValArray[] = {
0, 0, 0};
float whiteBalanceArray[] = {
0,0,0};
float blackBalanceArray[] = {
0,0,0};

void setup() {
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(whiteBalancePin, INPUT);
pinMode(blackBalancePin, INPUT);
pinMode(sensingPin, INPUT);
Serial.begin(9600);
}


void loop() {
checkWhiteBalance();
checkBlackBalance();
checkColorVals();
}

void checkColorVals() {
if(blackBalanceSet && whiteBalanceSet && digitalRead(sensingPin) == HIGH && digitalRead(whiteBalancePin == LOW) && digitalRead(blackBalancePin) == LOW) {
for(int i=0;i<=2;i++) {
digitalWrite(ledPinsArray[i], HIGH);
delay(100);
colorValArray[i] = analogRead(2);
colorValArray[i] = (colorValArray[i] - blackBalanceArray[i])/(whiteBalanceArray[i]-blackBalanceArray[i]) * 255;
digitalWrite(ledPinsArray[i], LOW);
delay(50);
}
printColorVals();
}
}

void checkBlackBalance() {
if (digitalRead(blackBalancePin) == HIGH) {
for(int i=0;i<=2;i++) {
digitalWrite(ledPinsArray[i], HIGH);
delay(100);
blackBalanceArray[i] = analogRead(2);
digitalWrite(ledPinsArray[i], LOW);
delay(50);
}
blackBalanceSet = true;
}
}

void checkWhiteBalance() {
if (digitalRead(whiteBalancePin) == HIGH) {
for(int i=0;i<=2;i++) {
digitalWrite(ledPinsArray[i], HIGH);
delay(100);
whiteBalanceArray[i] = analogRead(2);
digitalWrite(ledPinsArray[i], LOW);
delay(50);
}
whiteBalanceSet = true;
}
}

void printColorVals() {
Serial.print("R");
Serial.println(colorValArray[0], DEC);
Serial.print("G");
Serial.println(colorValArray[1], DEC);
Serial.print("B");
Serial.println(colorValArray[2], DEC);
}

!!Data Visualization in Processing

import processing.serial.*;

PFont font;
String buff = "";
int val = 0;
int NEWLINE = 10;
int xPos,yPos,zPos = 0;
int displaySize = 2;
int an1, an2, an3;

int colorChange = 0;

Serial port;

void setup(){
font = loadFont("AlbaMatter-48.vlw");
background(80);
size(900,600);
smooth();

port = new Serial(this, "COM20", 9600); //remember to replace COM20 with the appropriate serial port on your computer
}

void draw(){
fill(0,2);
noStroke();
rect(0,0,width,height);

// wipe out a small area in front of the new data


// check for serial, and process
while (port.available() > 0) {
serialEvent(port.read());
}
}


void serialEvent(int serial) {
if(serial != '\n') {
buff += char(serial);
}
else {
int curX = buff.indexOf("R");
int curY = buff.indexOf("G");
int curZ = buff.indexOf("B");

if(curX >=0){
String val = buff.substring(curX+1);
an1 = Integer.parseInt(val.trim());

xPos++;
if(xPos > width) xPos = 0;
fill(0);
noStroke();

}
if(curY >=0){
String val = buff.substring(curY+1);
an2 = Integer.parseInt(val.trim());

yPos++;
if(yPos > width) yPos = 0;

}
if(curZ >=0){
String val = buff.substring(curZ+1);
an3 = Integer.parseInt(val.trim());

zPos++;
if(zPos > width) zPos = 0;
fill(0);
rect(xPos+20,0,250,height);
sensorTic(xPos,an1 + 50,"red "+an1,255,0,0,255,0,0);
sensorTic(yPos,an2 + 50,"green "+an2,0,255,0,0,255,0);
sensorTic(zPos,an3 + 50,"blue "+an3,0,0,255,0,0,255);

}

buff = "";
}
fill(an1, an2, an3);
rect(0,500,900,100);
}

void sensorTic(int x, int y, String txt, int sr, int sg, int sb, int fr, int fg, int fb){
stroke(sr,sg,sb);
fill(fr,fg,fb);
ellipse(x,y,displaySize,displaySize);
textFont(font);
textSize(40);
text(txt,x+25,y);
}
Changed line 28 from:
'''8) A small black box with a hole in it'''\\\
to:
'''8) A small black box with a hole in it'''\\
Changed lines 24-28 from:
'''6) An Arduino'''\\

'''7) Some resistors and wires'''\\

'''8) A small black box with a hole in it'''\\
to:
'''6) An Arduino'''\\\

'''7) Some resistors and wires'''\\\

'''8) A small black box with a hole in it'''\\\
Changed lines 7-8 from:
!Parts:
to:
!Parts
Changed lines 13-14 from:
Obviously the stronger the photocell the better because it will give you a broader range of values.
to:
The stronger the photocell the better because it will give you a broader range of values.
Changed lines 19-20 from:
For black balancing
to:
For black balancing. It doesn't have to be foam, just anything that's black and not particularly shiny or reflective.
Added lines 38-39:
!White and Black Balancing and Normalizing the Values
Before we start sensing we're going to need to find out what the minimum and maximum values we get from the photo cell when each LED is on so that we can normalize all of them. I built some code into the Arduino program to do this, and this is why we need buttons for setting white and black balancing as mentioned before. In the code it takes whatever the minimum and maximum are from each and makes it so any values between them will go from 0 to 255, making it as easy as possible to visualize the data in Processing.
Added lines 30-37:

!Putting It Together
1) Plug your photocell and RGB LED into your breadboard right next to each other so the tops of both are about vertically aligned.

2) Wrap the circumfrence of the photo cell in black electrical tape so that it reaches a little bit above the top of the photo cell so that it will block direct light coming from the LEDs.

3) Plug everything into the appropriate pins in Arduino. Photo cell into analog pin 2. Red, green, and blue pins of the LED into digital 4, 5, and 6. White and black balance into digital 2 and 3, and sensor on/off switch into pin 7. Remember your resisitors to ground for the photo cell and the switches!!
Added lines 1-6:
!These are instructions for making your own color sensor based around an RGB LED and a Photo Cell.
This color sensor is very easy to build and use. It is not as fast or as accurate as many commericially available color sensors but works reliably and consistently for many applications.

!A Brief Explanation of How It Works
The sensor essentially consists of an RGB LED and and a photo cell placed right next to each other with a small divider between them so that the light of the LED does not directly hit the photo cell. An object is placed a short distance (about 1-2 inches with the components I'm using, though brighter LEDs could likely change this range of distance) from the sensor. The red, green, and blue lights on the LED are switched on one at a time. If the object's color contains any amount of red, green, or blue, that color is reflected back onto the photo cell when the corresponding light is on and read into Arduino as an analog value. The three colors are then mixed into one, the color of the object.
Changed line 12 from:
'''2) 1 Photocell'''\\
to:
'''2) 1 Photo Cell'''\\
Changed line 6 from:
'''2) 1 Photocell'''
to:
'''2) 1 Photocell'''\\
Changed line 9 from:
'''3) 3 Switches or buttons'''
to:
'''3) 3 Switches or buttons'''\\
Changed line 12 from:
'''4) A piece of black foam'''
to:
'''4) A piece of black foam'''\\
Changed line 15 from:
'''5) A piece of white paper of foam board'''
to:
'''5) A piece of white paper of foam board'''\\
Changed lines 18-22 from:
'''6) An Arduino'''

'''7) Some resistors and wires'''

'''8) A small black box with a hole in it'''
to:
'''6) An Arduino'''\\

'''7) Some resistors and wires'''\\

'''8) A small black box with a hole in it'''\\
Changed lines 3-4 from:
'''1) 1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
to:
'''1) 1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''\\
Added line 4:
Changed line 24 from:
->Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
to:
Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
Added line 5:
Added line 8:
Added line 11:
Added line 14:
Added line 17:
Added line 19:
Added line 21:
Changed lines 3-15 from:
#'''1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
->If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
#'''1 Photocell'''
->Obviously the stronger the photocell the better because it will give you a broader range of values.
#'''3 Switches or buttons'''
->These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
#'''A piece of black foam'''
->For black balancing
#'''A piece of white paper of foam board'''
->For white balancing
#'''An Arduino'''
#'''Some resistors and wires'''
#'''A small black box with a hole in it'''
to:
'''1) 1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
'''2) 1 Photocell'''
Obviously the stronger the photocell the better because it will give you a broader range of values.
'''3) 3 Switches or buttons'''
These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
'''4) A piece of black foam'''
For black balancing
'''5) A piece of white paper of foam board'''
For white balancing
'''6) An Arduino'''
'''7) Some resistors and wires'''
'''8) A small black box with a hole in it'''
Deleted line 4:
Deleted line 6:
Deleted line 8:
Deleted line 10:
Deleted line 12:
Deleted line 13:
Deleted line 14:
Changed lines 4-5 from:
(->)If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
to:
->If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
Changed lines 7-8 from:
(->)Obviously the stronger the photocell the better because it will give you a broader range of values.
to:
->Obviously the stronger the photocell the better because it will give you a broader range of values.
Changed lines 10-11 from:
(->)These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
to:
->These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
Changed lines 13-14 from:
(->)For black balancing
to:
->For black balancing
Changed lines 16-17 from:
(->)For white balancing
to:
->For white balancing
Changed line 23 from:
(->)Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
to:
->Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
Changed lines 4-5 from:
If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
to:
(->)If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.
Changed lines 7-8 from:
Obviously the stronger the photocell the better because it will give you a broader range of values.
to:
(->)Obviously the stronger the photocell the better because it will give you a broader range of values.
Changed lines 10-11 from:
These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
to:
(->)These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.
Changed lines 13-14 from:
For black balancing
to:
(->)For black balancing
Changed lines 16-17 from:
For white balancing
to:
(->)For white balancing
Changed line 23 from:
Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
to:
(->)Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
Changed lines 3-23 from:
#'''1) 1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
*If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.

#'''2) 1 Photocell'''
*Obviously the stronger the photocell the better because it will give you a broader range of values.

#'''3) 3 Switches or buttons'''
*These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.

#'''4) A piece of black foam'''
*For black balancing

#'''5) A piece of white paper of foam board'''
*For white balancing

#'''6) An Arduino'''

#'''7) Some resistors and wires'''

#'''8) A small black box with a hole in it'''
*Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
to:
#'''1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.

#'''1 Photocell'''
Obviously the stronger the photocell the better because it will give you a broader range of values.

#'''3 Switches or buttons'''
These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.

#'''A piece of black foam'''
For black balancing

#'''A piece of white paper of foam board'''
For white balancing

#'''An Arduino'''

#'''Some resistors and wires'''

#'''A small black box with a hole in it'''
Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
Changed lines 1-23 from:
This page will be updated shortly! Currently all documentation can be found at http://colorforms.vox.com/library/post/sensor-workshop-sensor-report-diy-color-sensor.html.
to:
!Parts:

#'''1) 1 Adequately bright RGB LED, or adeuqately bright individual red, green, and blue LEDs'''
*If the LEDs are not bright enough they will not reflect enough colored light off the sensed object and you won't get good values. Whereas the RGB LEDs Sparkfun sells are bright enough to work, the RGB LEDs I got from China on eBay are not more than half the brightness of the Sparkfun ones and don't work so well. The Sparkfun ones have luminosities of 800 mcd (millicandelas, which are I believe thousandths of a footcandle) for the red, 4000 mcd for the green, and 900 for the blue, so its safe to say anything at or over 800mcds will give you a good reading.

#'''2) 1 Photocell'''
*Obviously the stronger the photocell the better because it will give you a broader range of values.

#'''3) 3 Switches or buttons'''
*These aren't actually necessary but I used 2 buttons and 1 toggle switch. The buttons are for setting the white balance and black balance (more on that in a bit) and the switch is just to tell Arduino to run the color sensing function.

#'''4) A piece of black foam'''
*For black balancing

#'''5) A piece of white paper of foam board'''
*For white balancing

#'''6) An Arduino'''

#'''7) Some resistors and wires'''

#'''8) A small black box with a hole in it'''
*Not absolutely necessary, but you'll get better results from the sensor if you block out ambient light with a black box.
Changed line 1 from:
This page will be updated shortly. Currently all documentation can be found <a href="http://colorforms.vox.com/library/post/sensor-workshop-sensor-report-diy-color-sensor.html">here </a>.
to:
This page will be updated shortly! Currently all documentation can be found at http://colorforms.vox.com/library/post/sensor-workshop-sensor-report-diy-color-sensor.html.
Added line 1:
This page will be updated shortly. Currently all documentation can be found <a href="http://colorforms.vox.com/library/post/sensor-workshop-sensor-report-diy-color-sensor.html">here </a>.