



O sensor de cor RGB TCS34725 pode detectar cores como Vermelho, Verde e Azul (RGB é do nome respectivo dessas cores em inglês) e, também, luz clara. O sensor possui um filtro IR embutido na placa, que minimiza o espectro Infravermelho. Este funciona através do protocolo de comunicação I₂C, que facilita o uso do sensor por se tratar apenas de dois fios para a comunicação. Segundo a fabricante, esse sensor é bom para projetos de: medição da temperatura de luz clara, classificação de cores de produtos ou até controle de luzes ambientes.
O circuito será o seguinte:
O código será o seguinte:
//Incluindo as bibliotecas
#include <Adafruit_SSD1306.h>
#include "Adafruit_TCS34725.h"
//Configurando o endereço do sensor e do display
Adafruit_TCS34725 sensTCS = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_300MS, TCS34725_GAIN_1X);
Adafruit_SSD1306 display(-1);
void setup() {
//Inicia o display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.begin(9600);
//Inicia o sensor e diz se ele conectou ou não
if (sensTCS.begin()) {
Serial.println("Sensor conectado");
} else { //Se o sensor não conectou , mostra a mensagem de erro
Serial.println("Sensor com problema");
}
//Limpa o display antes de começar
display.clearDisplay();
}
void loop() {
//declaramos as variáveis
uint16_t r, g, b, c, TempCor, LUX;
//O sensor lê os valores do Vermelho (R), Verde(G), Azul(B)
sensTCS.getRawData(&r, &g, &b, &c);
//Calcula a temperatura da cor
TempCor = sensTCS.calculateColorTemperature(r, g, b);
//Calcula a luminosidade
LUX = sensTCS.calculateLux(r, g, b);
Serial.print("Vermelho(R): ");
Serial.print(r); //escreve no monitor serial o valor do Vermelho
Serial.print(" Verde(G): ");
Serial.print(g);//escreve no monitor serial o valor do Verde
Serial.print(" Azul(B): ");
Serial.print(b);//escreve no monitor serial o valor do Azul
Serial.print(" Temperatura: ");
Serial.print(TempCor); //escreve no monitor serial o valor da Temperatura da Cor
Serial.print(" Intensidade: ");
Serial.println(LUX); //escreve no monitor serial o valor da intensidade luminosa
//escreve no display a cor referente a leitura do sensor
if (c < 5000) {
if (r > b && r > g && r > 100) { // faz a comparação dos valores para ver se é vermelho
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20,8);
display.println("Vermelho");
display.display();
delay(100);
}
else if (g > r && g > b && g > 100 ) { // faz a comparação dos valores para ver se é verde
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(30,8);
display.println("Verde");
display.display();
delay(100);
}
else if (b > r && b > g && b > 100) { // faz a comparação dos valores para ver se é azul
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(30,8);
display.println("Azul");
display.display();
delay(100);
}
}
}
Nesse exemplo, ele compara se o Verde(G) é maior do que o Vermelho(R), compara se o Verde(G) é maior que o Azul(B), e se o valor dado é maior do que 100.
|
Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200