Sensor de Cores.

article featured image

Nesta aula vamos aprender a ligar e a programar um sensor de cores no nosso Arduíno.

Nas duas últimas aulas, aula 13 e aula 14, aprendemos o funcionamento de um LED RGB, verificamos que com este podemos obter diversas cores. Hoje, em vez de colocarmos as cores de forma analógica, isto é, indicarmos a luminosidade de cada uma das três cores, vamos utilizar um sensor que faz essa leitura e envia os valores para o nosso LED RGB.

Mas, antes de tudo, é necessário entender o funcionamento deste sensor. Neste exemplo vamos usar o TCS230/TCS3200 Color Sensor Color Recognition Module, ele possui oito pinos, destes vamos utilizar sete.

Pino do Sensor de CorPino do Arduíno
S0GND
S15V
S2pino  7
S3pino 8
OUTpino 4
VCC5V
GNDGND

Para além destas ligações vamos ainda utilizar o circuito elétrico da aula anterior.

A leitura dos valores é feita através dos pinos S2 e S3. Como sabemos, cada uma das cores que vamos obter é formada pelos três LEDs (vermelho, verde e azul). Desta forma torna-se preponderante fazer a leitura do objeto em cada uma destas cores. Para que esta seja possível é necessário definir os pinos S2 e S3 da seguinte forma:

Pino S2Pino S3Lê a Cor
LOWLOWVermelho
LOWHIGHAzul
HIGHHIGHVerde

De ter em atenção que cada uma das cores é lida de forma independente.

O valor obtido desta leitura será entre 0 e 2.048. No entanto, já vi situações em que este valor está situado entre 0 e 102.400, nesta situação é necessário ter atenção ao tipo de variável que vamos definir, pois esta tem de ser do tipo unsigned int visto que se a definirmos como int só vai guardar valores entre 0 e +/- 32.768, o que nesta situação não dá. Assim, o tipo indicado é unsigned int que nos permite guardar valores até 4.294.967.295.

Após a leitura vamos ter de converter o valor num formato entre 0 e 255. Se o valor estiver compreendido entre 0 e 2.048 dividimos esse valor por 8, caso contrário, se o valor estiver compreendido entre 0 e 102.400, dividimos por 400 e retiramos 1, já que a divisão de 102.400 por 400 dá 256.

Encontrado o valor temos de o subtrair a 255 e é neste momento que encontramos a luminosidade da cor.

Entende-se então que quando mais baixo for o valor lido pelo sensor mais alta é a luminosidade do LED e vice-versa.

 

Depois de entendido o funcionamento do nosso leitor, vamos passar ao código.

Como sempre a primeira coisa a fazer é definir as variáveis. Nesta situação vamos definir para os pinos do LED RGB, para os pinos S2, S3 e OUT do sensor e por último variáveis auxiliares que nos vão ser úteis nos cálculos;

No  void setup() damos inicio à porta série, vai ajudar a visualizar alguns valores, e definimos o tipo de pinMode de cada uma das portas;

Agora, no void loop(), vamos ler cada uma das cores (vermelho, verde e azul) e converter esse valor para um valor entre 0 e 255;

Depois de termos as três luminosidades temos que as escrever e até mesmo monitorizá-las;

A partir deste momento o nosso miniprojeto já deve funcionar. No entanto, poderá ser necessário fazer alguns reajustes para que os resultados sejam melhores. Um dos ajustes a fazer, antes de escrever os valores, é verificar qual a cor mais fraca e coloca-la a zero, a mais forte a 255 e a intermédia reduzi-la a metade;

À partida, ainda podemos verificar que as cores azul e verde ainda estão um pouco fortes, poderá ser necessário ainda fazer um reajuste final;

Este mini-projeto já deve impressionar os vossos familiares e amigos.

Espero que tenham gostado da aula de hoje e cá vos espero para a próxima. Obrigado.