顏色感測器TCS3200



小編這次拿了一個一直想使用的顏色感測器,以往只有感測黑色、白色或灰度,這次心血來潮想製作一個造型燈,所以就上網查了一下Arduino能用的顏色感測器,發現大家好像都賣這個TCS3200,心想應該不雷吧!於是乎就讓我們來使用它吧~

材料清單:

Arduino UNO

TCS3200 顏色傳感器模組

7條杜邦線(公/母)


接線圖:

TCS3200的OUT接D2、S0接D3、S1接D3、S2接D3、S3接D3、GND接GND、VCC接5V。

下圖為示意圖,實際元件較為不同,但接線位子一樣。

此圖繪自Fritzing


使用前我們來參考一下 TCS3200的 Datasheet,如下表,當S0與S1各自的HIGH與LOW組合會影響輸出頻率。而S2與S3各自的HIGH與LOW組合會產生紅色、藍色、綠色的濾波器。

每個顏色是由三原色(RGB)不同比例組成的,在感測一個物體的顏色時,會輪流開啟紅色、藍色、綠色的濾波器,開起紅色濾波器時只允許紅色光通過,此時接收紅色光的數值。開起藍色濾波器時只允許藍色光通過,此時接收藍色光的數值。綠色依此類推,最後蒐集三個顏色的數值,所組成的就是該物體的顏色。


參考程式:

//=====================================================

//TCS3200 pins connected to Arduino

int out = 2;

int s0 = 3;

int s1 = 4;

int s2 = 5;

int s3 = 6;


int RedColor = 0;

int GreenColor = 0;

int BlueColor = 0;

void setup() {

Serial.begin(9600);

pinMode(s0, OUTPUT);

pinMode(s1, OUTPUT);

pinMode(s2, OUTPUT);

pinMode(s3, OUTPUT);

pinMode(out, INPUT);

digitalWrite(s0, HIGH);

digitalWrite(s1, HIGH);

}

void loop() {

ScanColor();

Serial.print(" Red: ");

Serial.print(RedColor);

Serial.print(" Green: ");

Serial.print(GreenColor);

Serial.print(" Blue : ");

Serial.print(BlueColor);


if (RedColor < BlueColor && RedColor < GreenColor) {

Serial.println(" - (Red Color)");

}

else if (BlueColor < RedColor && BlueColor < GreenColor) {

Serial.println(" - (Blue Color)");

}

else if (GreenColor < RedColor && GreenColor < BlueColor) {

Serial.println(" - (Green Color)");

}

}

void ScanColor() {

digitalWrite(s2, LOW);

digitalWrite(s3, LOW);

RedColor = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

digitalWrite(s3, HIGH);

BlueColor = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

digitalWrite(s2, HIGH);

GreenColor = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

}

//======================================================


上傳程式後,拿出一些色紙測試一下吧!



創客萊吧MakerLab

高雄市左營區博愛二路202號B1F        

0989-250-580