
小編這次拿了一個一直想使用的顏色感測器,以往只有感測黑色、白色或灰度,這次心血來潮想製作一個造型燈,所以就上網查了一下Arduino能用的顏色感測器,發現大家好像都賣這個TCS3200,心想應該不雷吧!於是乎就讓我們來使用它吧~
材料清單
接線圖
TCS3200的OUT接D2、S0接D3、S1接D3、S2接D3、S3接D3、GND接GND、VCC接5V。
下圖為示意圖,實際元件較為不同,但接線位子一樣。

使用前我們來參考一下 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); | |
} | |
//====================================================== |
成果實測
上傳程式後,拿出一些色紙測試一下吧!


下一篇小編會分享如何使用顏色感測器做出一個魔幻多變的光變色龍,有興趣的夥伴們也一起來組裝一個吧!