亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

TCS230/TCS3200 颜色传感器 Arduino 颜色识别全攻略

传感器原理

8×8 光二极管阵列:16 红滤波、16 绿滤波、16 蓝滤波、16 无滤波。通过 S2/S3 选择读取哪组:

S2S3选择
LL红
HH绿
LH蓝
HL清除(白光)

S0/S1 设置输出频率分频(100%/20%/2%),适配不同 MCU 计数能力。输出为频率与光强成正比的方波。

接线与基础读取

S0~S3、OUT 接数字引脚。pulseIn(pin, LOW) 测量低电平脉宽,频率 = 1e6 / 脉宽(μs)。

频率映射为 RGB 0~255

实测白色约 70 Hz,红色约 25 Hz(20% 分频下)。用 map() 线性映射:

// 红色通道示例
digitalWrite(S2, LOW); digitalWrite(S3, LOW);
frequency = pulseIn(sensorOut, LOW);
frequency = map(frequency, 25, 72, 255, 0); // 反向映射:频率越低光强越强
Serial.print("R="); Serial.print(frequency);

绿、蓝通道分别标定对应范围(如 G: 30~90, B: 25~70)。

完整循环代码

void loop() {
  // 红
  digitalWrite(S2, LOW); digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 72, 255, 0);
  Serial.print("R="); Serial.print(frequency); Serial.print(" ");

  // 绿
  digitalWrite(S2, HIGH); digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 30, 90, 255, 0);
  Serial.print("G="); Serial.print(frequency); Serial.print(" ");

  // 蓝
  digitalWrite(S2, LOW); digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 70, 255, 0);
  Serial.print("B="); Serial.println(frequency);

  delay(100);
}

受环境光影响较大,建议加遮光罩或标定白平衡。适用于颜色分拣、色标检测等简单场景。

制造工艺

  1. 树莓派光敏电阻教程:接线与 Python 读取光照强度
  2. 打造安全的 Arduino RFID 门锁——分步指南
  3. K30 CO₂ 传感器:室内空气质量实时监测
  4. DIY 数字身高仪:Arduino Nano + VL53L0X 激光测距 + OLED 显示
  5. DFRobot 电容指纹传感器 (ID809) 接入 Arduino/ESP8266 完整教程
  6. Arduino Cloud 传感器塔:温度、动作与气体监测
  7. Arduino RGB LED调色器:三电位器混色入门项目
  8. Arduino RGB 颜色混合器 – 分步制作教程
  9. 动感音乐灯光秀 —— Arduino Nano 驱动 NeoPixel 打造新年视听盛宴
  10. Arduino Nano 指纹传感器项目——分步教程
  11. 用 Arduino UNO 自制迷你钢琴 — 图文教程
  12. Arduino入门教程01:开始你的第一个项目