Skip to content

Hub 内置传感器

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

陀螺仪 Gyro / IMU

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

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

Word Blocks 积木

(偏航角)                      ← Sensors 类,圆形读值
重设偏航角 [0]
<hub [被摇晃]>
等待到 <偏航角 > [88]>

关键特性

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

示例:陀螺仪右转 90 度

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

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

Hub 按钮

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

当 [左] 按钮 [被按下] 时
<[右] 按钮 [被按下]>

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

灯光矩阵 Light Matrix(输出)

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

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

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

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

扬声器(输出)

播放蜂鸣声 [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                   # 转成度

    light_matrix.write("Hi")               # 显示文字
    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 进阶