ardupilot添加自定义RGBLed闪烁功能

ardupilot添加自定义RGBLed闪烁功能

1、在ardupilot中对RGBLed的控制是在l路径libraries\AP_Notify下,复制该文件夹,并粘贴在libraries下,根据自己的喜好更换文件夹名称

我这里将其命名为:AP_My_Notify,并将其目录下对本次试验没有用的文件删除,同时将各文件进行重命名,这里在每个文件名称前面加上“My”

将文件复制并重命名好后,需要修改所使用到的类,

2、对所有的类进行重命名操作后,将所需要替换的地方全部替换掉;

3、在My_RGBLed.cpp中对void My_RGBLed::update_colours(void)进行修改,改为:

复制代码
// _scheduled_update - updates _red, _green, _blue according to notify flags
uint8_t _i_Step = 0;
void My_RGBLed::update_colours(void)
{
    uint8_t brightness = _led_bright;

    switch (_i_Step) {
    case 0:
        _red_des = brightness;
        _blue_des = _led_off;
        _green_des = _led_off;
        _i_Step = 1;
        break;
    case 1:
        _red_des = _led_off;
        _blue_des = brightness;
        _green_des = _led_off;
        _i_Step = 2;
        break;
    case 2:
        _red_des = _led_off;
        _blue_des = _led_off;
        _green_des = brightness;
        _i_Step = 0;
        break;
    }
}
复制代码

该部分程序意思为控制RGBLed灯泡红、蓝、绿,三种颜色依次点亮,并循环执行;

4、修改好底层程序后开始修改上层应用

在修改上层应用之前需要先让程序识别到我们自己定义的程序,这里需要打开ArduCopter\wscriptArduCopter\make.inc,在对应的文件中添加上我们自定义的文件夹,如下所示:

5、开始对顶层应用进行修改:
①、在头文件Copter.h中导入我们自定义的头文件#include <AP_My_Notify/My_AP_Notify.h>:

创建自定义类的对象:

创建一个leds.cpp的文件,用于对底层函数的调用;

 

将函数添加到任务列表

 

对init_ardupilot函数进行修改,将自定义的功能在这里初始化(由于这里自定义的是对RGBLed的控制,因此要将原来的AP_Notify的初始化做屏蔽处理)

此时可对程序编译,若编译通过,将固件烧录进Pixhawk上的灯会红绿蓝三色交替闪烁:

相关文章