Arduino i2c光纖辨識LED燈顏色

使用 Arduino 與 TCS34725 判斷 LED 顏色

🔍 使用 Arduino 與 TCS34725 判斷 LED 顏色

本篇教學介紹如何使用 Arduino UNO 搭配 TCS34725 顏色感測器來判斷紅色與綠色 LED 燈的顏色。

Read More

🧰 所需元件

  • 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 顏色,是入門電子與感測器應用的好方法。

留言

此網誌的熱門文章

Angular 專案 - Employee Management管理系統

主題式英文單字學習|家居與建築篇