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 进阶。