Hello, I'm trying to use a parallax color sensor (specs at
http://www.parallax.com/Portals/0/Downloads/docs/prod/acc/TCS3200_doc.pdf ) I'm checking the colors' frequencies using the Serial Monitor on my computer. However, I'm only getting a reading for the green color duration. Even then, I'm not getting any variance with different colors. I'm not exactly sure if it's a programming error or if the sensor is malfunctioning, but I would love some help. I think it may have something to do with the outputs(S2 and S3). Thanks for all your help.
[
/*optimal distance for calibration is 2.5 in*/
int Out = 13; //C Input "the Read"?
int S0= 8; //A Output
int S1 = 9; //B Output
int S2= 10; //E Output
int S3 = 12; //F Output
int LED = 11; //D Output-turns on LEDS
unsigned long REDduration;
unsigned long GREENduration;
unsigned long BLUEduration;
unsigned long CLEARduration;
void setup () {
pinMode(LED,OUTPUT);
pinMode(Out,INPUT);
pinMode(S0,OUTPUT);
pinMode(S1,OUTPUT);
pinMode(S2,OUTPUT);
pinMode(S3,OUTPUT);
digitalWrite(LED, HIGH);
Serial.begin(9600);
}
void loop () {
digitalWrite(S0,HIGH);
digitalWrite(S1,HIGH);
color ();
Serial.print("R");
Serial.println(REDduration);
Serial.print("G");
Serial.println(GREENduration);
Serial.print("B");
Serial.println(BLUEduration);
Serial.print("C");
Serial.println(CLEARduration);
}
void color () {
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
REDduration= pulseIn(Out,HIGH);
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
BLUEduration= pulseIn(Out,HIGH);
digitalWrite(S2,HIGH);
digitalWrite(S3,LOW);
CLEARduration= pulseIn(Out,HIGH);
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
GREENduration= pulseIn(Out,HIGH);
}]