找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7988|回复: 6
打印 上一主题 下一主题
收起左侧

匿名四轴之迷你遥控器附软硬件源码

[复制链接]
跳转到指定楼层
楼主
每一个做四轴飞行器都会遇到这样的情况,飞机做好了, 软件没调好!!
还有什么比这更让人抓狂吗? 有!!那就是想飞的时候,发现没有遥控器!!!

这么让人抓狂的事情,我都遇到了!!!所以在做飞机的时候把遥控器一起做了吧。

分享一个开源的遥控器设计,嗯,就是匿名四轴的,的确很不错,代码的可读性很强,作为入门学习绝对没问题。


这个就是传说中的遥控器源码
匿名遥控器V1.2.zip (488.18 KB, 下载次数: 72)


这个是设计原理图
ANO-Remoter V1.2.pdf (125.08 KB, 下载次数: 60)


如果你直接已经做出来或是买了匿名遥控器,恭喜,你会用上这个驱动的
FTDI USB Drivers.zip (1.16 MB, 下载次数: 45)



下面是部分源码预览:
  1. /************************ (C) COPYRIGHT 2014 ANO Tech ******************************
  2. * 作者                 :匿名科创
  3. * 文件名  :ANO_RC.cpp
  4. * 描述    :遥控通道数据处理
  5. * 技术Q群 :190169595
  6. **********************************************************************************/
  7. #include "ANO_RC.h"

  8. ANO_RC rc;

  9. ANO_RC::ANO_RC()
  10. {
  11.         Init();
  12. }

  13. void ANO_RC::Init(void)
  14. {
  15.         DataRaw[ROLL] = 1500;
  16.         DataRaw[PITCH] = 1500;
  17.         DataRaw[YAW] = 1500;        
  18. }

  19. void ANO_RC::DataGet(void)
  20. {
  21.         DataRaw[ROLL] = DataRaw[ROLL] * 0.99 + (float)ADC_ConvertedValue[3] * 0.01;
  22.         DataRaw[PITCH] = DataRaw[PITCH] * 0.99 + (float)ADC_ConvertedValue[2] * 0.01;
  23.         DataRaw[YAW] = DataRaw[YAW] * 0.99 + (float)ADC_ConvertedValue[1] * 0.01;
  24.         DataRaw[THROTTLE] = DataRaw[THROTTLE] * 0.99 + (float)ADC_ConvertedValue[0] * 0.01;
  25.         KeyDataRawL = (float)ADC_ConvertedValue[5];
  26.         KeyDataRawR = (float)ADC_ConvertedValue[6];
  27. }

  28. void ANO_RC::DataCalculate(void)
  29. {
  30.         Data[ROLL] = (u16)(1000 - DataRaw[ROLL]/2 + 1000) - DataTrim[ROLL];        
  31.         Data[ROLL] =        (Data[ROLL] - 1500) * 0.8 +1500;
  32.         Data[PITCH] = (u16)(DataRaw[PITCH]/2 + 1000) - DataTrim[PITCH];        
  33.         Data[PITCH] =        (Data[PITCH] - 1500) * 0.8 +1500;

  34.         Data[YAW] = (u16)(1000 - DataRaw[YAW]/2  + 1000) - DataTrim[YAW];               
  35.         Data[YAW] =        (Data[YAW] - 1500) * 0.8 +1500;
  36.         Data[THROTTLE] = (u16)(DataRaw[THROTTLE]/2 + 1000) - DataTrim[THROTTLE];               
  37.         Data[THROTTLE] =        (Data[THROTTLE] - 1500) * 0.85 +1500;
  38.         
  39.         KeyDataL = (u16)KeyDataRawL;
  40.         KeyDataR = (u16)KeyDataRawR;
  41. }

  42. void ANO_RC::KeyCheck(void)
  43. {
  44.         static u8 keyFlagL = 1, keyFlagR = 1;
  45.         static u8 timeDelayFlag = 0;
  46.         
  47.         if(timeDelayFlag)
  48.                 timeDelayFlag --;        
  49.         
  50.         if(KeyDataL<100 && keyFlagL)        //THR+
  51.         {
  52.                 if(!timeDelayFlag)
  53.                         timeDelayFlag = 10;
  54.                
  55.                 if((KeyDataL<100 && keyFlagL) && timeDelayFlag == 1)        
  56.                 {
  57.                         DataTrim[THROTTLE] -= 2;
  58.                         param.SAVE_RC_OFFSET();
  59.                         keyFlagL = 0;               
  60.                 }
  61.         }
  62.         else if(KeyDataL>1950 && KeyDataL<2100 && keyFlagL)        //YAW-
  63.         {
  64.                 if(!timeDelayFlag)
  65.                         timeDelayFlag = 10;
  66.                
  67.                 if(KeyDataL>1950 && KeyDataL<2100 && timeDelayFlag == 1)
  68.                 {
  69.                         DataTrim[YAW] += 2;
  70.                         param.SAVE_RC_OFFSET();
  71.                         keyFlagL = 0;               
  72.                 }
  73.         }
  74.         else if(KeyDataL>2650 && KeyDataL<2750 && keyFlagL)        //THR-
  75.         {
  76.                 if(!timeDelayFlag)
  77.                         timeDelayFlag = 10;
  78.                
  79.                 if(KeyDataL>2650 && KeyDataL<2750 && timeDelayFlag == 1)
  80.                 {
  81.                         DataTrim[THROTTLE] += 2;
  82.                         param.SAVE_RC_OFFSET();
  83.                         keyFlagL = 0;               
  84.                 }
  85.         }
  86.         else if(KeyDataL>3000 && KeyDataL<3100 && keyFlagL)        //YAW+
  87.         {
  88.                 if(!timeDelayFlag)
  89.                         timeDelayFlag = 10;
  90.                
  91.                 if(KeyDataL>3000 && KeyDataL<3100 && timeDelayFlag == 1)
  92.                 {
  93.                         DataTrim[YAW] -= 2;
  94.                         param.SAVE_RC_OFFSET();
  95.                         keyFlagL = 0;
  96.                 }
  97.         }
  98.         else if(KeyDataL>4050)
  99.         {
  100.                 keyFlagL = 1;
  101.         }
  102.         
  103.         
  104.         if(KeyDataR<100 && keyFlagR)        //PITCH+
  105.         {
  106.                 if(!timeDelayFlag)
  107.                         timeDelayFlag = 10;
  108.                
  109.                 if(KeyDataR<100 && keyFlagR && timeDelayFlag == 1)
  110.                 {
  111.                         DataTrim[PITCH] -= 2;
  112.                         param.SAVE_RC_OFFSET();
  113.                         keyFlagR = 0;               
  114.                 }
  115.         }
  116.         else if(KeyDataR>1900 && KeyDataR<2100 && keyFlagR)        //ROLL+
  117.         {
  118.                 if(!timeDelayFlag)
  119.                         timeDelayFlag = 10;
  120.                
  121.                 if(KeyDataR>1900 && KeyDataR<2100 && keyFlagR && timeDelayFlag == 1)
  122.                 {
  123.                         DataTrim[ROLL] -= 2;
  124.                         param.SAVE_RC_OFFSET();
  125.                         keyFlagR = 0;               
  126.                 }
  127.         }
  128.         else if(KeyDataR>2600 && KeyDataR<2800 && keyFlagR)        //PITCH-
  129.         {
  130.                 if(!timeDelayFlag)
  131.                         timeDelayFlag = 10;
  132.                
  133.                 if(KeyDataR>2600 && KeyDataR<2800 && keyFlagR && timeDelayFlag == 1)
  134.                 {
  135.                         DataTrim[PITCH] += 2;
  136.                         param.SAVE_RC_OFFSET();
  137.                         keyFlagR = 0;        
  138.                 }                        
  139.         }
  140.         else if(KeyDataR>2950 && KeyDataR<3150 && keyFlagR)        //ROLL-
  141.         {
  142.                 if(!timeDelayFlag)
  143.                         timeDelayFlag = 10;
  144.                
  145.                 if(KeyDataR>2950 && KeyDataR<3150 && keyFlagR && timeDelayFlag == 1)
  146.                 {
  147.                         DataTrim[ROLL] += 2;
  148.                         param.SAVE_RC_OFFSET();
  149.                         keyFlagR = 0;
  150.                 }
  151.         }
  152.         else if(KeyDataR>3200 && KeyDataR<3300 && keyFlagR)
  153.         {
  154.                 if(!timeDelayFlag)
  155.                         timeDelayFlag = 10;
  156.                
  157.                 if(KeyDataR>3200 && KeyDataR<3300 && keyFlagR && timeDelayFlag == 1)
  158.                 {
  159.                 }
  160.         }
  161.         else if(KeyDataR>3350 && KeyDataR<3450 && keyFlagR)
  162.         {
  163.                 if(!timeDelayFlag)
  164.                         timeDelayFlag = 10;
  165.                
  166.                 if(KeyDataR>3350 && KeyDataR<3450 && keyFlagR && timeDelayFlag == 1)
  167.                 {

  168.                 }
  169.         }
  170.         else if(KeyDataR>4050)
  171.         {
  172.                 keyFlagR = 1;
  173.         }
  174.         
  175.         
  176. }
  177. /******************* (C) COPYRIGHT 2014 ANO TECH *****END OF FILE************/
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:101523 发表于 2017-9-18 12:04 | 只看该作者
好东西 正需要呢
回复

使用道具 举报

板凳
ID:367145 发表于 2018-12-10 16:19 | 只看该作者
楼主好人,万分感谢,辛苦辛苦



















回复

使用道具 举报

地板
ID:418772 发表于 2018-12-28 21:46 | 只看该作者
想尝试做一下
回复

使用道具 举报

5#
ID:69445 发表于 2019-1-9 23:21 | 只看该作者
楼主好人,万分感谢,辛苦辛苦
回复

使用道具 举报

6#
ID:473851 发表于 2019-2-1 13:15 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

7#
ID:621765 发表于 2019-11-28 11:52 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表