Manual
do
Maker
.
com
Existem algumas possibilidades de fazer detecção de cores de baixo custo utilizando Arduino. Atualmente existem alguns módulos bastante baratos, dentre eles, o TCS230. Esse dispositivo (conjunto com o CI) tem sugestão de formato especificada no datasheet, por isso é muito comum encontrar o mesmo formato de diversos integradores. Já escrevi um artigo de deteção de cores com um modelo que eu mesmo desenvolvi, sem considerar as curvas das cores. Se tiver interesse, eis o artigo escrito para utilização com PIC e Arduino.
Não é complicado escrever tudo diretamente no sketch principal, mas uma biblioteca vem bem a calhar. Para isso, uma boa opção é essa biblioteca, que possui um exemplo bastante simples de utilização. Clone a biblioteca com o git ou baixe o zip, então descomprima-a no diretório do Arduino, dentro de Libraries; apenas isso. Essa biblioteca tem uma dependência da TimerOne, utilizada para fazer interrupções de forma fácil. Se não conhece a TimerOne ou não tem noção de timers e interrupções, leia esse outro artigo, onde falo a respeito. Pela própria IDE do Arduino, em Library Manager você encontra a TimerOne para instalação.
O sketch de exemplo se chama "simple read" e estará disponível no menu File--Examples--TCS320. Abra-o e troque os pinos definidos na inicialização do dispositivo:
tcs230->initialize(3, 12, 11);
O primeiro pino deve ser o 2 ou 3 no Arduino UNO e é o pino de OUTPUT, devido à necessidade de manipulação de interrupções. Depois são os pinos S2 e S3, cujo pinos você pode definir conforme sua necessidade ou disponibilidade. Só preste atenção no pinout da board. Nela se encontram silkados os nomes de cada um dos pinos, portanto não é necessário um wiring de exemplo. O outro detalhe que deve ser notado; o pino OE (Output Enabled) deve ir a GND.
Pra finalizar, você precisa adicionar ao código os pinos S0 e S1, configurados a uma frequência de 2%. Pelo datasheet, 2% é equivalente a LOW e HIGH respectivamente, então eu adicionei da seguinte maneira em setup():
...
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
tcs230->initialize(3, 12, 11);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
...
Feito conforme descrito anteriormente, agora basta subir o sketch. Coloque algo branco sobre o sensor e então abra o terminal serial e aguarde a calibração, onde deverá aparecer 255 para Red, Green e Blue. A partir daí, comece a brincar com o que quiser tirar amostra. Testei rapidamente com um azul água em tom pastel e por incrível que pareça o sensor tentou imitar o fosco da cor, escurecendo-a com acinzentamento.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.