
TCS3472传感器模块,使用IIC或者UART通信,可直接输出RGB值。有功耗小,体积小,安装方便的优势。其工作原理是,通过照明LED发光,照射到被测物体后,返回光经过滤镜检测RGB的比例值,根据RGB的比例值识别出颜色。模块具有两种方式读取数据,即串口UART(TTL电平)或者IIC(2线),串口的波特率有9600bps与115200bps可配置,有连续、询问输出两种方式还能掉电保存设置。还可以进行简单的7种颜色识别,不需要计算RGB值。能适应不同的工作环境,与单片机及电脑连接。模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU不参与数据处理工作。
| 引脚名称 | 描述 |
|---|---|
| G | GND(电源输入负极) |
| V | VCC(电源输入正极) |
| SDA | 数据引脚 |
| MISO | 时钟引脚 |
供电电压: 3.3V-5V
连接方式:PH2.0 4P端子线
安装方式:乐高搭建

不会使用库文件的参考这里:库文件安装使用
库文件下载:点击下载
米思齐库文件下载步骤(使用代码前前下载米思齐库文件):
第一步:找到库文件
点击设置,再点击管理库

第二步:找到对应的库并勾选上

第三步:点击导入

最后一步:检查是否添加成功,如果成功如下图所示,没有则检查以上步骤是否出错。

不会安装库文件的请点击这里:参考链接
示例程序(UNO开发板):点击下载
#include <Wire.h>
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
void printColor() {
uint16_t clearcol = 0;
uint16_t red = 0;
uint16_t green = 0;
uint16_t blue = 0;
float r = 0;
float g = 0;
float b = 0;
float average = 0;
delay(100);
tcs.getRawData(&red, &green, &blue, &clearcol);
//加权平均值算法
average = (red + (green + blue)) / 3;
r = red / average;
g = green / average;
b = blue / average;
Serial.println(String("r ") + String(r) + String(" g ") + String(g) + String(" b ") + String(b));
if ((r > 1.2 && r < 1.9) && (g < 1 && (b > 0.45 && b < 0.9))) {
Serial.print(" 红");
} else if (r < 1.1 && (g > 1.3 && b < 0.7)) {
Serial.print(" 绿");
} else if ((r > 1 && r < 1.5) && ((g > 1.1 && g < 1.4) && (b > 0.35 && b < 0.75))) {
Serial.print(" 黄");
} else if ((r > 0.7 && r < 1) && (g < 1.2 && b > 1)) {
Serial.print(" 蓝");
} else if (false) {
} else {
Serial.print(" 不是匹配的颜色");
}
delay(10);
}
void setup(){
Serial.begin(9600);
if (tcs.begin(0x29)) {
Serial.println("搜索到TCS34725");
} else {
Serial.println("没有搜索到TCS34725");
while (true) {
delay(1);
}
}
}
void loop(){
printColor();
}
示例程序(ESP32开发板):
import machine
import time
from machine import Pin,I2C
from tcs34725 import TCS34725
import time
# 创建I2C对象
i2cObj = I2C(1,scl = Pin(22),sda = Pin(21),freq = 400000)
# 打印扫描出的I2C对象
print("I2C Bus Scan: ", i2cObj .scan(), "\n")
# 创建tcs34725颜色识别模块对象
tcs = TCS34725(i2cObj ,0x29)
# 创建RGB颜色计算函数
def Colour():
try:
red,green,blue,colour = tcs.read(True) # 读取颜色值
if colour != 0: # 如果colour不等于0
Red = int((red / colour) * 32) # 计算红色的值
Green = int((green / colour) * 32) # 计算绿色的值
Blue = int((blue / colour) * 32) # 计算蓝色的值
return Red,Green,Blue
else:
return 0,0,0
except :
print("数据异常!")
RuntimeError
RGB = [0, 0, 0]
while True:
print('(r,g,b)对应是',end ="")
# 获取颜色R,G,B函数
print(Colour())
time.sleep_ms(10)
示例程序(UNO开发板):点击下载

示例程序(ESP32开发板):点击下载
Arduino UNO 测试环境搭建
准备配件:
电路接线图:

ESP32 Python 测试环境搭建
Arduino UNO视频教程:点击查看
ESP32 Python视频教程:
Arduino UNO测试结论:
下入代码,之后将模块对准颜色板。

对准不同的颜色,可以观察到电脑串口打印不同的r,g,b值。
