跳到主要内容

Hub 内置传感器

Hub 本身就是一堆传感器:六轴陀螺仪、两个按钮,外加灯光矩阵和扬声器两个输出设备。不占任何端口。

陀螺仪 Gyro / IMU

六轴惯性测量单元,FLL 精准走位的核心。三个角度:

角度含义FLL 用途
偏航 Yaw机器人朝向(水平旋转)转弯、走直线,90% 的用途
俯仰 Pitch前后翘起检测上坡/被顶起
横滚 Roll左右倾斜很少用

Word Blocks 积木

wordblocks
(偏航角)                      ← Sensors 类,报告积木
重设偏航角 [0]
<hub [被摇晃]>
等待到 <偏航角 > [88]>

关键特性

  • Yaw 从启动时的朝向算起,Word Blocks 里右转增大、左转减小(顺时针为正),范围 -180 到 180。Python API 的原始值方向相反(左转为正),见下方代码注释。
  • 重设偏航角 0当前朝向定义为 0 度,之后的读数都相对于它。
  • 陀螺仪有微小漂移:静止时读数可能缓慢变化。每次出发前重设,长程序中途找机会(靠墙时)重设。

示例:陀螺仪右转 90 度

wordblocks
重设偏航角 [0]
开始移动 [转向 100]
等待到 <偏航角 > [88]>          ← 留 2 度提前量,惯性会补上
停止移动

为什么是 88 不是 90:停止指令发出后机器人还会滑一点。提前量多少需实测,详见陀螺仪直行与转弯

Hub 按钮

左、右两个按钮可编程(中间按钮留给系统:启动/停止程序):

wordblocks
 [左] 按钮 [被按下]
<[右] 按钮 [被按下]>

用途:切换调试模式、手动触发附件归零、场边确认。

灯光矩阵 Light Matrix(输出)

5x5 LED,调试信息的显示屏:

wordblocks
显示图案 [笑脸]
显示文字 [Go]
关闭所有图案
设置像素 [x] [y] 亮度 [100]

最有用的调试招数:把传感器读值显示出来。

wordblocks
重复执行
  显示文字 (颜色传感器 [C] 反射光)

扬声器(输出)

wordblocks
播放蜂鸣声 [60] [0.2]← 60 是音高(MIDI 音符号),不是频率

调试时在程序关键节点放不同音高的蜂鸣声,听声音就知道程序跑到哪一步了——眼睛盯机器人,耳朵盯程序。

Python 写法

python
import runloop, motor_pair
from hub import port, motion_sensor, light_matrix, button, sound

async def main():
    motion_sensor.reset_yaw(0)
    angles = motion_sensor.tilt_angles()   # (yaw, pitch, roll),单位是 0.1 度!
    yaw = -angles[0] / 10                  # 原始值左转为正;取负与 Word Blocks 的右转为正一致

    await light_matrix.write("Hi")         # 显示文字(await:滚动显示完才继续)
    sound.beep(440, 200, 100)              # 440 Hz,200 ms,音量 100

    if button.pressed(button.LEFT):        # 返回按住毫秒数,0 = 没按
        pass

runloop.run(main())

Python 的角度单位是 0.1 度

tilt_angles() 返回的 yaw 是分度(decidegrees):读值 900 = 90 度。除以 10 再用。

传感器篇完成。接下来把它们用起来:Word Blocks 进阶

© 2026 FLL 知识库 · 保留所有权利