Identificação de cores com TCS3200 e Arduino
A função deste sensor é determinar uma cor para uma análise feita em cada momento, de acordo com um determinado conjunto de parâmetros.
Este sensor de cor utiliza o chip TCS3200, que lhe dá o nome. Funcionalmente este determina os níveis RGB (Red, Green e Blue, ou Vermelho, Verde e Azul) de um objeto colocado à sua frente.
O chip TCS3200 tem 64 fotodíodos, 16 para cada cor que filtram cada uma das cores respetivas (vermelha, verde ou azul). Esses fotodíodos captam a intensidade luminosa, filtrando as cores e gerando a informação que será enviada pelo pino OUT ao microcontrolador (na nossa experiencia ao Arduíno).
Pins
O sensor de cor TCS3200 tem duas filas com 5 pinos cada:
Pins de controle – S0, S1, S2, S3
Os pinos S0 e S1 definem a frequência de saída, e os pinos S2 e S3 filtram
a cor a ser detetada de acordo com a tabela.
Saída – OUT
Alimentação – VCC e GND (pins em duplicado, utilizar apenas um conjunto)
Controle do Led – LED (serve para ligar ou desligar os leds brancos em volta do sensor, para ligar (nível 0 – LOW) ou desligar (nível 1 – HIGH).
Material necessário para o teste
- 1 Sensor de cor TCS3200;
- 1 Placa de Arduino Uno R3;
- 1 Breadboard;
- Condutores de ligação;
- 1 Cabo USB.
Esquema

Programa
//Programa: Sensor TCS3200 //Autor: Clube de Robótica ESGC - Prof. Ramiro Martins //Pins de ligação ao Arduino const int s0 = 8; const int s1 = 9; const int s2 = 12; const int s3 = 11; const int out = 10; //Variaveis das cores int ver = 0; int verde = 0; int azul = 0; void setup() { pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); Serial.begin(9600); digitalWrite(s0, HIGH); digitalWrite(s1, LOW); } void loop() { //Detecta a cor cor(); //Mostra valores no serial monitor Serial.print("Vermelho :"); Serial.print(ver, DEC); Serial.print(" Verde : "); Serial.print(verde, DEC); Serial.print(" Azul : "); Serial.print(azul, DEC); Serial.println(); //Verifica se a cor vermelha foi detetada if (ver < azul && ver < verde && ver < 100) { Serial.println("Vermelho"); } //Verifica se a cor azul foi detetada else if (azul < ver && azul < verde && azul < 1000) { Serial.println("Azul"); } //Verifica se a cor verde foi detetada else if (verde < ver && verde < azul) { Serial.println("Verde"); } Serial.println(); //Espera para a proxima leitura e reiniciar o processo delay(50); } void cor() { //Rotina para leitura das cores RGB digitalWrite(s2, LOW); digitalWrite(s3, LOW); //Regista o valor da cor vermelha na variavel ver ver = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); //Regista o valor da cor azul na variavel azul azul = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); //Regista o valor da cor verde na variavel verde verde = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); }
Links
- Identifique cores com o Sensor de Cor TCS3200 e Arduino
- Biblioteca do Arduíno para o sensor de cor TCS320 e TCS3200
- Arduino Color Detection


1 Comment
Os comentários estão fechados.