• ardupilot添加自定义RGBLed闪烁功能


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

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

    步来的,但是别人的就是可以编译通过,而自己的则一直是满江红,最后在结合了两个教学视频知识点的基础上终于完成了对RGBLed的控制。

    1、在ardupilot中对RGBLed的控制是在l路径librariesAP_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、修改好底层程序后开始修改上层应用

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

      

           

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

     

      创建自定义类的对象:

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

    将函数添加到任务列表

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

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

  • 相关阅读:
    Spring IOC知识点一网打尽
    Spring中-IOC-Bean的初始化-循环依赖的解决
    原型模式(Prototype)
    生成器模式
    工厂模式
    单例模式
    查询性能优化
    索引
    sql游标的使用入门
    js和C#中的编码和解码
  • 原文地址:https://www.cnblogs.com/jiayezi/p/15438570.html
Copyright © 2020-2023  润新知