Skip to content

颜色传感器 Color Sensor

FLL 最重要的传感器,没有之一。巡线、找线、识别场地标记全靠它。

能测什么

模式读值说明
颜色(Color)黑、白、红、黄、绿、蓝、青、洋红/紫、无颜色识别离散颜色
反射光(Reflected Light)0-100%传感器发光,测反射回来多少。巡线用这个
环境光(Ambient Light)0-100%不发光,测环境亮度,FLL 很少用

安装要点

  • 朝下,离地约 16 mm(官方最佳读取距离,约 5 块乐高平板高)。太高读值发散,太低会蹭地。
  • 装在底盘前部、两驱动轮轴线之前——传感器越靠前,巡线纠偏越及时。
  • 双传感器巡线时,两个并排装,间距约一条线宽。
  • 遮光:传感器周围用乐高件围一圈,减少环境光干扰,比赛场馆的射灯很坑。

Word Blocks 积木

<颜色传感器 [C] 颜色 = [黑色]>          ← Sensors 类,条件积木
(颜色传感器 [C] 反射光)                 ← 圆形读值积木
等待到 <颜色传感器 [C] 颜色 = [黑色]>

示例 1:走到黑线停

当程序启动时
设置移动马达 [A+E]
开始移动 [前进]
等待到 <颜色传感器 [C] 反射光 < [30]>
停止移动

示例 2:数线

设置 [线数] 为 [0]
开始移动 [前进]
重复执行直到 <(线数) = [3]>
  等待到 <颜色传感器 [C] 反射光 < [30]>
  将 [线数] 增加 [1]
  等待到 <颜色传感器 [C] 反射光 > [60]>    ← 关键:等出线,否则一条线数好几次
停止移动

Python 写法

python
import runloop, color_sensor, color
from hub import port

async def main():
    # 读颜色(返回 color.BLACK 等常量)
    if color_sensor.color(port.C) == color.BLACK:
        pass
    # 读反射光 0-100
    value = color_sensor.reflection(port.C)

runloop.run(main())

阈值标定:必做

"反射光 < 30 算黑线"里的 30 不能抄,必须在你的场地、你的灯光下实测:

  1. 写一段程序把反射光实时显示到灯光矩阵:重复执行 → 显示文字 (反射光)
  2. 把传感器放在黑线上读一个数(比如 12),放在白场上读一个数(比如 85)。
  3. 阈值取中间:(12 + 85) / 2 ≈ 48。判黑用 < 48,判白用 > 48

每换一个场地都要重标

灯光、垫子新旧、传感器高度都影响读值。比赛日到场第一件事:重测黑白值。用变量存阈值,只改一处。

常见坑

  • 颜色模式在快速移动时不可靠:机器人一快,颜色跳变。巡线永远用反射光,不用颜色模式。
  • 场地上的彩色图案会骗过"找黑线":深蓝、深绿的反射光也很低。数线时结合位置(先走固定距离再开始找线)。
  • 两个传感器读值不一样是正常的:每个各标各的阈值。

进阶应用见巡线。下一个:距离传感器