Arduino i2c光纖辨識LED燈顏色
🔍 使用 Arduino 與 TCS34725 判斷 LED 顏色
本篇教學介紹如何使用 Arduino UNO 搭配 TCS34725 顏色感測器來判斷紅色與綠色 LED 燈的顏色。
🧰 所需元件
- Arduino UNO x 1
- TCS34725 顏色感測器模組 x 1~4
- I2C 擴充板 x 1(支援多組 SDx/SCx)
- 紅綠色 LED
- 光纖(可選)
🔌 接線方式
- Arduino UNO A4 (SDA) → I2C 擴充板 SDA
- Arduino UNO A5 (SCL) → I2C 擴充板 SCL
- TCS34725 接至 SD0/SC0 ~ SD3/SC3 對應腳位
注意:TCS34725 的預設 I2C 位址為
0x29。若同時接多個感測器,請使用 TCA9548A 等 I2C 多工器來避免位址衝突。
💻 程式碼範例
請先在 Arduino IDE 中安裝 Adafruit TCS34725 函式庫,然後上傳以下程式碼至 Arduino:
#include <Wire.h>
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
void setup() {
Serial.begin(9600);
if (tcs.begin()) {
Serial.println("TCS34725 初始化成功");
} else {
Serial.println("找不到感測器,請檢查接線");
while (1);
}
}
void loop() {
uint16_t r, g, b, c;
float red, green, blue;
tcs.getRawData(&r, &g, &b, &c);
if (c == 0) c = 1;
red = (float)r / c * 255.0;
green = (float)g / c * 255.0;
blue = (float)b / c * 255.0;
Serial.print("R: "); Serial.print(red);
Serial.print(" G: "); Serial.print(green);
Serial.print(" B: "); Serial.print(blue);
String result = "未知";
if (red > 200 && green < 100) {
result = "紅色";
} else if (green > 200 && red < 100) {
result = "綠色";
}
Serial.print(" => 判斷為:");
Serial.println(result);
delay(1000);
}
📋 輸出結果
開啟序列監控視窗(Serial Monitor)後,可看到以下範例輸出:
R: 240.00 G: 50.00 B: 60.00 => 判斷為:紅色
R: 60.00 G: 230.00 B: 80.00 => 判斷為:綠色
✅ 小技巧與建議
- RGB 閾值可能需要根據環境與 LED 調整。
- 如需同時偵測多顆 LED,可搭配 TCA9548A 多工器。
📦 小結
透過 Arduino 與 TCS34725,能辨識 LED 顏色,是入門電子與感測器應用的好方法。

留言
發佈留言