记录无人机RBG灯的意思

DEFINE_COLOUR_SEQUENCE 是一个宏,用于生成一个32位整数。这个整数被划分成10个"帧",每一帧占用3个位(bit),用来编码一个颜色值。

YELLOW 就是一个预定义的颜色常量,它被定义为 GREEN | RED 的组合(因为黄色就是由红和绿混合而成的)。

把这行代码展开来看,它的含义是:

时间片 (Step) 0 1 2 3 4 5 6 7 8 9
颜色值 YELLOW YELLOW BLACK BLACK YELLOW YELLOW BLACK BLACK BLACK BLACK
LED状态 亮 (黄) 亮 (黄) 亮 (黄) 亮 (黄)

💡 实际视觉效果

update() 函数中,系统每隔100毫秒(AP_HAL::millis()/100)前进一个时间片。因此,上面的定义会产生如下视觉效果:

  1. 第0-200ms:黄色,亮起 (YELLOW, YELLOW)

  2. 第200-400ms:熄灭 (BLACK, BLACK)

  3. 第400-600ms:黄色,再次亮起 (YELLOW, YELLOW)

  4. 第600-1000ms:长时间熄灭 (BLACK, BLACK, BLACK, BLACK)

这样,人眼看到的模式就是 "闪、灭、闪、长灭" ,也就是我们所说的 "双闪黄灯",用来明确提示飞手"预检失败,请检查地面站"。

所以,这行代码就是闪黄灯模式的"乐谱",而 update() 函数就是那个"演奏家",按照这个乐谱指挥LED灯亮灭。如果你把其中的 YELLOW 改成 RED,它就会变成双闪红灯。这种代码设计让你可以通过修改这个序列,轻松定制任何想要的闪烁模式。