Con este modulo es posible identificar el color que se ponga frente a ella, indicando la cantidad de Rojo (0-255) Verde (0-255) y Azul (0-255)
Características:
1.Chip: TCS230
2.Input voltage: DC 3V-5V,Output frequency voltage: 0 ~ 5V
3.Use bright white LED lights ,can be connected directly with Microcontroller ,Static detection of
the measured object color
4.Best detection distance: 10mm
5.Chip pins all has drawn for standard 100, put the needle (2.54 mm), mil-convenient for bitmap board
6. PCB size: 31.6 (mm) x24.4 (mm)
Codigo de Ejemplo:
#include <TimerOne.h>
#define OUT 8
#define S2 9
#define S3 10
#define S0 11
#define S1 12
#define OE 13
#define Filters_R 0
#define Filters_G 1
#define Filters_B 2
int Count[3] = {0};
int G_flag = 1;
void setup()
{
TCS230_init();
Select_Filters(3); //default, no fiter
Timer1.initialize(); // default 1S
Timer1.attachInterrupt(callback);
Serial.begin(9600);
}
void TCS230_init()
{
pinMode(OUT, INPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(OE, OUTPUT);
digitalWrite(S0, LOW); // 2% of Output Frequence
digitalWrite(S1, HIGH);
digitalWrite(OE, LOW);
}
void Select_Filters(int RGB)
{
switch(RGB)
{
case Filters_R: //Red
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
Serial.println("-----select Red color");
break;
case Filters_G: //Green
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
Serial.println("-----select Green color");
break;
case Filters_B: //Blue
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
Serial.println("-----select Blue color");
break;
default: //Clear(no filter)
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
Serial.println("-----no filter");
break;
}
}
void Measure_Count(int RGB ) //For white balance correction
{
int tmp = 0;
while(1)
{
if(digitalRead(OUT) == 1)
{
if(G_flag == 0)
{
Count[RGB] = tmp;
Serial.print("tmp=");
Serial.println(tmp);
break;
}
tmp++;
}
}
}
void callback()
{
G_flag = 0;
}
void loop()
{
Timer1.restart();
for(int i=0; i<3; i++)
{
Select_Filters(i);
Timer1.setPeriod(10000); //set 10ms
Measure_Count(i);
G_flag = 1;
Serial.println(Count[i]);
}
delay(3000);
}