Você está na página 1de 18

27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Início  Arduino  Identi que cores com o Sensor de Cor TCS3200 e Arduino

Identi que cores com o Sensor de Cor TCS3200


e Arduino
Arduino, Sensores 
25 de abril de 2016 
Adilson Thomsen

Utilize o sensor de cor TCS3200 e um led RGB para montar facilmente um sistema de reconhecimento de
cores com Arduino.

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 1/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

O sensor de cor TCS3200 (datasheet) utiliza o chip TCS3200 para detectar o nível de cor RGB (Red, Green e
Blue, ou Vermelho, Verde e Azul) do objeto que for colocado em frente ao sensor.

O chip TCS3200 tem 64 fotodiodos: 16 com ltro para a cor vermelha, 16 para a verde, 16 para a azul e 16
sem ltro. Esses fotodiodos captam a intensidade da luz, ltrando as cores e gerando a informação
correspondente no pino OUT, que vai enviar os dados para o microcontrolador.

O sensor de cor TCS3200


O sensor de cor TCS3200 tem duas leiras de 5 pinos, onde encontramos os pinos de controle (S0, S1, S2,
S3), saída (OUT), controle do Led (LED) e alimentação (VCC e GND). Os pinos Vcc e GND estão em
duplicidade, e você pode usar qualquer um deles para alimentar o módulo.

Os pinos S0 e S1 determinam a frequência de saída, e os pinos S2 e S3 determinam qual nível de cor será
detectado no momento, segundo a tabela abaixo:

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 2/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

O pino LED serve para ligar (nível 0 – LOW) ou desligar (nível 1 – HIGH), os leds brancos em volta do sensor.

Circuito Arduino e Sensor TCS3200


No nosso circuito, vamos utilizar um Arduino Uno, um sensor de cor TCS3200 e um led RGB difuso 5mm,
que vai acender nas cores vermelho, verde ou azul conforme a cor do objeto que for colocado em frente ao
sensor:

O led RGB é do tipo anodo comum, com o esquema de ligação abaixo:

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 3/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Você pode fazer a ligação com 3 resistores, conforme a imagem acima, ou utilizar, para efeitos de testes,
apenas um resistor no anodo (pino maior). No nosso circuito utilizamos apenas um resistor de 10K.

Programa sensor de cor TCS3200


A princípio o sensor de cor TCS3200 não usa nenhuma biblioteca especí ca, já que vamos acionar os pinos
S0, S1, S2 e S3 pelos pinos digitais, e ler o valor da saída OUT também por um pino digital.

A cada ciclo do loop é efetuada uma leitura das cores, e os valores lidos são mostrados no serial monitor.
Esses valores também são utilizados para determinar qual das três cores do led serão acesas.

1 //Programa: Sensor TCS3200 e led RGB


2 //Autor: FILIPEFLOP
3  
4 //Pinos de conexao do modulo
5 const int s0 = 8;
6 const int s1 = 9;
7 const int s2 = 12;
8 const int s3 = 11;
9 const int out = 10;
10  
11 //Pinos do led RGB
12 int pinoledverm = 2;

r m n
13 int pinoledverd = 3;
14 int pinoledazul = 4;
15   0 0
 Pesquisar no blog por ...
16 //Variaveis cores
17 int red = 0;
18 int green = 0;
19 int blue = 0;
20  
21 void setup()
22 {
23   pinMode(s0, OUTPUT);
24   pinMode(s1, OUTPUT);
25   pinMode(s2, OUTPUT);
26   pinMode(s3, OUTPUT);
27   pinMode(out, INPUT);
28   pinMode(pinoledverm, OUTPUT);
29   pinMode(pinoledverd, OUTPUT);
30   pinMode(pinoledazul, OUTPUT);
31   Serial.begin(9600);
32   digitalWrite(s0, HIGH);
33   digitalWrite(s1, LOW);
34 }
35  
36 void loop()
37 {
38   //Detecta a cor
39   color();
40   //Mostra valores no serial monitor
41   Serial.print("Vermelho :");
42   Serial.print(red, DEC);
43   Serial.print(" Verde : ");
44   Serial.print(green, DEC);
45   Serial.print(" Azul : ");
46   Serial.print(blue, DEC);
47   Serial.println();
48  
49   //Verifica se a cor vermelha foi detectada
50   if (red < blue && red < green && red < 100)
51   {

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 4/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

52     Serial.println("Vermelho");
53     digitalWrite(pinoledverm, LOW); //Acende o led vermelho
54     digitalWrite(pinoledverd, HIGH);
55     digitalWrite(pinoledazul, HIGH);
56   }
57  
58   //Verifica se a cor azul foi detectada
59   else if (blue < red && blue < green && blue < 1000)
60   {
61     Serial.println("Azul");
62     digitalWrite(pinoledverm, HIGH);
63     digitalWrite(pinoledverd, HIGH);
64     digitalWrite(pinoledazul, LOW); //Acende o led azul
65   }
66  
67   //Verifica se a cor verde foi detectada
68   else if (green < red && green < blue)
69   {
70     Serial.println("Verde");
71     digitalWrite(pinoledverm, HIGH);
72     digitalWrite(pinoledverd, LOW); //Acende o led verde
73     digitalWrite(pinoledazul, HIGH);
74   }
75   Serial.println();
76  
77   //Delay para apagar os leds e reiniciar o processo
78   delay(50);
79   digitalWrite(pinoledverm, HIGH);
80   digitalWrite(pinoledverd, HIGH);
81   digitalWrite(pinoledazul, HIGH);
82 }
83  
84 void color()
85 {
86   //Rotina que le o valor das cores
87   digitalWrite(s2, LOW);
88   digitalWrite(s3, LOW);
89   //count OUT, pRed, RED
90   red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
91   digitalWrite(s3, HIGH);
92   //count OUT, pBLUE, BLUE
93   blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
94   digitalWrite(s2, HIGH);
95   //count OUT, pGreen, GREEN
96   green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
97 }

O programa lê as cores primárias (RGB), mas você pode con gurar o programa para detectar outras cores.
Nas imagens abaixo, temos o sensor detectando a cor azul….

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 5/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

e também a verde….

  Gostou?  Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até
mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 6/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Micro Servo Motor 9g Sensor de chuva YL- Comunicação pela Aprenda a usar o
SG90 com Arduino 83 rede com o Módulo Sensor de frequência
Uno Ethernet ENC28J60 cardíaca

Adilson Thomsen

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável
pelo departamento técnico da FILIPEFLOP.

← Qual módulo ESP8266 comprar? Novidade! Câmera Raspberry Pi 8 Megapixels  →

Deixe uma resposta

Conectar com:

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentário

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 7/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Nome * E-mail *

Site

Publicar comentário

23 Comentários

Existe a possibilidade de ao invés de enviar o comando para acender um LED RBG, enviar a um alto falante
programado com certos áudios para certas cores.

Salomão Luiz 3 de maio de 2016 Responder

Olá, tenho uma dúvida, como imprime os valores em RGB? Porque os valores que aparecem não é em RGB
eu acho…
https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 8/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Guilherme 6 de maio de 2016 Responder

Alguém sabe me dizer se o pino do LED deve ser ligado diretamente ou necessita de um resistor? Coloquei
um resistor, mas acho que o LED perdeu um pouco a intensidade, mas tenho receio de ligar diretamente e
queimar.

Gleise 23 de maio de 2016 Responder

Bom dia Gleise,

Usamos ele ligado diretamente, sem problemas.

Abraço!

Adilson – Equipe FILIPEFLOP

Adilson Thomsen 24 de maio de 2016 Responder

tem como ligar ele num clp siemens em vez de arduíno?

Vinicius Gonçalves 20 de junho de 2016 Responder

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 9/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Prezado Adilson,
Sou estudante de Engenharia Mecatrônica vou iniciar o 2o. período. Como faço pra programar para
identi car qualquer cor e suas nuances? Da pra você me enviar a programação pra que o microcontrolador
faça dessa forma.

Fabio Vasconcelos 21 de junho de 2016 Responder

Olá! Tenho uma dúvida referente ao módulo TCS230 sensor de cor, usei o programa abaixo para fazer a
leitura RBG, porém notei para mesma cor houve uma variação extrema, exemplo: objeto azul primeira
medição (43,43,43 ) segunda medição (103; 56; 155); terceira medição com mesmo objeto (205;155;33) e
por nas medições seguintes variando, em algumas vez o valor se manteve por 3 medições até alterar
novamente. Basicamente a unica cor que não variou foi a branca que se manteve (255;255;255);
Gostaria de saber o que posso estar fazendo para diminuir esta variação e identi car corretamente as
cores, ou se módulo esta apresentando falhas e este seria uma forma de sinal que a identi cação da cor
não está sendo reconhecida; ou se até mesmo seja algum procedimento de setup que deveria ter feito no
primeiro uso.
Segue abaixo o programa:

#include
#include

// Pinos

#de ne S0_OUT 8
#de ne S1_OUT 9
#de ne S2_OUT 12
#de ne S3_OUT 13
#de ne OE_OUT 2

MD_TCS230 CS(S2_OUT, S3_OUT,S1_OUT, S0_OUT, OE_OUT);

colorData rgb;

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 10/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

void setup()
{
Serial.begin(57600);
CS.begin();
}

int readSensor(int i)
{
static bool waiting;
if (!waiting)
{
CS.read();
waiting = true;
}
else
{
if (CS.available())
{
CS.getRGB(&rgb);
waiting = false;
}
}
return rgb.value[i];
}

void loop()
{
Serial.print(readSensor(TCS230_RGB_R));
Serial.print(“;”);
Serial.print(readSensor(TCS230_RGB_G));
Serial.print(“;”);
Serial.println(readSensor(TCS230_RGB_B));
delay(1000);
}

Tatiane 23 de julho de 2016 Responder

Olá, montei o sensor de cor tcs3200 da mesma maneira que está no post, entretanto, o sensor mesmo sem

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 11/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

encostar nenhum objeto sobre ele, ele ca retornando valores R, G, B no serial monitor muito rápido,
mesmo sem eu clocar um objeto sobre o sensor. Por que será que isto está ocorrendo?

Matheus 30 de julho de 2016 Responder

Olá, como vocês desenham esses esquemáticos? É pelo fritzing? Que bilbiotecas são essas?

henrique 31 de julho de 2016 Responder

Boa tarde Henrique,

Sim, utilizamos o Fritzing. Alguns componentes não existem no Fritzing e inserimos posteriormente.

Abraço.

Adilson – Equipe FILIPEFLOP

Adilson Thomsen 1 de agosto de 2016 Responder

como eu posso identi car a cor prata???

Mateus Figueiedo 27 de agosto de 2016 Responder

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 12/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Olá…

Como faço pra detectar as cores preto e branco?


É possível utilizar esse sensor, ou pode ser o óptico re exivo?

Rodrigo Zilli 20 de setembro de 2016 Responder

Também queria saber, estou pendente disto para um trabalho de curso.

Diogo Ismael 1 de fevereiro de 2017 Responder

Gostaria de saber se pode ser feito a ligação direto no clp da delta.


No aguardo.
Obrigado.

Roberto 29 de setembro de 2016 Responder

bom dia. eu comprei um sensor tcs 3200 e utilizei a sua programação para testa o mesmo, porem ele não
https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 13/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

esta identi cando as cores ele ate acende os ledes do sensor mas não identi ca as cores. eu queria saber
se vc tem ideia do que pode ser???

luiz felipe 6 de outubro de 2016 Responder

Olá comprei o sensor tcs3200 um lcd12x2 e um i2C, realizei o esquema acima indicado e deu tudo certo,
mas gostaria de saber como posso informar a cor em texto no LCD, gostaria também se fosse informado
outra cor ele escrever no LCD é possível ?

Vitor Bueno 2 de abril de 2017 Responder

Amigos, vocês conhecem algum tutorial ensinando como desenvolver um calibrador para monitores? sei
que alguns modelos utilizam o TCS3200 da keystudio, mas não encontrei nada a respeito

vinicius matias diniz 20 de abril de 2017 Responder

É preciso con gurar o timer pra pegar o pulso da frequencia no caso de utilizar o pic?sou novo na
eletronica e gostaria de tirrar essa dúvida.

victor 13 de junho de 2017 Responder

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 14/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

Bom dia. Excelente matéria. Me tire uma dúvida: esse sensor detecta qualquer cor? Qual seria o código
para detectar a cor amarela?

Robson 22 de julho de 2017 Responder

Bom dia, poderia disponbilizar a biblioteca fritzing para esse sensor de cor?

Att.

Luci 25 de julho de 2017 Responder

Boa Tarde!
Gostaria de Saber se é possível conectar dois sensores de cor ao mesmo tempo no Arduino. Tipo, aqui na
escola estamos fazendo um robô seguidor de linha e ele precisa se orientar pela cor preta, virar quando ver
cor verde, etc.
É possível ligar dois sensores?
Att
fabricio

Fabricio Noronha 9 de outubro de 2017 Responder

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 15/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

gostaria de sabe qual a distancia de alcance do sensor!

washington oliveira 11 de março de 2018 Responder

qual é o alcance do sensor ?

washington oliveira 18 de março de 2018 Responder

Categorias

 Arduino (86)

 Display (7)

 Embarcados (43)

 ESP8266 (16)

 Módulos (15)

 Motores e Servos (18)

 News (37)

 Outros (11)

 Raspberry Pi (57)

 Sensores (23)

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 16/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

 Shield (2)

 Wearable (4)

 Wireless (51)

v Assine a Newsletter
...e junte-se à maior comunidade maker do Brasil

Digite seu E-mail Enviar

Dúvidas Frequentes

Como comprar

Frete Grátis

Retirada em mãos

Pagamento e envio

Trocas e devoluções

Institucional

Quem Somos

Termos de Uso

Trabalhe Conosco

o
Atendimento Online
Alguma dúvida? Entre em contato!

(48) 3307-3495

Seg-Sex das 08h30-11h30 às 13h-17h


https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 17/18
27/03/2018 Identifique cores com o Sensor de Cor TCS3200 e Arduino - FilipeFlop

     

FilipeFlop Componentes Eletrônicos | CNPJ: 12.672.380/0001-90


Rod. José Carlos Daux 4850 Galpão 19, Florianópolis/SC, 88032-005

https://www.filipeflop.com/blog/sensor-de-cor-tcs3200-rgb-arduino/ 18/18

Você também pode gostar