ardupilot添加自定义RGBLed闪烁功能

  在学习了无人机飞控固件开发教程 - 网易云课堂 (163.com)Ardupilot固件二次开发-初级 - 网易云课堂 (163.com)后,想着跟随视频脚步写个对RGBLed

灯的控制,但所谓是“一看就会,一写就废”,作为身处飞控门外的小白,在实际编写代码的过程中还是遇到了挺多困难的;最典型的就是明明是按照视频一步

步来的,但是别人的就是可以编译通过,而自己的则一直是满江红,最后在结合了两个教学视频知识点的基础上终于完成了对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上的灯会红绿蓝三色交替闪烁:

 

posted @ 2021-10-22 14:05  伽椰子真可爱  阅读(455)  评论(0编辑  收藏  举报