Sensor De Color TCS3200 GY-31
- Chip
- TCS3200: fotodiodos con filtros rojo, verde, azul y sin filtro
- Alimentación
- 3 a 5 V
- Salida
- Onda cuadrada: su frecuencia indica la intensidad del color
- Escala (S0, S1)
- 2 %, 20 % o 100 %; ambos en bajo apaga el chip
Características
Sensor de color TCS3200 en la placa GY-31: reconoce colores midiendo la luz roja, verde y azul que refleja un objeto. Tiene un soporte negro alrededor del sensor que bloquea la luz lateral, cuatro LED blancos para iluminar el objeto y un pin para controlarlos.
Sirve para clasificar objetos por color o seguir líneas de colores.
| Chip | TCS3200: fotodiodos con filtros rojo, verde, azul y sin filtro |
|---|---|
| Alimentación | 3 a 5 V |
| Salida | Onda cuadrada: su frecuencia indica la intensidad del color |
| Escala (S0, S1) | 2 %, 20 % o 100 %; ambos en bajo apaga el chip |
| Filtro (S2, S3) | Bajo-bajo rojo · bajo-alto azul · alto-bajo sin filtro · alto-alto verde |
| LED | Pin para encender o apagar los 4 LED blancos |
| Soporte | Pieza negra alrededor del sensor que reduce la luz lateral |
¿Para qué sirve?
- Clasificar objetos por color (cintas transportadoras, golosinas, piezas)
- Robots que siguen líneas de colores
- Juegos y proyectos educativos
Diagrama de conexión de prueba
Placa usada: Arduino UNO
| Cable | Módulo | Arduino UNO | Nota |
|---|---|---|---|
| naranja | S0 | D4 | |
| amarillo | S1 | D5 | |
| verde | S2 | D6 | |
| azul | S3 | D7 | |
| morado | OUT | D8 | Salida de frecuencia |
| blanco | LED | D9 | LEDs blancos |
| rojo | VCC | 5V | |
| negro | GND | GND |
Código de prueba
// Prueba del sensor de color GY-31 (TCS3200): mide la luz roja, verde y azul y dice
// qué color predomina. Un número MENOR significa MÁS de ese color.
const int S0 = 4;
const int S1 = 5;
const int S2 = 6;
const int S3 = 7;
const int PIN_OUT = 8;
const int PIN_LED = 9; // LEDs blancos del módulo
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(PIN_OUT, INPUT);
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED, HIGH); // LEDs blancos encendidos
// Escala de salida al 20 % (S0 alto, S1 bajo): adecuada para el Arduino
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
Serial.begin(9600);
}
// Elige el filtro con S2 y S3 y mide el ancho del pulso de salida
unsigned long medir(int s2, int s3) {
digitalWrite(S2, s2);
digitalWrite(S3, s3);
delay(50);
return pulseIn(PIN_OUT, LOW);
}
void loop() {
unsigned long rojo = medir(LOW, LOW);
unsigned long verde = medir(HIGH, HIGH);
unsigned long azul = medir(LOW, HIGH);
Serial.print("R: "); Serial.print(rojo);
Serial.print(" V: "); Serial.print(verde);
Serial.print(" A: "); Serial.print(azul);
if (rojo < verde && rojo < azul) Serial.println(" -> rojo");
else if (verde < rojo && verde < azul) Serial.println(" -> verde");
else Serial.println(" -> azul");
delay(500);
}
Abre el Monitor serie a 9600 baudios y acerca papeles de colores al sensor. Las lecturas cambian con la distancia y la luz: compara los tres números entre sí, no su valor.
Precauciones
- Pon el objeto muy cerca (1 o 2 cm) para lecturas estables.
- Para distinguir colores parecidos, calibra antes con una hoja blanca y una negra.
- El funcionamiento del pin LED varía según el fabricante: el código lo pone en alto, así los LED quedan encendidos en cualquier versión.
Fuentes consultadas: SurtrTech: detección de color con el GY-31 · Funduino: sensor de color con Arduino · Components101: módulo TCS3200. Ficha preparada por Electrodrone; verifica siempre el voltaje de tu módulo antes de conectarlo.