标题:
匿名四轴之迷你遥控器附软硬件源码
[打印本页]
作者:
51hei学习技术中
时间:
2017-3-17 01:37
标题:
匿名四轴之迷你遥控器附软硬件源码
每一个做四轴飞行器都会遇到这样的情况,飞机做好了, 软件没调好!!
还有什么比这更让人抓狂吗? 有!!那就是想飞的时候,发现没有遥控器!!!
这么让人抓狂的事情,我都遇到了!!!所以在做飞机的时候把遥控器一起做了吧。
分享一个开源的遥控器设计,嗯,就是匿名四轴的,的确很不错,代码的可读性很强,作为入门学习绝对没问题。
161801mf1o9x1f7fzmfm9i.jpeg.thumb.jpg
(56.68 KB, 下载次数: 156)
下载附件
2017-3-17 01:32 上传
这个就是传说中的遥控器源码
匿名遥控器V1.2.zip
(488.18 KB, 下载次数: 72)
2017-3-17 01:33 上传
点击文件名下载附件
下载积分: 黑币 -5
这个是设计原理图
ANO-Remoter V1.2.pdf
(125.08 KB, 下载次数: 60)
2017-3-17 01:33 上传
点击文件名下载附件
下载积分: 黑币 -5
如果你直接已经做出来或是买了匿名遥控器,恭喜,你会用上这个驱动的
FTDI USB Drivers.zip
(1.16 MB, 下载次数: 45)
2017-3-17 01:34 上传
点击文件名下载附件
下载积分: 黑币 -5
下面是部分源码预览:
/************************ (C) COPYRIGHT 2014 ANO Tech ******************************
* 作者 :匿名科创
* 文件名 :ANO_RC.cpp
* 描述 :遥控通道数据处理
* 技术Q群 :190169595
**********************************************************************************/
#include "ANO_RC.h"
ANO_RC rc;
ANO_RC::ANO_RC()
{
Init();
}
void ANO_RC::Init(void)
{
DataRaw[ROLL] = 1500;
DataRaw[PITCH] = 1500;
DataRaw[YAW] = 1500;
}
void ANO_RC::DataGet(void)
{
DataRaw[ROLL] = DataRaw[ROLL] * 0.99 + (float)ADC_ConvertedValue[3] * 0.01;
DataRaw[PITCH] = DataRaw[PITCH] * 0.99 + (float)ADC_ConvertedValue[2] * 0.01;
DataRaw[YAW] = DataRaw[YAW] * 0.99 + (float)ADC_ConvertedValue[1] * 0.01;
DataRaw[THROTTLE] = DataRaw[THROTTLE] * 0.99 + (float)ADC_ConvertedValue[0] * 0.01;
KeyDataRawL = (float)ADC_ConvertedValue[5];
KeyDataRawR = (float)ADC_ConvertedValue[6];
}
void ANO_RC::DataCalculate(void)
{
Data[ROLL] = (u16)(1000 - DataRaw[ROLL]/2 + 1000) - DataTrim[ROLL];
Data[ROLL] = (Data[ROLL] - 1500) * 0.8 +1500;
Data[PITCH] = (u16)(DataRaw[PITCH]/2 + 1000) - DataTrim[PITCH];
Data[PITCH] = (Data[PITCH] - 1500) * 0.8 +1500;
Data[YAW] = (u16)(1000 - DataRaw[YAW]/2 + 1000) - DataTrim[YAW];
Data[YAW] = (Data[YAW] - 1500) * 0.8 +1500;
Data[THROTTLE] = (u16)(DataRaw[THROTTLE]/2 + 1000) - DataTrim[THROTTLE];
Data[THROTTLE] = (Data[THROTTLE] - 1500) * 0.85 +1500;
KeyDataL = (u16)KeyDataRawL;
KeyDataR = (u16)KeyDataRawR;
}
void ANO_RC::KeyCheck(void)
{
static u8 keyFlagL = 1, keyFlagR = 1;
static u8 timeDelayFlag = 0;
if(timeDelayFlag)
timeDelayFlag --;
if(KeyDataL<100 && keyFlagL) //THR+
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if((KeyDataL<100 && keyFlagL) && timeDelayFlag == 1)
{
DataTrim[THROTTLE] -= 2;
param.SAVE_RC_OFFSET();
keyFlagL = 0;
}
}
else if(KeyDataL>1950 && KeyDataL<2100 && keyFlagL) //YAW-
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataL>1950 && KeyDataL<2100 && timeDelayFlag == 1)
{
DataTrim[YAW] += 2;
param.SAVE_RC_OFFSET();
keyFlagL = 0;
}
}
else if(KeyDataL>2650 && KeyDataL<2750 && keyFlagL) //THR-
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataL>2650 && KeyDataL<2750 && timeDelayFlag == 1)
{
DataTrim[THROTTLE] += 2;
param.SAVE_RC_OFFSET();
keyFlagL = 0;
}
}
else if(KeyDataL>3000 && KeyDataL<3100 && keyFlagL) //YAW+
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataL>3000 && KeyDataL<3100 && timeDelayFlag == 1)
{
DataTrim[YAW] -= 2;
param.SAVE_RC_OFFSET();
keyFlagL = 0;
}
}
else if(KeyDataL>4050)
{
keyFlagL = 1;
}
if(KeyDataR<100 && keyFlagR) //PITCH+
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR<100 && keyFlagR && timeDelayFlag == 1)
{
DataTrim[PITCH] -= 2;
param.SAVE_RC_OFFSET();
keyFlagR = 0;
}
}
else if(KeyDataR>1900 && KeyDataR<2100 && keyFlagR) //ROLL+
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR>1900 && KeyDataR<2100 && keyFlagR && timeDelayFlag == 1)
{
DataTrim[ROLL] -= 2;
param.SAVE_RC_OFFSET();
keyFlagR = 0;
}
}
else if(KeyDataR>2600 && KeyDataR<2800 && keyFlagR) //PITCH-
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR>2600 && KeyDataR<2800 && keyFlagR && timeDelayFlag == 1)
{
DataTrim[PITCH] += 2;
param.SAVE_RC_OFFSET();
keyFlagR = 0;
}
}
else if(KeyDataR>2950 && KeyDataR<3150 && keyFlagR) //ROLL-
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR>2950 && KeyDataR<3150 && keyFlagR && timeDelayFlag == 1)
{
DataTrim[ROLL] += 2;
param.SAVE_RC_OFFSET();
keyFlagR = 0;
}
}
else if(KeyDataR>3200 && KeyDataR<3300 && keyFlagR)
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR>3200 && KeyDataR<3300 && keyFlagR && timeDelayFlag == 1)
{
}
}
else if(KeyDataR>3350 && KeyDataR<3450 && keyFlagR)
{
if(!timeDelayFlag)
timeDelayFlag = 10;
if(KeyDataR>3350 && KeyDataR<3450 && keyFlagR && timeDelayFlag == 1)
{
}
}
else if(KeyDataR>4050)
{
keyFlagR = 1;
}
}
/******************* (C) COPYRIGHT 2014 ANO TECH *****END OF FILE************/
复制代码
作者:
qiujianqin
时间:
2017-9-18 12:04
好东西 正需要呢
作者:
hacehi
时间:
2018-12-10 16:19
楼主好人,万分感谢,辛苦辛苦
作者:
xunxing
时间:
2018-12-28 21:46
想尝试做一下
作者:
pigpighhkk
时间:
2019-1-9 23:21
楼主好人,万分感谢,辛苦辛苦
作者:
xt20091212
时间:
2019-2-1 13:15
感谢分享
作者:
bryan_guan
时间:
2019-11-28 11:52
谢谢楼主分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1