Arduino - Sensor de Cor TCS3200D/TCS230
Este tutorial mostra como conectar um sensor de reconhecimento de cores TCS3200D/TCS230 ao Arduino para medir e identificar valores RGB de vários objetos. Você vai dominar técnicas de calibração do sensor e a programação para detecção de cores.
Tópicos abordados:
- Ligação do módulo sensor TCS3200D/TCS230 à sua placa Arduino
- Calibração para o ambiente, para obter leituras precisas
- Programação do Arduino para extrair dados de cor RGB

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de Cor TCS3200D/TCS230
Construído em torno de uma matriz de fotodiodos 8x8, o TCS3200D/TCS230 identifica cores por meio de filtragem óptica especializada. A grade de 64 diodos inclui 16 fotodiodos com filtro vermelho, 16 unidades com filtro verde, 16 sensores com filtro azul e 16 fotodiodos sem filtro (clear). A detecção de cor acontece alternando entre os tipos de filtro e analisando a frequência da onda quadrada de saída, que representa a intensidade da luz.
Os LEDs brancos integrados na maioria dos módulos fornecem uma iluminação constante do alvo, garantindo medições estáveis em diferentes condições de ambiente e melhorando o desempenho com pouca luz.
Pinagem
Os pinos de conexão do módulo TCS3200D/TCS230 incluem:
- Pino VCC: Conexão da alimentação (+5V).
- Pino GND: Conexão do terra (0V).
- Pinos S0, S1: Entradas de controle da escala de frequência.
- Pinos S2, S3: Entradas de seleção do filtro de cor.
- Pino OUT: Saída de frequência (onda quadrada).
- Pino OE: Controle de habilitação da saída (ativo em LOW). A maioria dos módulos comerciais já liga este pino ao terra internamente, dispensando ligação externa. Se não estiver ligado, conecte-o ao GND manualmente.

Como Funciona
Para operar o sensor, é preciso configurar dois parâmetros principais: o canal de cor ativo e a intensidade do sinal. Pares de pinos de controle gerenciam essas configurações:
Escala da saída via S0 e S1:
- Ambos LOW: Modo de desligamento
- S0 LOW, S1 HIGH: Escala de frequência de 2%
- S0 HIGH, S1 LOW: Escala de frequência de 20%
- Ambos HIGH: Escala total de 100%
Seleção do filtro via S2 e S3:
- Ambos LOW: Canal vermelho ativo
- S2 LOW, S3 HIGH: Canal azul ativo
- S2 HIGH, S3 LOW: Canal clear (sem filtro)
- Ambos HIGH: Canal verde ativo
O pino OUT gera sinais de onda quadrada que vão de aproximadamente 2 Hz a 500 kHz. Frequências mais altas indicam maior intensidade de luz no canal selecionado. Medir a largura do pulso com pulseIn() fornece a relação inversa — pulsos mais curtos significam cores mais brilhantes. Após a calibração, a conversão gera valores RGB padrão.
Maximizando a Precisão da Leitura
- Mantenha uma distância de 1-3 cm entre o sensor e o alvo, mantendo o posicionamento constante.
- Ative os LEDs brancos da placa para ter uma iluminação uniforme.
- Reduza a interferência da luz ambiente protegendo o sensor, para melhorar a precisão.
Diagrama de Ligação
Esquema de conexão entre o sensor de cor TCS3200 e o Arduino:
| Sensor de Cor TCS3200 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | Pino 4 |
| S1 | Pino 3 |
| S2 | Pino 6 |
| S3 | Pino 5 |
| OUT | Pino 7 |

This image is created using Fritzing. Click to enlarge image
Código Arduino - Calibração do Sensor pela Largura do Pulso
A calibração para o ambiente é essencial porque a saída bruta do sensor varia com vários fatores: intensidade dos LEDs da placa, distância do alvo, propriedades de reflexão da superfície e iluminação ao redor. Considere essas variáveis como interferência na medição. A calibração quantifica essa interferência definindo os limites mínimo e máximo de cada canal de cor, permitindo uma conversão precisa para a escala RGB padrão de 0–255 na sua montagem específica.
Passos Rápidos
- Abra o código de calibração no Arduino IDE
- Faça o upload para a sua placa Arduino usando o botão Upload
- Abra o Serial Monitor para ver as leituras em tempo real com o acompanhamento de Min/Max
- Passe o sensor por vários objetos: superfícies brancas (papel), itens pretos, além de objetos de cores variadas
- Observe os valores Min/Max sendo atualizados automaticamente à medida que os extremos são registrados
- Quando os números se estabilizarem (normalmente em 10-20 segundos), anote as seis constantes de calibração
Por exemplo, a partir da saída acima, seus valores de calibração seriam:
- RedMin = 42, redMax = 210
- GreenMin = 55, greenMax = 185
- BlueMin = 60, blueMax = 172
Código Arduino - Lendo os Valores de Cor RGB
Passos Rápidos
- Localize as declarações das variáveis de calibração perto do início do código:
- Atualize TODOS os seis valores zero usando os dados de calibração do exercício anterior. Exemplo de alteração (usando os resultados de calibração redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172):
- Faça o upload do código modificado para o Arduino
- Posicione um alvo colorido na frente do sensor
- Acompanhe a saída RGB no Serial Monitor
Os valores RGB agora estão mapeados para a faixa padrão de 0-255. Larguras de pulso menores (mais luz) produzem valores RGB maiores, e larguras de pulso maiores (menos luz) produzem valores RGB menores.
Aplicações
Agora que você consegue ler valores RGB, pode criar projetos como:
- Separador de cores: Separe objetos por cor (vermelho, verde, azul)
- Jogo de combinar cores: Verifique se dois objetos têm a mesma cor
- Robô seguidor de linha: Siga linhas coloridas no chão
- Controle de qualidade: Detecte produtos com defeito pela cor
- Alarme ativado por cor: Acione um buzzer ou LED quando uma cor específica for detectada