一. 前言
在控制物體移動(dòng)方面,像控制智能小車、平衡車、四軸飛控,雙軸遙感按鍵遠(yuǎn)比按鍵要實(shí)用,而且引腳少,程序編寫簡單,是時(shí)候該放棄對(duì)按鍵的使用了,來看看雙軸遙感按鍵吧!
二. 雙軸遙感按鍵簡介
雙軸,可以輸出X,Y兩個(gè)方向上的電壓值表示當(dāng)前遙感所處的位置。按鍵,可以按下,具有按鍵的功能,看到這里是不是覺得它功能強(qiáng)大?。?!。每個(gè)軸共有三個(gè)引腳,分別是VCC,GND和信號(hào)引腳。所以說,它一共用六個(gè)引腳,外加按鍵的四個(gè)引腳。VCC可以接3.3-5V。信號(hào)引腳輸出的電壓為0-VCC。遙感處于中間位置的時(shí)候,兩個(gè)軸輸出的電壓為VCC/2。以X軸為例,如果遙感在最右邊,那么輸出為0V,在最左邊,那么輸出為VCC。是不是覺得采集它的數(shù)據(jù)很容易,通過STM32內(nèi)部的ADC就可以很輕松的采集到了,(#^.^#)。
二. 雙軸遙感信號(hào)采集
采集部分我打算略寫,一共兩個(gè)通道,X,Y,使用ADC采集,ADC的配置基本上是通用的。采集到的值理論上為0-4096。
三.雙軸遙感信號(hào)校準(zhǔn)
由于實(shí)際上采集到的信號(hào)不為0-4096,這里需要有一個(gè)校準(zhǔn)的操作。也就是采集多次各個(gè)方向上的遙感數(shù)據(jù),然后取平均。X軸的最左邊為例,這里采集了400次。同時(shí)對(duì)模擬量進(jìn)行一個(gè)判斷,在最左邊的就要,否則舍棄。/*XL方向校準(zhǔn)*/
void Rocker1CalibrationXL(void)
{
uint16_ti;
uint32_t valueSum = 0;
for(i = 0 ;i < 400; )
{
uint16_tvalue=getX1Value();/*獲取X軸的模擬量*/
if(value>0xf600)/*判斷模擬值,是不是在左邊了*/
{
valueSum += value;
i++;
}
}
XOffSetL = valueSum / 400;
}
四.雙軸遙感信號(hào)歸一化
這里將X,Y兩軸的信號(hào)全部歸一化到0-100區(qū)間內(nèi),至于為什么歸一化到這個(gè)區(qū)間內(nèi),是為了方便計(jì)算遙感的角度值。具體做法如下- 獲取原始數(shù)據(jù)
- 計(jì)算原始數(shù)據(jù)到對(duì)應(yīng)兩邊界的距離
- 將計(jì)算得到的結(jié)果擴(kuò)大100倍(避免小數(shù)),除以區(qū)間范圍
- 左邊 加(100 - 右邊)除以2得到最終結(jié)
XValue = getX1Value(); //獲取X方向遙感數(shù)值
if(XValue > XOffSetL)
XtempL = 0; /*小于左邊界,直接復(fù)制為0*/
else
XtempL = XOffSetL - XValue ;
if(XValue < XOffSetR)
XtempR = 0; /*大于右邊界,直接復(fù)制為0*/
else
XtempR = XValue - XOffSetR;
uint32_t XtL = XtempL * 100;
uint32_t XtR = XtempR * 100;
XtL = XtL / (XOffSetL - XOffSetR);
XtR = XtR / (XOffSetL - XOffSetR);
X = (XtL + (100 - XtR)) / 2; /*結(jié)果為遙感到左邊界的距離,0 - 100*/
五.計(jì)算雙軸遙感的角度
計(jì)算出來的角度分布如下圖所示。
/*將輸入的pos信息 轉(zhuǎn)換為角度信息*/
/*左為180度 上為270度*/
uint16_t ConvPos2Angle(uint16_t pos)
{
uint16_t angle = 0;
uint8_t X = pos;
uint8_tY=pos>>8;
uint16_t Xtemp = 180 * X;
uint16_t Ytemp = 180 * Y;
/*遙感位置中心 直接返回*/
if(X < 55 && X > 45 && Y < 55 && Y > 45)
return RockerNone;
/*Y軸位于上方,就是180°加上X軸的偏移*/
if(Ytemp < 9000)
angle = 18000 + Xtemp;
else /*Y軸位于下方,就是180°減上X軸的偏移*/
{
if(Xtemp > 18000)
angle = 0;
else
angle = 18000 - Xtemp;
}
/*由于遙感數(shù)據(jù)有誤差,需要截取*/
if(angle > 36000)
angle=36000;
return angle / 100;
}
審核編輯:湯梓紅
-
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57675 -
遙感
+關(guān)注
關(guān)注
0文章
248瀏覽量
16896 -
Vcc
+關(guān)注
關(guān)注
2文章
306瀏覽量
36353
原文標(biāo)題:還在用按鍵? 快來試試雙軸遙感按鍵吧?。。?/p>
文章出處:【微信號(hào):FPGA之旅,微信公眾號(hào):FPGA之旅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
單軸和雙軸測徑儀在線纜方面的應(yīng)用
NanoPi +雙軸重力搖桿
遙感
如何使用單片機(jī)接入按鍵遙感
雙軸傾角傳感器的工作原理 雙軸傾角傳感器可檢測什么
【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十二講 ADC-雙軸按鍵搖桿多通道循環(huán)采樣實(shí)驗(yàn)
![【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十二講 ADC-<b class='flag-5'>雙</b><b class='flag-5'>軸</b><b class='flag-5'>按鍵</b>搖桿多通道循環(huán)采樣實(shí)驗(yàn)](https://file1.elecfans.com/web2/M00/ED/82/wKgaomZnqwOADGdIAAAislKl6FU322.png)
評(píng)論