標題:
匿名四軸之迷你遙控器附軟硬件源碼
[打印本頁]
作者:
51hei學(xué)習(xí)技術(shù)中
時間:
2017-3-17 01:37
標題:
匿名四軸之迷你遙控器附軟硬件源碼
每一個做四軸飛行器都會遇到這樣的情況,飛機做好了, 軟件沒調(diào)好!!
還有什么比這更讓人抓狂嗎? 有!那就是想飛的時候,發(fā)現(xiàn)沒有遙控器。!
這么讓人抓狂的事情,我都遇到了。!所以在做飛機的時候把遙控器一起做了吧。
分享一個開源的遙控器設(shè)計,嗯,就是匿名四軸的,的確很不錯,代碼的可讀性很強,作為入門學(xué)習(xí)絕對沒問題。
161801mf1o9x1f7fzmfm9i.jpeg.thumb.jpg
(56.68 KB, 下載次數(shù): 156)
下載附件
2017-3-17 01:32 上傳
這個就是傳說中的遙控器源碼
匿名遙控器V1.2.zip
(488.18 KB, 下載次數(shù): 72)
2017-3-17 01:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
這個是設(shè)計原理圖
ANO-Remoter V1.2.pdf
(125.08 KB, 下載次數(shù): 60)
2017-3-17 01:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
如果你直接已經(jīng)做出來或是買了匿名遙控器,恭喜,你會用上這個驅(qū)動的
FTDI USB Drivers.zip
(1.16 MB, 下載次數(shù): 45)
2017-3-17 01:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是部分源碼預(yù)覽:
/************************ (C) COPYRIGHT 2014 ANO Tech ******************************
* 作者 :匿名科創(chuàng)
* 文件名 :ANO_RC.cpp
* 描述 :遙控通道數(shù)據(jù)處理
* 技術(shù)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************/
復(fù)制代碼
作者:
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.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1