Sensor de color para Arduino

Existen algunos componentes que nos permiten recibir un valor numérico para indicarle a Arduino el color que está delante del sensor. Unos de los componentes mas conocidos para este tipo de proyectos es el TCS3200 o el TCS3414.  Realmente este sensor lo que hace es detectar la intensidad de luz y convertirla en una frecuencia y lógicamente cada color refleja una intensidad diferente y por lo tanto una frecuencia diferente.

Al ser un sensor de bajo costo no tiene una gran precisión pero se acerca bastante a lo que queremos detectar.

El sensor de color TCS3200 es un detector de color completo, incluye un chip sensor TAOS TCS3200 RGB y 4 LEDs blancos de ángulo amplio. El TCS3200 puede detectar y medir todos los colores visibles.
El TCS3200 tiene un oscilador que produce una salida de onda cuadrada cuya frecuencia es proporcional a la intensidad del color elegido y así podemeos .

Materiales:

  • Sensor de Color TCS3200
  • Jumpers Macho-Hembra
  • Arduino

Descripción:

Conecta el Sensor de Color TCS3200 como se muestra en la imagen y carga el código. En el monitor serial de Arduino podrás ver los valores que arroja el sensor para los colores Rojo, Verde y Azul. Basándose en estos valores el monitor serial mostrará cuando el sensor detecta el color Rojo, Verde o Azul. Los valores que arroja el sensor pueden ser ajustados para diferenciar entre una amplia gama de colores. Es importante tener un buen control de la iluminación en el ambiente ya que es un factor que puede alterar las lecturas del sensor.

Código:

/* Sensor de Color Arduino
—————————-
VCC 5V
GND GND
s0 8
s1 9
s2 12
s3 11
INPUT 10
*/
const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
int rojo = 0;
int verde = 0;
int azul = 0;
//////////////////////////////////////////////////////////////////////////////////////VOID SETUP
void setup(){
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(input, INPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
}
//////////////////////////////////////////////////////////////////////////////////////VOID LOOP
void loop(){
color();
Serial.print(” rojo: “);
Serial.print(rojo, DEC);
Serial.print(” verde: “);
Serial.print(verde, DEC);
Serial.print(” azul: “);
Serial.print(azul, DEC);

//Las variables para detectar un color estan en funcion de los otros colores; puedes utilizar valores simplemente.
if (rojo < azul && verde > 100 && rojo < 80)
{
Serial.println(” – ROJO”);
}
else if (azul < rojo && azul < verde)
{
Serial.println(” – AZUL”);
}
else if (verde < rojo && verde < azul)
{
Serial.println(” – VERDE”);
}
else{
Serial.println(“-“);
}
delay(300);
}

void color()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
rojo = pulseIn(input, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
azul = pulseIn(input, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
verde = pulseIn(input, digitalRead(out) == HIGH ? LOW : HIGH);
}

 

 

 

Este video muestra información más técnica sobre los sensores de color.

No comments yet.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.