Domina la detección de color con Arduino y sensores TCS230/TCS3200 – Guía paso a paso
En este tutorial de Arduino aprenderemos a detectar colores usando Arduino y el Sensor de Color TCS230 / TCS3200. Puedes ver el siguiente vídeo o leer el tutorial escrito a continuación para más detalles. El TCS230 detecta la luz de color con la ayuda de un array de 8 x 8 fotodiodos. Luego, usando un Convertidor de Corriente a Frecuencia, las lecturas de los fotodiodos se convierten en una onda cuadrada con una frecuencia directamente proporcional a la intensidad de la luz. Finalmente, usando la placa Arduino podemos leer la salida de onda cuadrada y obtener los resultados del color. Si echamos un vistazo más de cerca al sensor, podemos ver cómo detecta varios colores. Los fotodiodos tienen tres filtros de color diferentes. Dieciséis de ellos tienen filtros rojos, otros 16 tienen filtros verdes, otros 16 tienen filtros azules y los otros 16 fotodiodos son transparentes sin filtros. Cada 16 fotodiodos están conectados en paralelo, así que usando los dos pines de control S2 y S3 podemos seleccionar cuál de ellos se leerá. Así que, por ejemplo, si queremos detectar color rojo, podemos usar solo los 16 fotodiodos con filtro rojo poniendo los dos pines a nivel lógico bajo según la tabla. El sensor tiene dos pines de control más, S0 y S1, que se usan para escalar la frecuencia de salida. La frecuencia puede escalarse a tres valores preestablecidos diferentes del 100 %, 20 % o 2 %. Esta función de escalado de frecuencia permite optimizar la salida del sensor para varios contadores de frecuencia o microcontroladores. Ahora estamos listos para continuar y conectar el sensor TCS230 a la placa Arduino. Aquí está el esquema del circuito. Puedes conseguir los componentes necesarios para este tutorial de Arduino en los enlaces a continuación: Descripción: Primero necesitamos definir los pines a los que está conectado el sensor y definir una variable para leer la frecuencia. En la sección setup necesitamos definir los cuatro pines de control como salidas y la salida del sensor como una entrada de Arduino. Aquí también necesitamos establecer el escalado de frecuencia, para este ejemplo lo estableceré al 20%, e iniciar la comunicación serial para mostrar los resultados en el Monitor Serial. En la sección loop, comenzaremos leyendo los fotodiodos con filtro rojo. Para ese propósito, pondremos los dos pines de control S2 y S3 a nivel lógico bajo. Luego, usando la función "pulseIn()" leeremos la frecuencia de salida y la pondremos en la variable "frequency". Usando la función Serial.print() imprimiremos el resultado en el monitor serial. El mismo procedimiento va para los otros dos colores, solo necesitamos ajustar los pines de control para el color apropiado. Ahora, si ejecutamos el Monitor Serial, comenzaremos a obtener algunos valores. Estos valores dependen del escalado de frecuencia seleccionado, así como de la iluminación ambiental. Ten en cuenta aquí que los tres valores difieren debido a la diferente sensibilidad de cada tipo de fotodiodo, como se ve en el diagrama de responsividad espectral del fotodiodo del datasheet del sensor. Sin embargo, ahora veamos cómo reaccionan los valores cuando traemos diferentes colores frente al sensor. Así que, por ejemplo, si traemos color rojo, el valor inicial bajará, en mi caso de alrededor de 70 a alrededor de 25. Ahora, si queremos representar los colores detectados con el Modelo RGB que tiene valores de 0 a 255, usaremos la función map() para mapear o convertir las lecturas a valores de 0 a 255. El valor de 70 se mapeará a 0, y el valor de 25 a 255. El mismo procedimiento va para los otros dos colores. Aquí está el código fuente final para este ejemplo: Ten en cuenta que los colores no son tan precisos, pero son lo suficientemente buenos para proyectos simples. Como otro ejemplo del sensor de color TCS230, en mi próximo video aprenderemos a hacer una Máquina Clasificadora Automática de Colores con Arduino. Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvides revisar mi colección de Proyectos Arduino.Cómo Funciona el Sensor de Color TCS230 / TCS3200




Código Fuente Sensor de Color TCS230
/* Tutorial Arduino Detección de Color
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Establecer escalado de frecuencia al 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
Serial.begin(9600);
}
void loop() {
// Configurar fotodiodos con filtro rojo para ser leídos
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Leer frecuencia de salida
frequency = pulseIn(sensorOut, LOW);
// Imprimir valor en monitor serial
Serial.print("R= "); // imprimir nombre
Serial.print(frequency); // imprimir frecuencia color ROJO
Serial.print(" ");
delay(100);
// Configurar fotodiodos con filtro verde para ser leídos
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
frequency = pulseIn(sensorOut, LOW);
Serial.print("G= ");
Serial.print(frequency);
Serial.print(" ");
delay(100);
// Configurar fotodiodos con filtro azul para ser leídos
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
frequency = pulseIn(sensorOut, LOW);
Serial.print("B= ");
Serial.print(frequency);
Serial.println(" ");
delay(100);
}Lenguaje: Arduino (arduino)

// Re-mapeando el valor de la frecuencia al Modelo RGB de 0 a 255
frequency = map(frequency, 25, 70, 255, 0);
/* Tutorial Arduino Detección de Color
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Establecer escalado de frecuencia al 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
Serial.begin(9600);
}
void loop() {
// Configurar fotodiodos con filtro rojo para ser leídos
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
frequency = pulseIn(sensorOut, LOW);
// Re-mapeando el valor de la frecuencia al Modelo RGB de 0 a 255
frequency = map(frequency, 25, 72, 255, 0);
Serial.print("R= ");
Serial.print(frequency);
Serial.print(" ");
delay(100);
// Configurar fotodiodos con filtro verde para ser leídos
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
frequency = pulseIn(sensorOut, LOW);
frequency = map(frequency, 30, 90, 255, 0);
Serial.print("G= ");
Serial.print(frequency);
Serial.print(" ");
delay(100);
// Configurar fotodiodos con filtro azul para ser leídos
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
frequency = pulseIn(sensorOut, LOW);
frequency = map(frequency, 25, 70, 255, 0);
Serial.print("B= ");
Serial.print(frequency);
Serial.println(" ");
delay(100);
}Lenguaje: Arduino (arduino)
Proceso de manufactura
- Tutorial sensor de luz Raspberry Pi: cablear LDR y leer niveles de luz con Python
- Crea un Cerrojo RFID Seguro con Arduino – Guía Paso a Paso
- Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
- Construye un estadiómetro digital: Controla tu altura con Arduino y sensor láser
- Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
- Construye una Torre de Sensores con Arduino Cloud: Temperatura, Movimiento y Gas
- Mezclador de Colores RGB con Arduino – Proyecto DIY para Principiantes
- Construye un Mezclador de Colores RGB con Arduino – Tutorial Paso a Paso
- Ilumina tu Año Nuevo con Luces LED Musicales Dinámicas
- Proyecto Sensor de Huella Dactilar con Arduino Nano – Tutorial Paso a Paso
- Tutorial Arduino para Principiantes 01: Inicia tu Primer Proyecto