(SKU:RB-02S035)TCS3200 顏色傳感器

來(lái)自ALSROBOT WiKi
2015年5月28日 (四) 21:41Arduino77討論 | 貢獻(xiàn)的版本

跳轉(zhuǎn)至: 導(dǎo)航、 搜索


Vadrb1.jpg

目錄

.概述

Color Sensor是一款簡(jiǎn)單易用、小巧請(qǐng)便、性?xún)r(jià)比較高的顏色識(shí)別、檢測(cè)模塊,與國(guó)外同類(lèi)產(chǎn)品相比,不但體積小,功能強(qiáng),而且設(shè)計(jì)巧妙具有以下特點(diǎn):一、可完成分辨率的光照度/ 頻率轉(zhuǎn)換;二、色彩和滿(mǎn)度輸出頻率可編程調(diào)整;三、可以直接與微處理器或其他邏輯電路相連接,適合各種開(kāi)發(fā)板、控制器等產(chǎn)品。

性能描述

  1. 顏色光到頻率轉(zhuǎn)換芯片:TCS3200D
  2. 輸出頻率范圍從10kHz~12kHz,占空比50%
  3. 工作電壓:+2.7V~+5.5V
  4. 工作電流:1.4mA
  5. 檢測(cè)狀態(tài):靜態(tài)檢測(cè)
  6. 最佳檢測(cè)距離:10mm
  7. 工作溫度:-40°C~+85°C
  8. 尺寸大小:35.56mmx 35.56mm x 1.60mm
  9. 重量大小:4.7g
  10. 固定孔直徑:3mm
  11. 對(duì)角固定孔間距:16.60mm
  12. 相鄰固定孔間距:11.74mm

Color Sensor模塊的芯片介紹

目前的顏色傳感器通常是在獨(dú)立的光電二極管上覆蓋經(jīng)過(guò)修正的紅、綠、藍(lán)濾波片,然后對(duì)輸出信號(hào)進(jìn)行相應(yīng)的處理,才能將顏色信號(hào)識(shí)別出來(lái);有的將兩者集合起來(lái),但是輸出模擬信號(hào),需要一個(gè)A/D 電路進(jìn)行采集,對(duì)該信號(hào)進(jìn)一步處理,才能進(jìn)行識(shí)別,增加了電路的復(fù)雜性,并且存在較大的識(shí)別誤差,影響了識(shí)別的效果。TA OS(Texas Advanced Optoelectronic Solutions )公司最新推出的顏色傳感器 TCS3200D(如下圖),不僅能夠?qū)崿F(xiàn)顏色的識(shí)別與檢測(cè),與以前的顏色傳感器相比,還具有許多優(yōu)良的新特性。
Vadrb2.jpg
  1. TCS3200D 芯片的結(jié)構(gòu)框圖與特點(diǎn):
TCS3200D 是TAOS 公司推出的可編程彩色光到頻率的轉(zhuǎn)換器,它把可配置的硅光電二極管與電流頻率轉(zhuǎn)換器集成在一個(gè)單一的CMOS 電路上,同時(shí)在單一芯片上集成了紅綠藍(lán)(RGB)三種濾光器,是業(yè)界第一個(gè)有數(shù)字兼容接口的RGB彩色傳感器,TCS3200D 的輸出信號(hào)是數(shù)字量,可以驅(qū)動(dòng)標(biāo)準(zhǔn)的 TTL 或CMOS 邏輯輸入,因此可直接與微處理器或其他邏輯電路相連接,由于輸出的是數(shù)字量,并且能夠?qū)崿F(xiàn)每個(gè)彩色信道10位以上的轉(zhuǎn)換精度,因而不再需要A/D 轉(zhuǎn)換電路,使電路變得更簡(jiǎn)單。
TCS3200D 采用8 引腳的SOIC 表面貼裝式封裝,在單一芯片上集成有64個(gè)光電二極管,這些二極管分為四種類(lèi)型,其 16個(gè)光電二極管帶有紅色濾波器;16個(gè)光電二極管帶有綠色濾波器;16個(gè)光電二極管帶有藍(lán)色濾波器,其余16個(gè)不帶有任何濾波器,可以透過(guò)全部的光信息,這些光電二極管在芯片內(nèi)是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識(shí)別的精確度;另一方面,相同顏色的 16個(gè)光電二極管是并聯(lián)連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時(shí),通過(guò)兩個(gè)可編程的引腳來(lái)動(dòng)態(tài)選擇所需要的濾波器,該傳感器的典型輸出頻率范圍從2Hz -500kHz,用戶(hù)還可以通過(guò)兩個(gè)可編程引腳來(lái)選擇 100 %、20%或2 %的輸出比例因子,或電源關(guān)斷模式。輸出比例因子使傳感器的輸出能夠適應(yīng)不同的測(cè)量范圍,提高了它的適應(yīng)能力。例如,當(dāng)使用低速的頻率計(jì)數(shù)器時(shí),就可以選擇小的定標(biāo)值,使TCS3200D 的輸出頻率和計(jì)數(shù)器相匹配。 當(dāng)入射光投射到TCS3200D 上時(shí),通過(guò)光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經(jīng)過(guò)電流到頻率轉(zhuǎn)換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強(qiáng)對(duì)應(yīng)不同頻率的方波;還可以通過(guò)輸出定標(biāo)控制引腳S0、S1,選擇不同的輸出比例因子,對(duì)輸出頻率范圍進(jìn)行調(diào)整,以適應(yīng)不同的需求。 下面簡(jiǎn)要介紹TCS3200D 芯片各個(gè)引腳的功能及它的一些組合選項(xiàng)。 S0、S1用于選擇輸出比例因子或電源關(guān)斷模式;S2、S3用于選擇濾波器的類(lèi)型;OE反是頻率輸出使能引腳,可以控制輸出的狀態(tài),當(dāng)有多個(gè)芯片引腳共用微處理器的輸出引腳時(shí),也可以作為片選信號(hào),OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓,下表是S0、S1及S2、S3的可用組合。
Vadrb3.jpg
  1. TCS3200D 識(shí)別顏色的原理
由上面的介紹可知,這種可編程的彩色光到頻率轉(zhuǎn)換器適合于色度計(jì)測(cè)量應(yīng)用領(lǐng)域,如彩色打印、醫(yī)療診斷、計(jì)算機(jī)彩色監(jiān)視器校準(zhǔn)以及油漆、紡織品、化妝品和印刷材料的過(guò)程控制和色彩配合。下面以TCS3200D 在色板顏色識(shí)別的應(yīng)用為例,介紹它的具體使用。首先了解一些光與顏色的知識(shí)。
  1. 三原色的感應(yīng)原理
通常所看到的物體顏色,實(shí)際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng)。白色是由各種頻率的可見(jiàn)光混合在一起構(gòu)成的,也就是說(shuō)白光中包含著各種顏色的色光(如紅R、黃Y 、綠G、青V、藍(lán)B 、紫P )。根據(jù)德國(guó)物理學(xué)家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍(lán))混合而成的。
  1.  :TCS3200D 識(shí)別顏色的原理
由三原色感應(yīng)原理可知,如果知道構(gòu)成各種顏色的三原色的值,就能夠知道所測(cè)試物體的顏色。對(duì)于TCS3200D 來(lái)說(shuō),當(dāng)選定一個(gè)顏色濾波器時(shí),它只允許某種特定的原色通過(guò),阻止其他原色的通過(guò)。例如:當(dāng)選擇紅色濾波器時(shí),入射光中只有紅色可以通過(guò),藍(lán)色和綠色都被阻止,這樣就可以得到紅色光的光強(qiáng);同時(shí),選擇其他的濾波器,就可以得到藍(lán)色光和綠色光的光強(qiáng)。通過(guò)這三個(gè)值,就可以分析投射到TCS3200D 傳感器上的光的顏色。
  1. 白平衡和顏色識(shí)別原理
白平衡就是告訴系統(tǒng)什么是白色。從理論上講,白色是由等量的紅色、綠色和藍(lán)色混合而成的;但實(shí)際上,白色中的三原色并不完全相等,并且對(duì)于TCS3200D 的光傳感器來(lái)說(shuō),它對(duì)這三種基本色的敏感性是不相同的,導(dǎo)致 TCS3200D 的RGB輸出并不相等,因此在測(cè)試前必須進(jìn)行白平衡調(diào)整,使得TCS3200D 對(duì)所檢測(cè)的"白色"中的三原色是相等的。進(jìn)行白平衡調(diào)整是為后續(xù)的顏色識(shí)別作準(zhǔn)備。在本裝置中,白平衡調(diào)整的具體步驟和方法如下:將傳感器對(duì)準(zhǔn)色板的白色區(qū)域使其保持靜態(tài)并平行于色板,使入射光能夠良好的反射到TCS3200D 上;根據(jù)前面所介紹的方法,依次選通紅色、綠色和藍(lán)色濾波器,分別測(cè)得紅色、綠色和藍(lán)色的值,然后就可計(jì)算出需要的3 個(gè)調(diào)整參數(shù)。
當(dāng)TCS3200D 識(shí)別顏色時(shí),就用這3 個(gè)參數(shù)對(duì)所測(cè)顏色的R、G 和B 進(jìn)行調(diào)整。這里有兩種方法來(lái)計(jì)算調(diào)整參數(shù):1 、依次選通三顏色的濾波器,然后對(duì) TCS3200D 的輸出脈沖依次進(jìn)行計(jì)數(shù)。當(dāng)計(jì)數(shù)到255 時(shí)停止計(jì)數(shù),分別計(jì)算每個(gè)通道所用的時(shí)間,這些時(shí)間對(duì)應(yīng)于實(shí)際測(cè)試時(shí)TCS3200D 每種濾波器所采用的時(shí)間基準(zhǔn),在這段時(shí)間內(nèi)所測(cè)得的脈沖數(shù)就是所對(duì)應(yīng)的R、G 和B 的值。2 、設(shè)置定時(shí)器為一固定時(shí)間 (例如10ms),然后選通三種顏色的濾波器,計(jì)算這段時(shí)間內(nèi) TCS3200D 的輸出脈沖數(shù),計(jì)算出一個(gè)比例因子,通過(guò)這個(gè)比例因子可以把這些脈沖數(shù)變?yōu)?255 。在實(shí)際測(cè)試時(shí),室外同樣的時(shí)間進(jìn)行計(jì)數(shù),把測(cè)得的脈沖數(shù)再乘以求得的比例因子,然后就可以得到所對(duì)應(yīng)的R、G 和B 的值。

Color Sensor模塊的測(cè)試

實(shí)驗(yàn)接線(xiàn)圖

Yansejx.jpg

我們使用Arduino控制器來(lái)做個(gè)測(cè)試,需要用到硬件設(shè)備如下:

  1. Arduino 控制器×1
  2. Arduino 傳感器擴(kuò)展板×1
  3. Color Sensor模塊×1
  4. 3P傳感器連接線(xiàn)×5
  5. 4P傳感器連接線(xiàn)×2
  6. IR&LED Modue×5 (紅、白、藍(lán)、黃、綠色各一個(gè))
  7. USB 數(shù)據(jù)通信線(xiàn)×1
  8. 色板×1
使用杜邦線(xiàn)將Color Sensor 連接到Arduino傳感器擴(kuò)展板接口上,連接順序?yàn)镾0接數(shù)字口6 ,S1接數(shù)字口5 ,S2接數(shù)字口4 ,S3接數(shù)字口3 ,OUT接數(shù)字口2 ,OE、GND接GND,+5V 接+5V 。使用傳感器線(xiàn)將各種顏色食人魚(yú)燈連接到 Arduino傳感器擴(kuò)展板上,連接順序?yàn)榧t色食人魚(yú)燈接數(shù)字口 8 ,黃色燈接數(shù)字口 9 ,綠色燈接數(shù)字口10,藍(lán)色燈接數(shù)字口 11 ,白色燈接數(shù)字口 12。( 注:在使用傳感器線(xiàn)、杜邦線(xiàn)時(shí),應(yīng)注意對(duì)應(yīng)連接,否則后果自負(fù)。) 完成硬件連接后,將 TimerOne庫(kù)文件粘貼到arduino軟件的libraries 中(如需庫(kù)文件請(qǐng)與我們聯(lián)系),無(wú)庫(kù)文件或?qū)?kù)文件放錯(cuò)位置代碼編譯可能將會(huì)出現(xiàn)錯(cuò)誤提示。

將代碼編譯后下載到Arduino里。Arduino實(shí)驗(yàn)代碼如下。

#include <TimerOne.h>       // 引用 TimerOne.h 庫(kù)文件 
#define S0     6            // 定義 S0為引腳6 
#define S1     5            // 定義 S1為引腳5 
#define S2     4            // 定義 S2為引腳4 
#define S3     3            // 定義 S3為引腳3 
#define OUT    2           // 定義 OUT為引腳2 
#define Rs      8           // 定義 Rs為引腳8 
#define Ys      9           // 定義 Ys為引腳9 
#define Gs      10          // 定義 Gs為引腳10 
#define Bs      11          // 定義 Bs為引腳11 
#define Ws      12         // 定義 Ws為引腳12 
int   g_count = 0;   //定義整型變量 g_count并賦初值為0,用于存儲(chǔ)計(jì)數(shù)頻率 
int   g_array[3];    //定義整型數(shù)組變量 g_array[3],用于存儲(chǔ)RGB的值 
int   g_flag = 0;   	 //定義整形變量 g_flag 并賦初值為0,用于過(guò)濾器排列 
float g_SF[3];       //定義浮點(diǎn)型數(shù)組變量g_SF[3],用于存儲(chǔ)RGB比例因子 
int   value[3];      //定義定義整型數(shù)組變量value[3],用于判斷顏色 
//  初始化tsc230 和設(shè)置頻率 
void TSC_Init() 
{                                                                   
  pinMode(S0, OUTPUT);      // 定義S0為輸出狀態(tài) 
  pinMode(S1, OUTPUT);      // 定義S1為輸出狀態(tài) 
  pinMode(S2, OUTPUT);      // 定義S2為輸出狀態(tài) 
  pinMode(S3, OUTPUT);      // 定義S3為輸出狀態(tài) 
  pinMode(OUT, INPUT);      // 定義OUT為輸入狀態(tài) 
 
  digitalWrite(S0, LOW);      //定義S0為低電平 
  digitalWrite(S1, HIGH);     // 定義 S1為高電平 
                           //輸出頻率縮放 2% 
}  
//  選擇過(guò)濾器的顏色  
void TSC_FilterColor(int Level01, int Level02) 
{ 
  if(Level01 != 0)             // 如果Level01  不等于0   
     Level01 = HIGH;         //則Level01  為高電平 
  if(Level02 != 0)             // 如果Level02  不等于0 
     Level02 = HIGH;         //則Level02  為高電平 
  digitalWrite(S2, Level01);       // 將Level01值送給S2 
  digitalWrite(S3, Level02);       // 將Level02值送給S3 
                              // 選擇過(guò)濾器顏色 
} 
void TSC_Count() 
{ 
  g_count ++ ;                  // 自動(dòng)計(jì)算頻率 
} 
void TSC_Callback() 
{ 
  switch(g_flag) 
  { 
    case 0:  
         Serial.println("->WB Start");    // 串口打印字符串"->WB Start" 
         TSC_WB(LOW, LOW);        // 沒(méi)有過(guò)濾紅色 
         break; 
    case 1: 
         Serial.print("->Frequency R=");  // 串口打印字符串"->Frequency R=" 
         Serial.println(g_count);         // 串口打印 g_count變量值 
         g_array[0] = g_count;           
         TSC_WB(HIGH, HIGH);       // 沒(méi)有過(guò)濾綠色 
         break; 
    case 2: 
         Serial.print("->Frequency G=");  // 串口打印字符串"->Frequency G=" 
         Serial.println(g_count);         // 串口打印 g_count變量值 
         g_array[1] = g_count; 
         TSC_WB(LOW, HIGH);       // 沒(méi)有過(guò)濾藍(lán)色 
         break; 
    case 3: 
         Serial.print("->Frequency B=");  // 串口打印字符串"->Frequency B=" 
         Serial.println(g_count);         // 串口打印 g_count變量值 
         Serial.println("->WB End");     // 串口打印字符串"->WB End" 
         g_array[2] = g_count; 
         TSC_WB(HIGH, LOW);       // 清除(無(wú)過(guò)濾)                                                                      
         break; 
   default: 
         g_count = 0; 
         break; 
  } 
} 
void TSC_WB(int Level0, int Level1)      // 白平衡 
{ 
  g_count = 0; 
  g_flag ++; 
  TSC_FilterColor(Level0, Level1); 
  Timer1.setPeriod(1000000);           //設(shè)置一秒周期 
} 
void setup() 
{ 
  pinMode(Rs,OUTPUT);               //設(shè)定Rs引腳為輸出狀態(tài) 
  pinMode(Ys,OUTPUT);               //設(shè)定Ys引腳為輸出狀態(tài) 
  pinMode(Gs,OUTPUT);               //設(shè)定Gs引腳為輸出狀態(tài) 
  pinMode(Bs,OUTPUT);               //設(shè)定Bs引腳為輸出狀態(tài) 
  pinMode(Ws,OUTPUT);              //設(shè)定Ws引腳為輸出狀態(tài) 
  TSC_Init();                         //初始化tcs230 
  Serial.begin(9600);                   //打開(kāi)串口并設(shè)置通信波特率為 9600 
  Timer1.initialize();                      //初始化默認(rèn)是一秒 
  Timer1.attachInterrupt(TSC_Callback);     // 外部中斷為一秒   
  attachInterrupt(0, TSC_Count, RISING);    //外部中斷口初始0 
  delay(4000);                          // 延遲4 秒 
  for(int i=0; i<3; i++) 
     Serial.println(g_array[i]);             //串口打印 g_array[i] 變量值 
  g_SF[0] = 255.0/ g_array[0];            //紅色的比例因子 
  g_SF[1] = 255.0/ g_array[1] ;           // 綠色的比例因子 
  g_SF[2] = 255.0/ g_array[2] ;           // 藍(lán)色的比例因子 
  
  Serial.println(g_SF[0]);               // 串口打印 g_SF[0]變量值 
  Serial.println(g_SF[1]);               // 串口打印 g_SF[1]變量值 
  Serial.println(g_SF[2]);               // 串口打印 g_SF[2]變量值 
} 
void loop() 
{ 
   g_flag = 0; 
   for(int i=0; i<3; i++) 
   {Serial.println(int(g_array[i] * g_SF[i])); //串口打印g_array[i] * g_SF[i]變量值 
    value[i]=int(g_array[i] * g_SF[i]);  //將g_array[i] * g_SF[i]值賦值給value[i] 
   } 
      if (((value[0]>168)  &&  (value[0]<208)) && ((value[1]>66) && (value[1]<106)) && ((value[2]>67) && (value[2]<107)))    
 // 如果變量 value[i]數(shù)值滿(mǎn)足為紅色值范圍則執(zhí)行下面語(yǔ)句 
       { 
Serial.println("->Red");                //串口打印字符串"->Red" 
        digitalWrite(Rs,HIGH);                //Rs定義為高電平 
        digitalWrite(Ys,LOW);                //Ys定義為低電平 
        digitalWrite(Gs,LOW);                //Gs定義為低電平                     
        digitalWrite(Bs,LOW);                //Bs 定義為低電平                                                                  
        digitalWrite(Ws,LOW);               //Ws定義為低電平 
       } 
        else if (((value[0]>235) && (value[0]<275)) && ((value[1]> 198) && (value[1]<238)) && ((value[2]>96) && (value[2]<136)))     
 //如果變量 value[i]數(shù)值滿(mǎn)足為黃色值范圍則執(zhí)行下面語(yǔ)句 
       {
 Serial.println("->Yellow");             //串口打印字符串"->Yellow" 
        digitalWrite(Rs,LOW);                //Rs 定義為低電平 
        digitalWrite(Ys,HIGH);               //Ys 定義為高電平 
        digitalWrite(Gs,LOW);               //Gs 定義為低電平 
        digitalWrite(Bs,LOW);               //Bs 定義為低電平 
        digitalWrite(Ws,LOW);              //Ws 定義為低電平 
       } 
        else if (((value[0]>74) && (value[0]<114)) && ((value[1]>119)  && (value[1]<159)) && ((value[2]>76) && (value[2]<116)))     
 //如果變量 value[i]數(shù)值滿(mǎn)足為綠色值范圍則執(zhí)行下面語(yǔ)句 
       { 
Serial.println("->Green");              //串口打印字符串"->Green" 
        digitalWrite(Rs,LOW);                //Rs 定義為低電平 
        digitalWrite(Ys,LOW);                //Ys定義為低電平 
        digitalWrite(Gs,HIGH);               //Gs 定義為高電平 
        digitalWrite(Bs,LOW);               //Bs 定義為低電平 
        digitalWrite(Ws,LOW);              //Ws 定義為低電平 
       } 
        else  if(((value[0]>46)  &&  (value[0]<86))  &&  ((value[1]>71)  &&  (value[1]<111))  && ((value[2]>117) && (value[2]<157)))   
  //如果變量 value[i]數(shù)值滿(mǎn)足為藍(lán)色值范圍則執(zhí)行下面語(yǔ)句 
       { 
Serial.println("->Blue");               //串口打印字符串"->Blue" 
        digitalWrite(Rs,LOW);                //Rs 定義為低電平 
        digitalWrite(Ys,LOW);               //Ys 定義為低電平 
        digitalWrite(Gs,LOW);               //Gs 定義為低電平 
        digitalWrite(Bs,HIGH);              //Bs定義為高電平 
        digitalWrite(Ws,LOW);             //Ws定義為低電平 
       } 
        else if (((value[0]>230) && (value[0]<280)) && ((value[1]> 230) && (value[1]<280)) && ((value[2]>230) && (value[2]<280)))    
 //如果變量 value[i]數(shù)值滿(mǎn)足為白色值范圍則執(zhí)行下面語(yǔ)句 
       { 
Serial.println("->White");              //串口打印字符串"->White" 
        digitalWrite(Rs,LOW);                //Rs 定義為低電平 
        digitalWrite(Ys,LOW);                //Ys定義為低電平 
        digitalWrite(Gs,LOW);               //Gs 定義為低電平 
        digitalWrite(Bs,LOW);               //Bs 定義為低電平 
        digitalWrite(Ws,HIGH);              //Ws 定義為高電平 
       } 
        else if (value[0]>0 && value[1]>0 && value[2]>0) 
         //如果變量 value[i]數(shù)值不滿(mǎn)足上述顏色值范圍則執(zhí)行下面語(yǔ)句 
       { 
Serial.println("->Other Color");        //串口打印字符串"->Other Color" 
        digitalWrite(Rs,LOW);               //Rs 定義為低電平 
        digitalWrite(Ys,LOW);               //Ys 定義為低電平 
        digitalWrite(Gs,LOW);               //Gs 定義為低電平 
        digitalWrite(Bs,LOW);               //Bs 定義為低電平 
        digitalWrite(Ws,LOW);              //Ws 定義為低電平 
       } 
delay(4000);                               //延遲4 秒 
在以上步驟完成后,我們首先需要在其程序啟動(dòng)后白平衡(白平衡在上文中已介紹),下圖為Arduino實(shí)驗(yàn)代碼的白平衡實(shí)驗(yàn)現(xiàn)象:
Vadrb4.jpg
Vadrb5.jpg
Hih6.jpg
在完成白平衡后(上圖實(shí)驗(yàn)現(xiàn)象即白色食人魚(yú)燈亮起,也是其系統(tǒng)在檢測(cè)到白色后的現(xiàn)象)就可以檢測(cè)其他顏色了。白平衡只是系統(tǒng)對(duì)白色的一種數(shù)值反饋(即告訴系統(tǒng)什么是白色),本模塊識(shí)別、檢測(cè)后讀出的只是 R 、G、B 的值,對(duì)應(yīng)其檢測(cè)到的顏色R、G、B 值,該測(cè)試程序編寫(xiě)者特編寫(xiě)了一段應(yīng)用五種顏色食人魚(yú)燈來(lái)顯示其檢測(cè)到的顏色。判斷語(yǔ)句中的范圍為程序編寫(xiě)者在實(shí)驗(yàn)室環(huán)境下所測(cè)得的R 、G、B 值。更換環(huán)境后應(yīng)予以更改其對(duì)應(yīng)顏色判斷的R、G、B 值范圍。測(cè)試程序( 顏色檢測(cè)程序)中涉及到了紅、黃、綠、藍(lán)、白五種顏色,而色板上為六種顏色,多出一種顏色黑色是為了做出對(duì)比 :在檢測(cè)中遇到非該檢測(cè)顏色時(shí)(即不滿(mǎn)足判斷語(yǔ)句的條件時(shí))應(yīng)只在串口打印"->Other Color" ,而無(wú)其他現(xiàn)象產(chǎn)生。下圖為Arduino實(shí)驗(yàn)代碼在檢測(cè)到其他顏色時(shí)的實(shí)驗(yàn)現(xiàn)象
Vadrb7.jpg
Vadrb8.jpg
Vadrb9.jpg
Vadrb10.jpg
Vadrb11.jpg
→購(gòu)買(mǎi)地址TCS3200D 顏色傳感器 http://lifestyle201.com/goods.php?id=73]