TCS34725 RGB 顏色感測器模組 Arduino 範例與模組教學
步驟與項目
TCS34725 RGB 顏色感測器模組 Arduino 範例與模組教學
TCS34725 裝置可提供紅、綠、藍 (RGB) 和透明光感測值的數位輸出。內建的紅外線阻隔濾光片位於色彩感測光電二極體上,可減少進光中的紅外線成分,確保色彩測量的準確性。高靈敏度、寬動態範圍以及紅外線阻隔濾光片,使 TCS34725 成為在多變光源條件及透光材料中應用的理想色彩感測解決方案。
產品連結: https://www.taiwansensor.com.tw/sku/SNV-003523
主要特點
- 紅、綠、藍 (RGB) 和透明光感測,配備紅外線阻隔濾光片
- 可編程的模擬增益和整合時間
- 3,800,000:1 動態範圍
- 高靈敏度 —— 非常適合在深色玻璃後方操作
- 可屏蔽的中斷功能
- 可編程的上限和下限閾值,具持久性過濾器
- 電源管理
- 低功耗 —— 2.5 μA 睡眠模式
- 65 μA 等待模式,具可編程等待時間,從 2.4 毫秒至超過 7 秒
- I2C 快速模式相容接口,數據速率可達 400 kbit/s
- 輸入電壓水準與 VDD 或 1.8 V 匹配的匯流排相容
- 註冊集和引腳與 TCS3x71 系列相容
- 小型 2 mm x 2.4 mm 無引腳 (FN) 封裝
引腳介紹
- LED:當電平為低時,產生中斷輸出。
- INT:中斷輸出 - 開漏(低電平啟動)。
- SDA:I2C 串行數據時鐘輸入端 - 用於 I2C 串行數據的時鐘信號。
- SCL:I2C 串行數據 I/O 端 - 用於 I2C 的串行數據 I/O。
- 3V3:連接至 3.3V 電壓。
- GND:電源接地,所有電壓均參考 GND。
- VIN:電源電壓輸入。
原理
TCS3472 光轉數位轉換器包含一個 3 × 4 光電二極體陣列、四個將光電二極體電流整合的類比數位轉換器(ADC)、數據暫存器、狀態機和 I2C 接口。3 × 4 的光電二極體陣列由紅色濾光、綠色濾光、藍色濾光和透明(未濾光)光電二極體組成。此外,光電二極體還覆蓋了紅外線阻隔濾光片。四個整合 ADC 同步將增幅的光電二極體電流轉換為 16 位數位值。在每個轉換循環完成後,結果傳輸到雙緩衝的數據暫存器,確保數據的完整性。所有內部計時以及低功耗等待狀態均由狀態機控制。
TCS3472 的數據通訊通過高達 400 kHz 的雙線 I2C 串行匯流排實現。I2C 標準總線使其易於直接連接到微控制器和嵌入式處理器。除了 I2C 總線,TCS3472 還提供獨立的中斷信號輸出。當啟用中斷且超過用戶定義的閾值時,低電平中斷被觸發,並保持激活狀態,直到控制器清除中斷。此中斷功能簡化並提高了系統軟體的效率,消除了輪詢 TCS3472 的需求。用戶可以定義中斷的上下閾值並應用中斷持久性過濾器。中斷持久性過濾器允許用戶設定觸發中斷所需的連續超閾值事件次數。中斷輸出為開漏設計,可與其他裝置線路 OR。
Arduino 實驗步驟
步驟 1:連接電路:
步驟 1:連接電路:
TCS34725 引腳 | Arduiono Uno 引腳 |
---|---|
SDA | A4 |
SCL | A5 |
GND | GND |
3V3 | 3V3 |
INT | |
LED | |
VIN |
TCS34725 程式庫安裝與 Arduino 範例程式
在此部分,我將介紹如何為 RGB 顏色感測器安裝 Adafruit 程式庫。Adafruit 程式庫包含許多優質範例,您可以輕鬆編輯並應用於您的專案。讓我們開始吧!
步驟 1:打開程式庫管理器
開啟 Arduino IDE,點擊「工具」選單,然後從可選項目中選擇「管理程式庫」。
步驟 2:搜尋 Adafruit 程式庫
在搜尋欄中輸入「TCS」,您會看到符合的程式庫列表。從選項中選擇「Adafruit TCS34725」。
安裝完成後,您會看到狀態顯示為「已安裝」,如下圖所示。
步驟 3:打開 Adafruit 範例程式碼
恭喜您成功安裝 Adafruit 程式庫!要查看可用的範例程式碼,請參考下圖。
點擊「文件」
選擇「範例」選項
瀏覽並找到「Adafruit TCS34725」範例
點擊「Colorview」範例
範例將在 IDE 中打開,以下是該範例的程式碼。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include "Wire.h" #include "Adafruit_TCS34725.h" // Pick analog outputs, for the UNO these three work well // use ~560 ohm resistor between Red & Blue, ~1K for green (its brighter) #define redpin 3 #define greenpin 5 #define bluepin 6 // for a common anode LED, connect the common pin to +5V // for common cathode, connect the common to ground // set to false if using a common cathode LED #define commonAnode true // our RGB -> eye-recognized gamma color byte gammatable[256]; Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); void setup() { Serial.begin(9600); //Serial.println("Color View Test!"); if (tcs.begin()) { //Serial.println("Found sensor"); } else { Serial.println("No TCS34725 found ... check your connections"); while (1); // halt! } // use these three pins to drive an LED pinMode(redpin, OUTPUT); pinMode(greenpin, OUTPUT); pinMode(bluepin, OUTPUT); // thanks PhilB for this gamma table! // it helps convert RGB colors to what humans see for (int i = 0; i < 256; i++) { float x = i; x /= 255; x = pow(x, 2.5); x *= 255; if (commonAnode) { gammatable[i] = 255 - x; } else { gammatable[i] = x; } //Serial.println(gammatable[i]); } } void loop() { float red, green, blue; tcs.setInterrupt(false); // turn on LED delay(60); // takes 50ms to read tcs.getRGB(&red, &green, &blue); tcs.setInterrupt(true); // turn off LED Serial.print("R:\t"); Serial.print(int(red)); Serial.print("\tG:\t"); Serial.print(int(green)); Serial.print("\tB:\t"); Serial.print(int(blue)); Serial.print("\n"); analogWrite(redpin, gammatable[(int)red]); analogWrite(greenpin, gammatable[(int)green]); analogWrite(bluepin, gammatable[(int)blue]); } |
在 Colorview 範例中,您將讀取物體的顏色並驅動 RGB LED 來顯示檢測到的顏色。
此範例使用了一個額外的 LED,連接至 Arduino 的引腳,如下程式碼所示:
1 2 3 |
#define redpin 3 #define greenpin 5 #define bluepin 6 |
Arduino UNO 的 3、5 和 6 引腳支援 PWM。
您可以在 Arduino 上輕鬆找到支援 PWM 的引腳(有助於為 LED 提供類比值來調節亮度),這些引腳在引腳標籤前有「~」符號。
以下是範例示意:
以下這行程式碼初始化物件,以處理顏色感測器的功能。
1 |
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X); |
您可以使用 getRGB
方法在每個固定間隔讀取 RGB 顏色值,如下程式碼所示。
1 |
tcs.getRGB(&red, &green, &blue); |
獲得 RGB 值後,您可以將顏色資訊顯示在螢幕或終端機上,或者使用相同顏色來驅動 LED。
在終端機視窗中,您會看到類似下圖所示的數據。
我們正在使用 RGB LED 來重現物體的顏色。以下程式碼將驅動 LED 以匹配檢測到的顏色。
1 2 3 |
analogWrite(redpin, gammatable[(int)red]); analogWrite(greenpin, gammatable[(int)green]); analogWrite(bluepin, gammatable[(int)blue]); |
您可以透過添加自己的邏輯將此程式碼轉化為一個有價值的專案。
Arduino RGB 顏色感測器 TCS34725 常見問題解答
在此部分,您將找到有關 TCS34725 RGB 顏色感測器的常見問題解答。
- RGB 感測器的應用有哪些?
RGB 顏色感測器的應用包括:- RGB LED 背光控制
- 環境光的色溫測量
- 用於自動顯示控制的環境光測量
- 液體和氣體分析
- 產品顏色驗證和分類
- 工業自動化等許多應用
- RGB 顏色感測器如何工作?
RGB 顏色感測器檢測光線中的紅、綠和藍光成分量。感測器會有三個色彩濾鏡來分離 R、G 和 B 成分。如需更多資訊,請參考本文中的 RGB 感測器基本介紹部分。
- 如何將 Arduino 連接至 RGB 顏色感測器?
您可以使用 I2C 接口將 Arduino 連接至 TCS34725 RGB 顏色感測器。根據感測器類型,您可能需要使用 UART、I2C 或 SPI 接口。在本文中,您可以看到如何使用 I2C 線將 TCS34725 連接到 Arduino。
- Arduino 能夠檢測顏色嗎?
當 Arduino 搭配顏色感測器時,便能夠檢測顏色。TCS34725 是一款 RGB 顏色感測器,可讓您快速查看物體的顏色。
連接細節、範例程式碼和 RGB 感測器的工作原理已在上述章節中解釋。
- RGB 感測器可以檢測多少種顏色?
RGB 顏色感測器檢測紅、綠和藍光的量。由於三原色可按不同比例組合成許多顏色,RGB 感測器也可以檢測多種顏色。使用 8 位元 RGB 感測器時,紅、綠和藍色的值範圍可以從 0 到 255。
這表示總共可以有 256 * 256 * 256 ≈ 1600 萬種顏色!
因此,您可以在下一個顏色檢測專案中使用顏色感測器來檢測豐富多彩的顏色範圍。
結論
本文已帶您了解構建 Arduino 顏色感測器專案所需的所有關鍵資訊。我相信這篇文章對您有幫助,且易於理解。我曾使用 RGB 顏色感測器做過一些示範專案,目的是檢測水果顏色以判斷是否已完全成熟。Arduino 使用顏色感測器的數據來預測水果的保存期。我很想知道您將使用 Arduino 顏色感測器製作的專案。請提供您創建的專案連結,期待看到您的專案實際運行的效果!
發佈留言
很抱歉,必須登入網站才能發佈留言。