Sensor de cor TCS230 / TCS3200 com Arduino
Neste post vamos mostrar como utilizar o Arduino para montar um sistema de reconhecimento de cores usando o sensor de cor TCS230 / TCS3200.
Esse módulo usa o sensor TCS230 (datasheet), que é composto por 64 fotodiodos. Desses 64 fotodiodos, 16 tem filtros para a cor vermelha, 16 para a cor verde, 16 para a cor azul e 16 não tem filtro.
Distribuídos uniformemente sobre o sensor, esses sensores captam a luminosidade, filtrando as cores, e geram na saída um sinal de onda quadrada com as informações sobre a intensidade das cores vermelho (R = Red), verde (G = Green) e Azul (B = Blue).
Como no módulo mostrado acima, o sensor TCS230 geralmente vem montado em conjunto com quatro leds brancos para iluminação, e oito pinos para conexão.
Conexão do sensor de cor TCS230 no Arduino
O módulo aceita alimentação de 3 à 5 volts e são utilizados 5 pinos para conexão ao Arduino: os pinos de controle S0, S1, S2, S3, e o pino OUT, que é o responsável pelo envio das informações.
O pino OE (Output Enable, ou saída habilitada/ativada) deve ser ligado ao GND, já que o módulo vai enviar informações continuamente ao Arduino.
No circuito adicionei 3 leds nas cores correspondentes, para que acendam quando determinada cor for reconhecida pelo sensor. Apesar de trabalhar nesse experimento apenas com as 3 cores primárias, nada impede que outras combinações sejam usadas no programa, de acordo com os níveis do sinal RGB.
No programa, os pinos S0 e S1 são colocados em nível alto e então são alternados os estados dos pinos S2 e S3, que determinam qual fotodiodo será ativado. Veja na tabela abaixo as combinações que determinam o tipo de frequência de saída e também o padrão de ativação dos fotodiodos:
// Programa : Detector de cores usando modulo TCS230 // Alteracoes e comentarios : Arduino e Cia // // Baseado no programa original de Martin Mason //Pinos de conexao do modulo TCS230 const int s0 = 8; const int s1 = 9; const int s2 = 12; const int s3 = 11; const int out = 10; //Pinos dos leds int pinoledverm = 2; int pinoledverd = 3; int pinoledazul = 4; //Variaveis que armazenam o valor das cores int red = 0; int green = 0; int blue = 0; void setup() { pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); pinMode(pinoledverm, OUTPUT); pinMode(pinoledverd, OUTPUT); pinMode(pinoledazul, OUTPUT); Serial.begin(9600); digitalWrite(s0, HIGH); digitalWrite(s1, LOW); } void loop() { color(); //Chama a rotina que le as cores //Mostra no serial monitor os valores detectados Serial.print("Vermelho :"); Serial.print(red, DEC); Serial.print(" Verde : "); Serial.print(green, DEC); Serial.print(" Azul : "); Serial.print(blue, DEC); Serial.println(); //Verifica se a cor vermelha foi detectada if (red < blue && red < green && red < 100) { Serial.println("Vermelho"); digitalWrite(pinoledverm, HIGH); //Acende o led vermelho digitalWrite(pinoledverd, LOW); digitalWrite(pinoledazul, LOW); } //Verifica se a cor azul foi detectada else if (blue < red && blue < green) { Serial.println("Azul"); digitalWrite(pinoledverm, LOW); digitalWrite(pinoledverd, LOW); digitalWrite(pinoledazul, HIGH); //Acende o led azul } //Verifica se a cor verde foi detectada else if (green < red && green < blue) { Serial.println("Verde"); digitalWrite(pinoledverm, LOW); digitalWrite(pinoledverd, HIGH); //Acende o led verde digitalWrite(pinoledazul, LOW); } Serial.println(); //Aguarda 2 segundos, apaga os leds e reinicia o processo delay(2000); digitalWrite(pinoledverm, LOW); digitalWrite(pinoledverd, LOW); digitalWrite(pinoledazul, LOW); } void color() { //Rotina que le o valor das cores digitalWrite(s2, LOW); digitalWrite(s3, LOW); //count OUT, pRed, RED red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); //count OUT, pBLUE, BLUE blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); //count OUT, pGreen, GREEN green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); }
Carregue o programa e aproxime objetos de diferentes cores ao sensor e o led correspondente irá acender. Também é gerada uma saída como essa no serial monitor, onde você pode ver exatamente os níveis de sinal das cores detectadas:
Abaixo você confere o vídeo do projeto em funcionamento:
Gostou? Confira outros posts com sensores aqui mesmo no Arduino e Cia!
Olá primeiramente obrigado pelo tutorial, muito util.Mas notei um erro no seu uma linha de código está escrito:
if (red < blue && red < green && red > 50)
{
Serial.println("Vermelho");
mas na sua leitura serial pude notar:
Vermelho:20 Verde:35 Azul : 32
Vermelho
O que seria um caso que não detecteria o vermelho, segundo o algoritmo. Não seria red <50?
Boa noite Vinicius, e obrigado pela visita.
Esse red>50 que eu coloquei no programa, na verdade, foi uma forma do circuito não ter "falsos acionamentos", porque eu notei que qualquer nível de vermelho, até mesmo o da luz de uma lâmpada, estava acionando o led vermelho sem necessidade, foi o que aconteceu quando eu tirei o print screen da leitura serial.
Na hora de montar o circuito com os leds, eu adicionei esse red>50 para que o led só acendesse caso algum objeto vermelho fosse colocado em frente ao sensor.
Como você pode ver, esse circuito ainda precisaria de alguns ajustes para ser mais preciso, mas basicamente é isso. rs.
Abraço e obrigado !
obrigado pelas postagens, esse sensor tem uma biblioteca pra outros funcionamentos?
Boa tarde,
Obrigado. Com relação à biblioteca, não encontrei nenhuma específica para esse sensor.
Abraço !
Olá!
estou desenvolvendo uma aplicação científica com sensoriamento de cor e vou utilizar este código como base. está bem leve e pratico para o projeto.
manterei-os informados sobre o andamento
alguma forma especial para citar os créditos ?
abç
Boa noite,
Obrigado pela visita. Se puder mencionar o site Arduino e Cia, agradeço. A autoria do post é de Adilson Thomsen.
Aguardo informações sobre o andamento do projeto. Sucesso.
Abraços e obrigado !
Boa noite, eu fiz este experimento e não lia nenhuma cor. Tem alguma ideia de qual é o problema?
Boa noite,
Nos meus testes eu tive que praticamente encostar o objeto no sensor para que a cor fosse detectada. Talvez algum sistema utilizando lentes melhore esse processo de leitura.
Abraço !
Boa noite.
eu utilizei esta programação no arduino,os leds etc. Porem ao funcionar,o led azul ficava ligado como se o sensor estivesse detectando esta cor.acredito que seja algo na programação.
Vc tem alguma ideia do que possa ser?
Bom dia,
Eu tive um problema parecido, mas com a cor vermelha. O que eu descobri foi que a luz ambiente, seja ela a luz do monitor ou uma lâmpada fluorescente, influi nos resultados.
De qualquer forma, veja o tipo de saída que há no serial monitor, e se necessário altera o valor no final dessa linha :
if (red < blue && red < green && red > 50)
Abraço !
Olá, pretendo utilizar este sensor na análise da coloração de líquidos.
Para isso pretendo incluir algumas ou algumas combinações de cores, você poderia me informar de como incluir isto na programação ja feita?
Desde já agradeço!
Bom dia,
O que você pode fazer é colocar o sensor em frente ao objeto/liquido na cor XYZ, e anotar os valores que aparecem no serial monitor, por exemplo, digamos que ele mostre :
Vermelho : 30 Verde : 20 Azul : 10
Depois disso, você deve colocar um IF no programa, mais ou menos assim :
IF (red = 30 & green = 20 & blue = 10)
{
cor_detectada = "XYZ"
}
E fazer isso para cada cor que você quiser detectar.
Espero ter ajudado. Abraço !
Ajudou sim, muito obrigado!!
Hello
Program is working .Thank you for that good codes (only you must change red color line ….<50 details first comments
I want ask that how can read other colour for example yellow ,black and white etc
thanks for circuit and codes (or algoritms)
regards
Hello,
Thanks for the message. For do this you will need to check exactly how much red, green and blue you got when pointing the sensor to the object.
I´m only concerned about the precision of the sensor. Maybe you need to do something to get a best "read" of the color.
Maybe a blackbox and lens ? Is an option. 🙂
Regards !
como faço para o arduino fazer as médias das medições e tomar decisões a partir da média e não de medições absolutas como está no programa?
Boa tarde Guilherme,
Você pode fazer isso por meio de um loop, guardando por exemplo 10 valores, depois calcular a média.
Eu usei isso nesse post aqui, mas para medir a temperatura :
http://www.arduinoecia.com.br/2013/03/display-lcd-16×2-e-sensor-de.html
Eu faço a leitura da temperatura 8 vezes, nessa parte do código :
// Loop que faz a leitura da temperatura 8 vezes
for(i = 0;i<=7;i++)
{
samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
//A cada leitura, incrementa o valor da variavel tempc
tempc = tempc + samples[i];
delay(100);
}
// Divide a variavel tempc por 8, para obter precisão na medição
tempc = tempc/8.0;
Veja se ajuda.
Abraço !
help me please download scheme to mail [email protected]
Hi !
Circuit and program sent by email.
Best regards !
Muito Obrigado Amigao, estava com dificuldade e o seu code caiu como uma luva,
Aplicacao: Pulseira que detecta dinheiro para deficientes visuais, !
Um projeto final de uma Amiga, funcionou perfeitamente Gracas a ajuda de vcs,
Mais uma X Obrigado
Oi Alexandre !
Muito interessante o seu projeto. Bom poder ajudar. 🙂
Abraço !
help me please i want the program and shematic
my email [email protected]
Hi !
Email sent.
Regards !
Adilson, a minha maior duvida esta no acionamento dos pinos s2 e s3. Se eu quiser identificar qualquer tipo de cor, durante a programação eu tenho que alternar o estado dos pinos para LL, LH, HL e HH?
Obrigado
Ítalo.
Poderia me enviar um email [email protected]
OI Ítalo,
Isso mesmo. Para cada cor você vai ter a intensidade de Vermelho, Verde e Azul. Basta você armazenar esses 3 valores para a cor que você quer identificar.
Abraço !
ola boa noite Arduino e Cia,eu não entendi quando vc falar que deve alternar os pino LL,LH,HL, HH e armazenar elas,eu devo colocar essa condição uma vez de cada vez ou colocar de uma vez só,me desculpa pela pergunta sou novo nesse ramo.
Boa noite,
O programa já faz isso, da linha 85 à linha 98. Ele lê os valores de vermelho, verde e azul e armazena nas variáveis red, green e blue.
Abraço !
Adilson, na linha de comando abaixo, ate onde pude entender, a variavel red vai receber o valor dos pulsos no pino out (lidos pela função pulseIn). Ja o digitalRead(out) vai verificar o estado de out (alto ou baixo). Não entendi a partir do == HIGH ? LOW : HIGH). por que vc usa essa interrogação e depois os dois pontos? E por que vc coloca high, low e high novamente.
Peço desculpas por encomoda-lo novamente, mas necessito entender o funcionamento do codigo e não apenas copia-lo.
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
Muito obrigado.
Ítalo.
Boa noite Ítalo,
Não é incômodo nenhum, só espero consegui sanar a sua dúvida. 🙂
O ?: é um operador condicional, que retorna um dos dois valores (LOW ou HIGH) se a condição for FALSE ou TRUE. Você encontra mais informações e exemplos nesse link :
http://www.learnconline.com/2010/03/conditional-operator-in-c-programming-language.html
Abraço !
Muito obrigado!
Abraço!
Boa tarde!
A identificação do digitalRead(out) como HIGH ou LOW é obrigatória ou seria uma otimização?
Pergunto, pois estou trabalhando com um projeto no mblock com alunos e o comando disponível não passa essa opção como parâmetro e envia sempre HIGH com opção de tempo de espera.
Obrigado,
can u send me whole topic in english plzzz
Hi !
Please send me your email address using the contact form in the right side of this page.
Regards !
[email protected] this is my email
i just need the simulation file not the picture because i need to use it for my college project
thank you for considering my request .
Hi Akram,
I sent an email on december/2014, with the code and the schematic. Did you receive ?
Regards.
Ola Boa noite, gostaria se e possível ligar no Arduíno uno um sensor de cores e também um motor de passos, o sensor ao identificar um cor específica ativa o motor, depois de um tempo o motor gira inversamente, abrigado, gostei muito do seu projeto, parabéns!
Boa noite Cristiano,
É possível sim, só não tenhum nenhum projeto pronto com isso ainda, mas a ideia é interessante.
Obrigado e um abraço !
estou com um projeto como esse!
estou usando um motor de passo, e uma ponte H porque o arduino não tem potencia suficiente para ligar o motor sozinho e ele roda para um lado ou para o outro depedendo da cor que o sensor reconhece!
Projeto( Plataforma de Separação Por cor).
abraços;
e obg pelos post….
Boa noite,
É possível utilizar a mesma lógica do código para a programação em FPGA?
Desde já agradeço.
Boa noite,
Teoricamente sim, você só precisa adaptar o código.
Abraço.
hola muy buen tutorial, te felicito… te puedo preguntar si se puede sensar otro color como por ejemplo el color negro(preto) o amarillo(amarelo) como podría modificarlo, perdon soy nuevo en el mundo de la programacion y me cuesta entender.. tambien funciona con un sensor TCS3200… desde ya muchas gracias pro tu ayuda amigo.. saludos
Buenas tardes,
Gracias. Sí, funciona con sensor TCS3200.
Lo que tienes que hacer es escribir el valor de rojo, azul y verde al acercarse a un sensor de objetos amarilla, y el uso de estos valores en un IF dentro del programa.
Supongamos que acercarse a un sensor de objetos de color amarillo y tiene los valores de 30 para el rojo, 10 para el azul y 40 para el verde (comprobar estos valores en el monitor de serie), el SI se vería así:
//Verifica se a cor amarela foi detectada
else if (red = 30 && blue = 10 && green = 40)
{
Serial.println("Amarelo");
}
Espero que esto ayude.
Saludos!
muy agradecido hermano, me ayudo y si funciona… gracias de verdad.
Olá tudo bem?Parabéns pela matéria
Gostaria de saber se é possível pegar somente uma cor através deste sensor, como por exemplo o verde? Para está cor, eu posso ligar o S0, S1, S2e S3 em 5 volts e somente pegar o número de pulso funciona?
Muito obrigado
Eduardo
boa noite Arduino e Cia, se eu nao ligar os pinos S0 e S1 pode mudar algo na hora do sensor pegar as cores
Boa noite,
sim, recomendo ligar os pinos S0 e S1.
Abraço !
Ola, o seu artigo me ajudou muito a entender o funcionamento do sensor de cor, obrigado. Contudo eu acabei modificando bastante o codigo para poder detectar melhor as cores. Foram duas as principais mudanças, primeiro a medida dos pulsos tomei a media de alguns pulsos de forma a minimizar erros de uma unica leitura. Segundo converti as cores RGB para HSL. Nesse formato, a cor verde, por exemplo, fica a 120 graus. Então caso o H (do HSL) fique nas proximidades de 120 ele detecta como verde. Caso queira que eu mande o código para compartilhar com demais visitantes do site me avise.
Masaki
Eu gostaria de ver o seu código se for possivel obrigado.
Ola, o seu artigo me ajudou muito a entender o funcionamento do sensor de cor, obrigado. Contudo eu acabei modificando bastante o codigo para poder detectar melhor as cores. Foram duas as principais mudanças, primeiro a medida dos pulsos tomei a media de alguns pulsos de forma a minimizar erros de uma unica leitura. Segundo converti as cores RGB para HSL. Nesse formato, a cor verde, por exemplo, fica a 120 graus. Então caso o H (do HSL) fique nas proximidades de 120 ele detecta como verde. Caso queira que eu mande o código para compartilhar com demais visitantes do site me avise.
Masaki
Boa noite Masaki,
Obrigado. Eu planejava melhorar esse código mas realmente não tive tempo de ver isso. Se puder me mandar, agradeço. Faço um teste e complemento o post, será muito útil para os outros leitores.
Abraço !
Você postou esse código? Gostaria de testá-lo.
Bom dia, Masaki ou Arduino e Cia poderiam compartilhar o código-fonte em que as cores são convertidas de RGB para HSL, por favor? Muito obrigado!
https://github.com/masakik/arduino-cor
Olá Boa Noite!
Por que as portas semelhantes S0 e S1 / S2 e S3 não são ligadas nas mesmas portas do arduino?
s0 = 8;
s1 = 9; PWM
s2 = 12;
s3 = 11; PWM
Obrigada
Boa noite Jessica,
Sim, elas são ligadas em portas PWM, mas na verdade o estado delas é apenas alto (High) ou baixo (Low), poderiam ser ligadas em outras portas do Arduino, sem problemas.
Abraço!
hola buenas noches queria saber porque no me sale la ventana donde se pueden ver los niveles de señal exactas de colores detectados y si me podria ayudar de antemano gracias
hola buenas noches queria saber porque no me sale la ventana donde se pueden ver los niveles de señal exactas de colores detectados de antemano gracias
hola al probarlo no me sale la ventana donde se pueden ver los niveles de señal exactas de colores detectados quería ver si me podría ayudar con esto de antemano gracias
Olá! Parabéns pelo post, muito bom mesmo.
Gostaria de saber se é possível detectar a cor amarela e se for possível o que acrescentaria no código?
Boa noite Larissa,
É possível sim. O que você tem que fazer é ver qual nível de vermelho, verde e azul é detectado pelo sensor, e fazer um IF que testa isso.
Exemplo: você aproxima um objeto de cor amarelo e faz a leitura dos sensores, dái ele mostra:
Vermelho: 40
Verde : 50
Azul: 20
Ai vc monta um IF mais ou menos assim:
IF (vermelho == 40 & verde == 50 & azul == 20)
{
Serial.println("Cor amarela detectada")
}
É mais ou menos isso. 🙂
Abraço!
Boa tarde! Obrigado pelo ótimo artigo e pelo código. Estou fazendo um trabalho com esse sensor para um cliente e ainda estou estudando o datasheet do módulo, bem como a matematica envolvida para transformar o RGB em CIELAB, mas percebi uma coisa na confiuguração que vc usou e vendo os comentários acredito que possa ser o problema do falso acionamento do vermelho. Pela configuração usada com S0 e S1 em HIGH, a frequencia de sensibilidade é de 600KHz, o que acredito ser muito para detectar com o pulseIn() do Arduino. Vc chegou a testar os outros 2 niveis em 20% e 2%? Acho q o ideal seria usar o 2% para a frequencia de operação ficar entre 10Khz e 12Khz, que é mais tranquilo de trabalhar, pois teríamos taxas de amostragens na escala de 10uS, contra 1,6667uS da configuração em 100%. Acredito ser esse o problema da sensibilidade e nessa taxa de amostragem de 1,6uS por sampling o Arduino não pode fazer mais nada, senão vai perder leitura. Talvez isso resolva o problema de "falso acionamento" da cor vermelha. Vou fazer uns testes e volto a postar, se houver interesse de sua parte. Qqer coisa só me avisar no email [email protected] — Abcs Renato Aloi
Boa noite Renato !
Tudo bem ? Rapaz, sinceramente eu não testei mais esse sensor, apesar de estar na minha lista de "posts a melhorar". Só testei ele com 100%, mas o que você falou faz sentido. Se você puder contribuir, agradeço. Vou ter mandar um email daí conversamos.
Obrigado pela visita. E também pelos seus vídeos, aprendi muito com eles. 🙂
Abraço!
Obrigado! Fico feliz em saber que meus videos ajudaram de alguma forma! Obrigado mesmo! Eu avancei nos estudos e realmente a função pulseIn() trabalha na faixa "from 10 microseconds to 3 minutes" (https://www.arduino.cc/en/Reference/PulseIn), então 1,6 microsegundos é muito rápido para a função. Vou ajustar o código pra funcionar na fequencia dos 2% e lhe passo como forma de contribuição. Me escreve um email para mantermos contato e eu lhe passar o código atualizado. Parabéns pela contribuição para a comunidade Arduino q vc presta. Eu sei o trabalho q dá 🙂 Valeu! Abcs Renato
Oi Renato!
Show. valeu pelo retorno. Te envio o email em seguida.
Abraços e obrigado!
Bom dia, Renato!
Com a escala em 2% o sensor leu os valores corretos? Coloquei nessa escala onde a frequência é de 12KHz e obtive valores na faixa de 1000 e negativos, sabe me responder o que pode ser?
Obrigado
Gabriel
Boa tarde! Estou desenvolvendo um projeto de misturador de tinta! Pode me auxiliar na programação e no circuito? Obrigado!
Olá, estou desenvolvendo um robô na minha escola(CEFET) para competir na OBR e pensei em utilizar este sensor de cor para fazer leitura das faixas no chão, mas estou em duvida se eu consigo diferenciar, branco/preto/verde com ele a uma distancia de cerca de 2 a 3 centímetros, também gostaria de saber se existe algum outro sensor de cor melhor(para arduino) e se a como você me enviar um e-mail com o datasheet do modulo o circuito e o codigo, desde já agradeço;
[email protected]
Boa Tarde, porque os valores de rgb são inversamente proporcionais? a cor indicada é sempre a de menor valor.
Boa noite, alguém sabe me dizer se o tempo de resposta deste sensor é bom?
Porque preciso desenvolver um projeto em que o arduino reconheça o objeto pela cor, porém esses objetos irão passar a cada dois segundo em frente ao sensor… a Duvida é se ele será capaz de fazer essa leitura, desde já obrigado..
Bom dia!
Necessito de uma programação para que o robô de arduino vire para esquerda quando detectar a cor verde. Poderia me enviar uma programação?
Agradeço desde já!
Olá!
Comprei o módulo a não muito tempo e estou desenvolvendo um projeto de identificador de cores. Gostaria de saber se posso fazer com que o módulo reconheça outras cores além do RGB, e se sim como eu aplicaria isso na programação. Não sei se existe uma tabela de valores referente a cada cor, mas enfim, desde já agradeço.
Boa tarde,
tente esta biblioteca, por favor: https://github.com/Swap-File/tron-suit/tree/master/Disc/Software/Libraries/MD_TCS230
Abraço!
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 que 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 identificar corretamente as cores, ou se módulo esta apresentando falhas e este seria uma forma de sinal que a identificaçã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
#define S0_OUT 8
#define S1_OUT 9
#define S2_OUT 12
#define S3_OUT 13
#define OE_OUT 2
MD_TCS230 CS(S2_OUT, S3_OUT,S1_OUT, S0_OUT, OE_OUT);
colorData rgb;
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);
}
Oi Tatiane,
Quais bibliotecas vc usou ? Não veio no comentário…
Abraço!
Olá, montei um sensor de cor tcs3200, porém mesmo antes de eu colocar algum objeto sobre ele, ele fica enviando automaticamente valores R,G,B para o serial monitor, por que será que isto esta acontecendo?
Oi Matheus,
Provavelmente é a incidência de luz sobre o sensor. Faça testes com diferentes fontes de luz (lanterna, led, fluorescente, sol, etc) e veja o que acontece. 🙂
Abraço!
Opa muito obrigado, também duvidei que fosse isso. Será que no escuro ou com pouca iluminação ambiente os valores serão mais condizentes com o objeto? O que vc acha? Agradecido.
Oi Matheus,
Creio que sim, inclusive para gravar o vídeo do Youtube eu utilizei iluminação reduzida…
Abraço!
Ok obrigado. Última pergunta, o sensor de cor tcs3200 ele pode funcionar dando os valores de RGB sem necessariamente eu ligar com os leds na placa protoboard como vc colocou no post? Obrigado.
Oi Matheus,
Pode sim, mas para isso existe até uma biblioteca que já te dá os valores em RGB na saída. Só não testei ainda…
Abraço!
Olá, fiz os testes e o sensor está mostrando valores acima de 255, por exemplo, as vezes ele mostra 456, 640 os niveis de RGB, e o máximo não teria que ser até 255? Por que será que isto está acontecendo? Será que eu preciso fazer alguma calibração? Me ajude, por favor.
Olá, teria como calibrar o sensor para que ele informasse valor mais preciso?
Sabe como faríamos isso?
Obrigado.
Oi, tem como alterar a frequência para ler outras cores como o roxo por exemplo?
Olá, gostaria de ter alguma ideia sobre como fazer com que ele reconheça qualquer cor, eu passando qualquer objeto na frente dele e ele reconhecendo isto e mostrando no led rgb. Obrigado
Ola !
Montei o Sensor e Código conforme descrito, porem as tres cores apresentam praticamente os mesmos valores, os valores se alteram de acordo com a tonalidade, mas todos se alteram praticamente idênticos quanto mais escuros mais alto são os valores e quanto mais escuros mais alto os valores
sera que o sensor não esta respondendo corretamente ? obrigado
Como faço para identificar outras cores? pois percebi q ele nao imprime os valores reais de R,G,B…. Há momentos que o valor passa de 300.
Uma duvida, em um processo continuo, tipo, tem uma maquina que enrrola um metro de tecido por minuto, queria criar algo que ao passar essa linha vermelha de mais ou menos 1cm o sensor parasse a maquina de enrrolar tecido.
esse sensor será de detecta o movimento continuo?
Boa noite,
Teria que fazer um teste, mas a princípio não vejo problemas.
Abraço!
Adilson
oi Bom dia eu faço química, e estou tentando montar uma plataforma de identificação de cores atraves do arduino junto a este sensor, poderiam me ajudar em relação aos codigos? não conheço muito referente a esta area
Boa tarde! Alguém sabe me dizer se a resposta do sensor, com relação ao valor das cores absorvidades, está na escala 0 a 255? Ou 0 a 1023? Preciso disso pra um projeto da faculdade.
Boa noite, gostaria de saber como calibrar o sensor usando a Library do próprio arduino, lembrando que estou utilizando o sensor GY-31 que não possui o pino OE? Fico no aguardo!! Att.
posso conectar dois sensores nas mesmas portas digitais?