Compré este sensor de color, basado en el TC230, y que tiene dos leds. El problema es que en ves de 7 pines como todos los sensores de color que he visto en internet, este consta de 3 pines, uno para la entrada de 5v, otro para el ground y uno para el output. Este último se conecta a una de las entradas analógicas del arduino. Toda la documentación, ejemplos, tutoriales, etc que se encuentran en internet se refieren a la versión de 7 pines (con pines separados para R, G y B). Hasta ahora he podido hacer funcionar el sensor, capturar la lectura y mostarla en la consola usando:
const int sensorPin = A0;
Serial.println(analogRead(sensorPin));
El problema es que la lectura que muestra no tiene sentido (o al menos eso parece), con valores entre 0 y 914 dependiendo del color.
Internal processing of ZX-COLOR will gives the digital data of target color in 6-bit MSB. The color and lightness data seperatable up to 64 steps. The data format is shown
below.
Bit 7 and 4 as Red component bits (Rr)
The full red color value is both bits as 11(R=1, r=1).
None red color component, both bits are 00 (R=0, r=0).
Bit 6 and 3 as Green component bits (Gg)
The full green color value is both bit as 11 (G=1, g=1).
None green color component, both bits are 00 (G=0, g=0)
Bit 5 and 2 as Blue component bits (Bb)
The full blue color value is both bits as 11 (B=1, b=1).
None blue color component, both bits are 00 (B=0, b=0).
Bit 1 and 0 : white object defination
Clear to “00” if the target object is not the white object
Set to “11” if the target object is the white object
El sensor detecta colores pero... si hay combinación tu debes decodificar los mismos.
Veamos... debes manejar un poco como se organiza la información.
Si tienes ROJO pondrá un b10000000 o sea 80h o bien 2.5V
El ejemplo al final del pdf esta claro
#define RED 145
#define GREEN 85
#define YELLOW 221
#define OFFSET 2
unsigned int color;
void setup() {
Serial.begin(9600);
}
void loop() {
color = analog(A0);
if ((color >= RED-OFFSET) && (color <= RED+OFFSET)) {
Serial.println("Color = RED");
}
else if ((color >= GREEN-OFFSET) && (color <= GREEN+OFFSET)) {
Serial.println("Color = GREEN");
}
else if ((color >= YELLOW-OFFSET) && (color <= YELLOW+OFFSET)) {
Serial.println("Color = YELLOW");
}
else {
Serial.println("Out of Range!");
}
delay(100);
}
Gracias por responder.
Lamentablemente sigo sin entender muy bien . Yo quería un sensor que me entregara el valor de color en formato (R,G,B) y de esta forma lo pudiese pasar a otra aplicacion que me representara ese color. LOs colores que necesito detectar no son definidos, como rojo o azul, puede ser una tonalidad de rojo o de verde-amarillo. En definitiva, crees que este sensor no me sirve para lo que necesito?
Saludos