“(SKU:RB-02S035)TCS3200 顏色傳感器”的版本間的差異

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航、 搜索
?Color Sensor模塊的測(cè)試
?產(chǎn)品相關(guān)推薦
 
(未顯示3個(gè)用戶的9個(gè)中間版本)
第1行: 第1行:
?
<br/>
 
 
[[文件:vadrb1.jpg|500px|有框|右]]
 
[[文件:vadrb1.jpg|500px|有框|右]]
?
==.概述==
+
==產(chǎn)品概述==
 
:Color Sensor是一款簡(jiǎn)單易用、小巧請(qǐng)便、性價(jià)比較高的顏色識(shí)別、檢測(cè)模塊,與國(guó)外同類產(chǎn)品相比,不但體積小,功能強(qiáng),而且設(shè)計(jì)巧妙具有以下特點(diǎn):一、可完成分辨率的光照度/ 頻率轉(zhuǎn)換;二、色彩和滿度輸出頻率可編程調(diào)整;三、可以直接與微處理器或其他邏輯電路相連接,適合各種開發(fā)板、控制器等產(chǎn)品。
 
:Color Sensor是一款簡(jiǎn)單易用、小巧請(qǐng)便、性價(jià)比較高的顏色識(shí)別、檢測(cè)模塊,與國(guó)外同類產(chǎn)品相比,不但體積小,功能強(qiáng),而且設(shè)計(jì)巧妙具有以下特點(diǎn):一、可完成分辨率的光照度/ 頻率轉(zhuǎn)換;二、色彩和滿度輸出頻率可編程調(diào)整;三、可以直接與微處理器或其他邏輯電路相連接,適合各種開發(fā)板、控制器等產(chǎn)品。
?
==性能描述==
+
==規(guī)格參數(shù)==
 
# 顏色光到頻率轉(zhuǎn)換芯片:TCS3200D
 
# 顏色光到頻率轉(zhuǎn)換芯片:TCS3200D
 
# 輸出頻率范圍從10kHz~12kHz,占空比50%
 
# 輸出頻率范圍從10kHz~12kHz,占空比50%
第16行: 第15行:
 
# 對(duì)角固定孔間距:16.60mm
 
# 對(duì)角固定孔間距:16.60mm
 
# 相鄰固定孔間距:11.74mm
 
# 相鄰固定孔間距:11.74mm
?
==Color Sensor模塊的芯片介紹 ==
+
===TCS3200D 芯片介紹 ===
 
:目前的顏色傳感器通常是在獨(dú)立的光電二極管上覆蓋經(jīng)過修正的紅、綠、藍(lán)濾波片,然后對(duì)輸出信號(hào)進(jìn)行相應(yīng)的處理,才能將顏色信號(hào)識(shí)別出來;有的將兩者集合起來,但是輸出模擬信號(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)良的新特性。
 
:目前的顏色傳感器通常是在獨(dú)立的光電二極管上覆蓋經(jīng)過修正的紅、綠、藍(lán)濾波片,然后對(duì)輸出信號(hào)進(jìn)行相應(yīng)的處理,才能將顏色信號(hào)識(shí)別出來;有的將兩者集合起來,但是輸出模擬信號(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|500px|有框|居中]]
 
[[文件:vadrb2.jpg|500px|有框|居中]]
?
# TCS3200D 芯片的結(jié)構(gòu)框圖與特點(diǎn):
+
====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 是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è)光電二極管,這些二極管分為四種類型,其 16個(gè)光電二極管帶有紅色濾波器;16個(gè)光電二極管帶有綠色濾波器;16個(gè)光電二極管帶有藍(lán)色濾波器,其余16個(gè)不帶有任何濾波器,可以透過全部的光信息,這些光電二極管在芯片內(nèi)是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識(shí)別的精確度;另一方面,相同顏色的 16個(gè)光電二極管是并聯(lián)連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時(shí),通過兩個(gè)可編程的引腳來動(dòng)態(tài)選擇所需要的濾波器,該傳感器的典型輸出頻率范圍從2Hz -500kHz,用戶還可以通過兩個(gè)可編程引腳來選擇 100 %、20%或2 %的輸出比例因子,或電源關(guān)斷模式。輸出比例因子使傳感器的輸出能夠適應(yīng)不同的測(cè)量范圍,提高了它的適應(yīng)能力。例如,當(dāng)使用低速的頻率計(jì)數(shù)器時(shí),就可以選擇小的定標(biāo)值,使TCS3200D 的輸出頻率和計(jì)數(shù)器相匹配。 當(dāng)入射光投射到TCS3200D 上時(shí),通過光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經(jīng)過電流到頻率轉(zhuǎn)換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強(qiáng)對(duì)應(yīng)不同頻率的方波;還可以通過輸出定標(biāo)控制引腳S0、S1,選擇不同的輸出比例因子,對(duì)輸出頻率范圍進(jìn)行調(diào)整,以適應(yīng)不同的需求。 下面簡(jiǎn)要介紹TCS3200D 芯片各個(gè)引腳的功能及它的一些組合選項(xiàng)。 S0、S1用于選擇輸出比例因子或電源關(guān)斷模式;S2、S3用于選擇濾波器的類型;OE反是頻率輸出使能引腳,可以控制輸出的狀態(tài),當(dāng)有多個(gè)芯片引腳共用微處理器的輸出引腳時(shí),也可以作為片選信號(hào),OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓,下表是S0、S1及S2、S3的可用組合。
 
:TCS3200D 采用8 引腳的SOIC 表面貼裝式封裝,在單一芯片上集成有64個(gè)光電二極管,這些二極管分為四種類型,其 16個(gè)光電二極管帶有紅色濾波器;16個(gè)光電二極管帶有綠色濾波器;16個(gè)光電二極管帶有藍(lán)色濾波器,其余16個(gè)不帶有任何濾波器,可以透過全部的光信息,這些光電二極管在芯片內(nèi)是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識(shí)別的精確度;另一方面,相同顏色的 16個(gè)光電二極管是并聯(lián)連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時(shí),通過兩個(gè)可編程的引腳來動(dòng)態(tài)選擇所需要的濾波器,該傳感器的典型輸出頻率范圍從2Hz -500kHz,用戶還可以通過兩個(gè)可編程引腳來選擇 100 %、20%或2 %的輸出比例因子,或電源關(guān)斷模式。輸出比例因子使傳感器的輸出能夠適應(yīng)不同的測(cè)量范圍,提高了它的適應(yīng)能力。例如,當(dāng)使用低速的頻率計(jì)數(shù)器時(shí),就可以選擇小的定標(biāo)值,使TCS3200D 的輸出頻率和計(jì)數(shù)器相匹配。 當(dāng)入射光投射到TCS3200D 上時(shí),通過光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經(jīng)過電流到頻率轉(zhuǎn)換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強(qiáng)對(duì)應(yīng)不同頻率的方波;還可以通過輸出定標(biāo)控制引腳S0、S1,選擇不同的輸出比例因子,對(duì)輸出頻率范圍進(jìn)行調(diào)整,以適應(yīng)不同的需求。 下面簡(jiǎn)要介紹TCS3200D 芯片各個(gè)引腳的功能及它的一些組合選項(xiàng)。 S0、S1用于選擇輸出比例因子或電源關(guān)斷模式;S2、S3用于選擇濾波器的類型;OE反是頻率輸出使能引腳,可以控制輸出的狀態(tài),當(dāng)有多個(gè)芯片引腳共用微處理器的輸出引腳時(shí),也可以作為片選信號(hào),OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓,下表是S0、S1及S2、S3的可用組合。
 
[[文件:vadrb3.jpg|500px|有框|居中]]
 
[[文件:vadrb3.jpg|500px|有框|居中]]
?
# TCS3200D 識(shí)別顏色的原理
+
====TCS3200D 識(shí)別顏色的原理====
 
:由上面的介紹可知,這種可編程的彩色光到頻率轉(zhuǎn)換器適合于色度計(jì)測(cè)量應(yīng)用領(lǐng)域,如彩色打印、醫(yī)療診斷、計(jì)算機(jī)彩色監(jiān)視器校準(zhǔn)以及油漆、紡織品、化妝品和印刷材料的過程控制和色彩配合。下面以TCS3200D 在色板顏色識(shí)別的應(yīng)用為例,介紹它的具體使用。首先了解一些光與顏色的知識(shí)。  
 
:由上面的介紹可知,這種可編程的彩色光到頻率轉(zhuǎn)換器適合于色度計(jì)測(cè)量應(yīng)用領(lǐng)域,如彩色打印、醫(yī)療診斷、計(jì)算機(jī)彩色監(jiān)視器校準(zhǔn)以及油漆、紡織品、化妝品和印刷材料的過程控制和色彩配合。下面以TCS3200D 在色板顏色識(shí)別的應(yīng)用為例,介紹它的具體使用。首先了解一些光與顏色的知識(shí)。  
?
# 三原色的感應(yīng)原理  
+
====三原色的感應(yīng)原理====
 
:通常所看到的物體顏色,實(shí)際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng)。白色是由各種頻率的可見光混合在一起構(gòu)成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y 、綠G、青V、藍(lán)B 、紫P )。根據(jù)德國(guó)物理學(xué)家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍(lán))混合而成的。  
 
:通常所看到的物體顏色,實(shí)際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng)。白色是由各種頻率的可見光混合在一起構(gòu)成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y 、綠G、青V、藍(lán)B 、紫P )。根據(jù)德國(guó)物理學(xué)家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍(lán))混合而成的。  
?
# :TCS3200D 識(shí)別顏色的原理  
+
====TCS3200D 識(shí)別顏色的原理====
 
:由三原色感應(yīng)原理可知,如果知道構(gòu)成各種顏色的三原色的值,就能夠知道所測(cè)試物體的顏色。對(duì)于TCS3200D 來說,當(dāng)選定一個(gè)顏色濾波器時(shí),它只允許某種特定的原色通過,阻止其他原色的通過。例如:當(dāng)選擇紅色濾波器時(shí),入射光中只有紅色可以通過,藍(lán)色和綠色都被阻止,這樣就可以得到紅色光的光強(qiáng);同時(shí),選擇其他的濾波器,就可以得到藍(lán)色光和綠色光的光強(qiáng)。通過這三個(gè)值,就可以分析投射到TCS3200D 傳感器上的光的顏色。   
 
:由三原色感應(yīng)原理可知,如果知道構(gòu)成各種顏色的三原色的值,就能夠知道所測(cè)試物體的顏色。對(duì)于TCS3200D 來說,當(dāng)選定一個(gè)顏色濾波器時(shí),它只允許某種特定的原色通過,阻止其他原色的通過。例如:當(dāng)選擇紅色濾波器時(shí),入射光中只有紅色可以通過,藍(lán)色和綠色都被阻止,這樣就可以得到紅色光的光強(qiáng);同時(shí),選擇其他的濾波器,就可以得到藍(lán)色光和綠色光的光強(qiáng)。通過這三個(gè)值,就可以分析投射到TCS3200D 傳感器上的光的顏色。   
?
# 白平衡和顏色識(shí)別原理   
+
====白平衡和顏色識(shí)別原理====  
 
:白平衡就是告訴系統(tǒng)什么是白色。從理論上講,白色是由等量的紅色、綠色和藍(lán)色混合而成的;但實(shí)際上,白色中的三原色并不完全相等,并且對(duì)于TCS3200D 的光傳感器來說,它對(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ù)。  
 
:白平衡就是告訴系統(tǒng)什么是白色。從理論上講,白色是由等量的紅色、綠色和藍(lán)色混合而成的;但實(shí)際上,白色中的三原色并不完全相等,并且對(duì)于TCS3200D 的光傳感器來說,它對(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)整。這里有兩種方法來計(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è)比例因子,通過這個(gè)比例因子可以把這些脈沖數(shù)變?yōu)?255 。在實(shí)際測(cè)試時(shí),室外同樣的時(shí)間進(jìn)行計(jì)數(shù),把測(cè)得的脈沖數(shù)再乘以求得的比例因子,然后就可以得到所對(duì)應(yīng)的R、G 和B 的值。
 
:當(dāng)TCS3200D 識(shí)別顏色時(shí),就用這3 個(gè)參數(shù)對(duì)所測(cè)顏色的R、G 和B 進(jìn)行調(diào)整。這里有兩種方法來計(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è)比例因子,通過這個(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)接線圖<br/>
+
===硬件設(shè)備===
?
[[文件:yansejx.jpg|700px|有框|居中]]
+
Carduino UNO R3 控制器×1  
?
我們使用Arduino控制器來做個(gè)測(cè)試,需要用到硬件設(shè)備如下:
+
#  Arduino  傳感器擴(kuò)展板V5.0×1                
?
Arduino  控制器×1  
+
#  Color Sensor顏色傳感器模塊×1
?
#  Arduino  傳感器擴(kuò)展板×1                
+
?
#  Color Sensor模塊×1
+
 
#  3P傳感器連接線×5  
 
#  3P傳感器連接線×5  
 
#  4P傳感器連接線×2  
 
#  4P傳感器連接線×2  
第44行: 第41行:
 
#  USB 數(shù)據(jù)通信線×1  
 
#  USB 數(shù)據(jù)通信線×1  
 
#  色板×1  
 
#  色板×1  
 +
===試驗(yàn)接線圖===
 +
實(shí)驗(yàn)接線圖<br/>
 +
[[文件:yansejiexian.jpg|700px|有框|居中]]
 
:使用杜邦線將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 。使用傳感器線將各種顏色食人魚燈連接到 Arduino傳感器擴(kuò)展板上,連接順序?yàn)榧t色食人魚燈接數(shù)字口 8 ,黃色燈接數(shù)字口 9 ,綠色燈接數(shù)字口10,藍(lán)色燈接數(shù)字口 11 ,白色燈接數(shù)字口 12。( 注:在使用傳感器線、杜邦線時(shí),應(yīng)注意對(duì)應(yīng)連接,否則后果自負(fù)。) 完成硬件連接后,將 TimerOne庫文件粘貼到arduino軟件的libraries  中(如需庫文件請(qǐng)與我們聯(lián)系),無庫文件或?qū)煳募佩e(cuò)位置代碼編譯可能將會(huì)出現(xiàn)錯(cuò)誤提示。
 
:使用杜邦線將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 。使用傳感器線將各種顏色食人魚燈連接到 Arduino傳感器擴(kuò)展板上,連接順序?yàn)榧t色食人魚燈接數(shù)字口 8 ,黃色燈接數(shù)字口 9 ,綠色燈接數(shù)字口10,藍(lán)色燈接數(shù)字口 11 ,白色燈接數(shù)字口 12。( 注:在使用傳感器線、杜邦線時(shí),應(yīng)注意對(duì)應(yīng)連接,否則后果自負(fù)。) 完成硬件連接后,將 TimerOne庫文件粘貼到arduino軟件的libraries  中(如需庫文件請(qǐng)與我們聯(lián)系),無庫文件或?qū)煳募佩e(cuò)位置代碼編譯可能將會(huì)出現(xiàn)錯(cuò)誤提示。
 
將代碼編譯后下載到Arduino里。Arduino實(shí)驗(yàn)代碼如下。
 
將代碼編譯后下載到Arduino里。Arduino實(shí)驗(yàn)代碼如下。
?
<pre style='color:blue'>#include <TimerOne.h>      // 引用 TimerOne.h 庫文件  
+
===例子程序===
 +
<pre style='color:blue'>
 +
#include <TimerOne.h>      // 引用 TimerOne.h 庫文件  
 
#define S0    6            // 定義 S0為引腳6  
 
#define S0    6            // 定義 S0為引腳6  
 
#define S1    5            // 定義 S1為引腳5  
 
#define S1    5            // 定義 S1為引腳5  
第219行: 第221行:
 
         digitalWrite(Ws,LOW);              //Ws 定義為低電平  
 
         digitalWrite(Ws,LOW);              //Ws 定義為低電平  
 
       }  
 
       }  
?
delay(4000);                               //延遲4 秒 </pre>
+
delay(4000);}                            //延遲4 秒
 +
</pre>
 +
===程序效果===
 
:在以上步驟完成后,我們首先需要在其程序啟動(dòng)后白平衡(白平衡在上文中已介紹),下圖為Arduino實(shí)驗(yàn)代碼的白平衡實(shí)驗(yàn)現(xiàn)象:
 
:在以上步驟完成后,我們首先需要在其程序啟動(dòng)后白平衡(白平衡在上文中已介紹),下圖為Arduino實(shí)驗(yàn)代碼的白平衡實(shí)驗(yàn)現(xiàn)象:
 
[[文件:vadrb4.jpg|500px|有框|居中]]
 
[[文件:vadrb4.jpg|500px|有框|居中]]
第230行: 第234行:
 
[[文件:vadrb10.jpg|500px|有框|居中]]
 
[[文件:vadrb10.jpg|500px|有框|居中]]
 
[[文件:vadrb11.jpg|500px|有框|居中]]
 
[[文件:vadrb11.jpg|500px|有框|居中]]
?
→購買地址TCS3200D 顏色傳感器 http://lifestyle201.com/goods.php?id=73]
+
==視頻演示==
 +
[[File:hong wai yan se 01.png|400px|左|link=http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2]]
 +
[[File:yan se 01.png|400px|居中|link=http://v.youku.com/v_show/id_XMzU0NzEyNDg4.html?from=y1.7-2]]
 +
<br/>
 +
==產(chǎn)品相關(guān)推薦==
 +
[[文件:erweima.png|230px|無框|右]]
 +
===購買地址===
 +
[http://lifestyle201.com/goods.php?id=73 TCS3200D 顏色傳感器]<br/>
 +
===周邊產(chǎn)品推薦===
 +
[http://lifestyle201.com/goods-546.html Carduino UNO R3 控制器]<br/>
 +
[http://lifestyle201.com/goods-633.html 灰度傳感器]<br/>
 +
[http://lifestyle201.com/goods-176.html Arduino ColorPAL Color Sensor 進(jìn)口顏色傳感器 顏色識(shí)別]<br/>
 +
[http://lifestyle201.com/goods-67.html Arduino 高亮LED食人魚燈]<br/>
 +
===相關(guān)問題解答===
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=5257&fromuid=10780 Arduino 顏色傳感器評(píng)測(cè)]<br/>
 +
===相關(guān)學(xué)習(xí)資料===
 +
[http://v.youku.com/v_show/id_XMzU0NzEyNDg4.html?from=y1.7-2 視頻: 運(yùn)用顏色傳感器進(jìn)行多彩顏色識(shí)別檢測(cè)]<br/>
 +
[http://v.youku.com/v_show/id_XNDkxNzIzNzM2.html?from=y1.7-2 視頻: 愛上Arduino與愛上Processing互動(dòng)之顏色過度識(shí)別]<br/>
 +
[http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2 視頻: 紅外無線發(fā)射接收之顏色識(shí)別系統(tǒng)]<br/>
 +
[http://www.makerspace.cn/portal.php 奧松機(jī)器人技術(shù)論壇]<br/>

2015年10月21日 (三) 13:48的最后版本

Vadrb1.jpg

目錄

產(chǎn)品概述

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

規(guī)格參數(shù)

  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. 尺寸大?。?5.56mmx 35.56mm x 1.60mm
  9. 重量大小:4.7g
  10. 固定孔直徑:3mm
  11. 對(duì)角固定孔間距:16.60mm
  12. 相鄰固定孔間距:11.74mm

TCS3200D 芯片介紹

目前的顏色傳感器通常是在獨(dú)立的光電二極管上覆蓋經(jīng)過修正的紅、綠、藍(lán)濾波片,然后對(duì)輸出信號(hào)進(jìn)行相應(yīng)的處理,才能將顏色信號(hào)識(shí)別出來;有的將兩者集合起來,但是輸出模擬信號(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

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è)光電二極管,這些二極管分為四種類型,其 16個(gè)光電二極管帶有紅色濾波器;16個(gè)光電二極管帶有綠色濾波器;16個(gè)光電二極管帶有藍(lán)色濾波器,其余16個(gè)不帶有任何濾波器,可以透過全部的光信息,這些光電二極管在芯片內(nèi)是交叉排列的,能夠最大限度地減少入射光輻射的不均勻性,從而增加顏色識(shí)別的精確度;另一方面,相同顏色的 16個(gè)光電二極管是并聯(lián)連接的,均勻分布在二極管陣列中,可以消除顏色的位置誤差。工作時(shí),通過兩個(gè)可編程的引腳來動(dòng)態(tài)選擇所需要的濾波器,該傳感器的典型輸出頻率范圍從2Hz -500kHz,用戶還可以通過兩個(gè)可編程引腳來選擇 100 %、20%或2 %的輸出比例因子,或電源關(guān)斷模式。輸出比例因子使傳感器的輸出能夠適應(yīng)不同的測(cè)量范圍,提高了它的適應(yīng)能力。例如,當(dāng)使用低速的頻率計(jì)數(shù)器時(shí),就可以選擇小的定標(biāo)值,使TCS3200D 的輸出頻率和計(jì)數(shù)器相匹配。 當(dāng)入射光投射到TCS3200D 上時(shí),通過光電二極管控制引腳S2、S3的不同組合,可以選擇不同的濾波器;經(jīng)過電流到頻率轉(zhuǎn)換器后輸出不同頻率的方波(占空比是50%),不同的顏色和光強(qiáng)對(duì)應(yīng)不同頻率的方波;還可以通過輸出定標(biāo)控制引腳S0、S1,選擇不同的輸出比例因子,對(duì)輸出頻率范圍進(jìn)行調(diào)整,以適應(yīng)不同的需求。 下面簡(jiǎn)要介紹TCS3200D 芯片各個(gè)引腳的功能及它的一些組合選項(xiàng)。 S0、S1用于選擇輸出比例因子或電源關(guān)斷模式;S2、S3用于選擇濾波器的類型;OE反是頻率輸出使能引腳,可以控制輸出的狀態(tài),當(dāng)有多個(gè)芯片引腳共用微處理器的輸出引腳時(shí),也可以作為片選信號(hào),OUT是頻率輸出引腳,GND是芯片的接地引腳,VCC為芯片提供工作電壓,下表是S0、S1及S2、S3的可用組合。
Vadrb3.jpg

TCS3200D 識(shí)別顏色的原理

由上面的介紹可知,這種可編程的彩色光到頻率轉(zhuǎn)換器適合于色度計(jì)測(cè)量應(yīng)用領(lǐng)域,如彩色打印、醫(yī)療診斷、計(jì)算機(jī)彩色監(jiān)視器校準(zhǔn)以及油漆、紡織品、化妝品和印刷材料的過程控制和色彩配合。下面以TCS3200D 在色板顏色識(shí)別的應(yīng)用為例,介紹它的具體使用。首先了解一些光與顏色的知識(shí)。

三原色的感應(yīng)原理

通常所看到的物體顏色,實(shí)際上是物體表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反應(yīng)。白色是由各種頻率的可見光混合在一起構(gòu)成的,也就是說白光中包含著各種顏色的色光(如紅R、黃Y 、綠G、青V、藍(lán)B 、紫P )。根據(jù)德國(guó)物理學(xué)家赫姆霍茲(Helinholtz)的三原色理論可知,各種顏色是由不同比例的三原色(紅、綠、藍(lán))混合而成的。

TCS3200D 識(shí)別顏色的原理

由三原色感應(yīng)原理可知,如果知道構(gòu)成各種顏色的三原色的值,就能夠知道所測(cè)試物體的顏色。對(duì)于TCS3200D 來說,當(dāng)選定一個(gè)顏色濾波器時(shí),它只允許某種特定的原色通過,阻止其他原色的通過。例如:當(dāng)選擇紅色濾波器時(shí),入射光中只有紅色可以通過,藍(lán)色和綠色都被阻止,這樣就可以得到紅色光的光強(qiáng);同時(shí),選擇其他的濾波器,就可以得到藍(lán)色光和綠色光的光強(qiáng)。通過這三個(gè)值,就可以分析投射到TCS3200D 傳感器上的光的顏色。

白平衡和顏色識(shí)別原理

白平衡就是告訴系統(tǒng)什么是白色。從理論上講,白色是由等量的紅色、綠色和藍(lán)色混合而成的;但實(shí)際上,白色中的三原色并不完全相等,并且對(duì)于TCS3200D 的光傳感器來說,它對(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)整。這里有兩種方法來計(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è)比例因子,通過這個(gè)比例因子可以把這些脈沖數(shù)變?yōu)?255 。在實(shí)際測(cè)試時(shí),室外同樣的時(shí)間進(jìn)行計(jì)數(shù),把測(cè)得的脈沖數(shù)再乘以求得的比例因子,然后就可以得到所對(duì)應(yīng)的R、G 和B 的值。

使用方法

硬件設(shè)備

  1. Carduino UNO R3 控制器×1
  2. Arduino 傳感器擴(kuò)展板V5.0×1
  3. Color Sensor顏色傳感器模塊×1
  4. 3P傳感器連接線×5
  5. 4P傳感器連接線×2
  6. IR&LED Modue×5 (紅、白、藍(lán)、黃、綠色各一個(gè))
  7. USB 數(shù)據(jù)通信線×1
  8. 色板×1

試驗(yàn)接線圖

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

Yansejiexian.jpg
使用杜邦線將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 。使用傳感器線將各種顏色食人魚燈連接到 Arduino傳感器擴(kuò)展板上,連接順序?yàn)榧t色食人魚燈接數(shù)字口 8 ,黃色燈接數(shù)字口 9 ,綠色燈接數(shù)字口10,藍(lán)色燈接數(shù)字口 11 ,白色燈接數(shù)字口 12。( 注:在使用傳感器線、杜邦線時(shí),應(yīng)注意對(duì)應(yīng)連接,否則后果自負(fù)。) 完成硬件連接后,將 TimerOne庫文件粘貼到arduino軟件的libraries 中(如需庫文件請(qǐng)與我們聯(lián)系),無庫文件或?qū)煳募佩e(cuò)位置代碼編譯可能將會(huì)出現(xiàn)錯(cuò)誤提示。

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

例子程序

#include <TimerOne.h>       // 引用 TimerOne.h 庫文件 
#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,用于過濾器排列 
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% 
}  
//  選擇過濾器的顏色  
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 
                              // 選擇過濾器顏色 
} 
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);        // 沒有過濾紅色 
         break; 
    case 1: 
         Serial.print("->Frequency R=");  // 串口打印字符串"->Frequency R=" 
         Serial.println(g_count);         // 串口打印 g_count變量值 
         g_array[0] = g_count;           
         TSC_WB(HIGH, HIGH);       // 沒有過濾綠色 
         break; 
    case 2: 
         Serial.print("->Frequency G=");  // 串口打印字符串"->Frequency G=" 
         Serial.println(g_count);         // 串口打印 g_count變量值 
         g_array[1] = g_count; 
         TSC_WB(LOW, HIGH);       // 沒有過濾藍(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);       // 清除(無過濾)                                                                      
         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);                   //打開串口并設(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ù)值滿足為紅色值范圍則執(zhí)行下面語句 
       { 
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ù)值滿足為黃色值范圍則執(zhí)行下面語句 
       {
 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ù)值滿足為綠色值范圍則執(zhí)行下面語句 
       { 
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ù)值滿足為藍(lán)色值范圍則執(zhí)行下面語句 
       { 
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ù)值滿足為白色值范圍則執(zhí)行下面語句 
       { 
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ù)值不滿足上述顏色值范圍則執(zhí)行下面語句 
       { 
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)象即白色食人魚燈亮起,也是其系統(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è)試程序編寫者特編寫了一段應(yīng)用五種顏色食人魚燈來顯示其檢測(cè)到的顏色。判斷語句中的范圍為程序編寫者在實(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í)(即不滿足判斷語句的條件時(shí))應(yīng)只在串口打印"->Other Color" ,而無其他現(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

視頻演示

Hong wai yan se 01.png
Yan se 01.png


產(chǎn)品相關(guān)推薦

Erweima.png

購買地址

TCS3200D 顏色傳感器

周邊產(chǎn)品推薦

Carduino UNO R3 控制器
灰度傳感器
Arduino ColorPAL Color Sensor 進(jìn)口顏色傳感器 顏色識(shí)別
Arduino 高亮LED食人魚燈

相關(guān)問題解答

Arduino 顏色傳感器評(píng)測(cè)

相關(guān)學(xué)習(xí)資料

視頻: 運(yùn)用顏色傳感器進(jìn)行多彩顏色識(shí)別檢測(cè)
視頻: 愛上Arduino與愛上Processing互動(dòng)之顏色過度識(shí)別
視頻: 紅外無線發(fā)射接收之顏色識(shí)別系統(tǒng)
奧松機(jī)器人技術(shù)論壇