37款傳感器與模塊的提法岔擂,在網(wǎng)絡(luò)上廣泛流傳蔫浆,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的突颊。鑒于本人手頭積累了一些傳感器和模塊丧枪,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟钪梗詫W(xué)習(xí)和交流為目的日杈,這里準(zhǔn)備逐一動(dòng)手試試做實(shí)驗(yàn),不管成功與否佑刷,都會(huì)記錄下來(lái)---小小的進(jìn)步或是搞不定的問(wèn)題莉擒,希望能夠拋磚引玉。?
【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)三十八:joystick雙軸XY按鍵搖桿模塊(PS2游戲航奶毙酰控制桿)
搖桿電位器
安裝了兩個(gè)10K高精度電位器和一個(gè)按鍵開關(guān)涨冀,功率0.015W,最高使用電壓100V A.C麦萤,能垂直位置自動(dòng)復(fù)位鹿鳖,用于控制鍵盤等, 可自由地控制方向,直觀地監(jiān)控機(jī)器的運(yùn)轉(zhuǎn)狀況壮莹。
一翅帜、MECHANICAL CHARACTERISTIC 機(jī)械特性
1、Operating force of lever 搖桿作動(dòng)力 :120±70 gf
2垛孔、Operating angle 操作角度:26° Max
二藕甩、ELECTRICAL CHARACTERISTIC 電氣特性
1、Rating power 額定功率:0.0125W
2周荐、Maximum operating voltage最高使用電壓:AC 50V DC 5V
3狭莱、Voltage divider error 分壓誤差:44%~56%
4、Insulation resistance 絕緣阻抗:100M? 1 Minute at DC 250V
5概作、Dielectric voltage 耐電壓:1 Minute at AC 250V
三腋妙、SWITCH CHARACTERISTICS 開關(guān)規(guī)格
1、Operating force 開關(guān)按壓力:740±300gf
2讯榕、Contact resistance 接觸阻抗:100mΩ Max
3骤素、Rating power 額定功率:DC12V 50mA
四匙睹、ENDURANCE CHARACTERISTIC 耐久特性
1、Rotational life 旋轉(zhuǎn)壽命:2000,000 cycles Min
2济竹、Push operating life 開關(guān)按壓壽命:1痕檬,000,000 cycles Min
工作原理
搖桿電位器在直流電路中作為電流調(diào)節(jié)使用時(shí),將有電流通過(guò)搖桿電位器的滑動(dòng)臂送浊,此時(shí)由于陽(yáng)極氧化的原因會(huì)導(dǎo)致電阻值異常增加梦谜。在這種情況下,建議將連接電阻體的端子接負(fù)極袭景,滑動(dòng)臂接正極唁桩。如果直流電流直接通過(guò)搖桿電位器,搖桿電位器的陽(yáng)極就會(huì)受到氧化損傷耸棒,從而讓搖桿電位器的阻抗變大荒澡,因此最好是將電流的負(fù)極接在跟碳膜片接觸的端子上,正極接在跟刷子(搖桿電位器接觸片)的端子上与殃。搖桿電位器作為可變電阻器時(shí)单山,建議作調(diào)整電壓的分壓器使用,同時(shí)搖桿電位器的負(fù)載電阻RL應(yīng)不小于搖桿電位器公稱阻值RT的10倍奈籽。在穩(wěn)壓器中用來(lái)調(diào)節(jié)輸出電壓饥侵,故設(shè)計(jì)搖桿電位器應(yīng)滿中順時(shí)針調(diào)節(jié)時(shí)輸出電壓升高,反時(shí)針調(diào)節(jié)器節(jié)時(shí)輸出電壓降低衣屏;在可調(diào)恒流充電器中搖桿電位器用來(lái)調(diào)節(jié)充電電流折大小躏升,設(shè)計(jì)搖桿電位器時(shí)應(yīng)滿中順時(shí)針調(diào)節(jié)時(shí),電流增大狼忱。IC座膨疏,設(shè)計(jì)印刷板圖時(shí),在使用IC座的場(chǎng)合下钻弄,一定要特別注意IC座上定位槽放置的方位是否正確佃却,并注意各個(gè)IC腳位是否正確。
雙軸XY按鍵搖桿模塊
由兩個(gè)滑動(dòng)變阻器和一個(gè)按鍵組成窘俺,當(dāng)撥動(dòng)搖桿時(shí)饲帅,滑動(dòng)變阻器的阻值就發(fā)生變化,對(duì)應(yīng)的X/Y電壓值也隨之變化瘤泪,而用力按下?lián)u桿就會(huì)觸發(fā)按鍵按下灶泵,對(duì)應(yīng)的SW信號(hào)變?yōu)榈碗娖健?/p>
搖桿雙聯(lián)電位器實(shí)拍:通常是將兩個(gè)規(guī)格相同的電位器裝在同搖桿電位器結(jié)構(gòu)一轉(zhuǎn)軸上,調(diào)節(jié)轉(zhuǎn)軸時(shí)对途,兩個(gè)電位器的滑動(dòng)觸點(diǎn)異步轉(zhuǎn)動(dòng)赦邻。這個(gè)結(jié)構(gòu)被稱為同軸異步雙聯(lián)動(dòng)的電位器。
還有一位高精度按鈕開關(guān)
X和Y軸实檀,一個(gè)按鍵
2.54mm排針接口惶洲,接線方便按声,通用性強(qiáng)
PCB尺寸(mm):24X32
工作原理
模塊特設(shè)二路模擬輸出和一路數(shù)字輸出接口,輸出值分別對(duì)應(yīng)(X恬吕,Y)雙軸偏移量签则,其類型為模擬量;按鍵表示用戶是否在Z軸上按下铐料,其類型為數(shù)字開關(guān)量怀愧。模塊集成電源指示燈,可顯示工作狀態(tài)余赢;坐標(biāo)標(biāo)識(shí)符清晰簡(jiǎn)明、準(zhǔn)確定位哈垢。為了更加方便地配合擴(kuò)展板等標(biāo)準(zhǔn)接口妻柒,在設(shè)計(jì)上把 X,Y軸的電路都單獨(dú)引出,以控制輸入這個(gè)操縱桿模塊的 x耘分、y的值以及在特定的值下實(shí)現(xiàn)某種功能举塔。
引腳說(shuō)明
名稱????描述
GND????地
5V????電源5V
SW????按鍵(數(shù)字量)
VRX????X軸 (模擬量)
VRY????Y軸 (模擬量)
模塊性能
1.輸入電壓范圍:直流3.3V 至 5V。
2.輸出信號(hào):模塊特設(shè)二路模擬輸出和一路數(shù)字輸出接口求泰,輸出值分別對(duì)應(yīng)(X央渣,Y)雙軸偏移量,其類型為模擬量渴频;按鍵表示用戶是否在Z軸上按下芽丹,其類型為數(shù)字開關(guān)量。
3.可以通過(guò)Arduino控制器編程卜朗,傳感器擴(kuò)展板插接拔第,完成具有創(chuàng)意性遙控互動(dòng)作品。
4.十字搖桿為一個(gè)雙向的10K電阻器场钉,隨著搖桿方向不同蚊俺,抽頭的阻值隨著變化力九。本模塊使用5V供電默赂,原始狀態(tài)下X,Y讀出電壓為2.5V左右,當(dāng)隨箭頭方向按下盗冷,讀出電壓值隨著增加宇植,最大到5V得封;箭頭相反方向按下,讀出電壓值減少当纱,最小為0V呛每。
一些應(yīng)用場(chǎng)合
接線方式
GND、VCC(+5V)這兩個(gè)不用說(shuō)了坡氯。
VRx晨横,VRy (X洋腮、Y軸)為模擬輸入信號(hào),連接到模擬IO口A0~A7手形。?
VRx啥供,VRy 的值:從 0 ~ 1023 分別代表 左~右,上~下库糠。中間值為512伙狐。
SW (Z軸)是數(shù)字輸入信號(hào),連接到數(shù)字端口瞬欧,并啟用上拉電阻贷屎。?
SW 的值:1代表未按下,0代表按下艘虎。
實(shí)驗(yàn)這里VRx接A0唉侄,VRy接A1,SW接D6
/*
【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)三十八:joystick雙軸XY按鍵搖桿模塊(PS2游戲航囊敖ǎ控制桿)
*/
int value = 0;
void setup()
{
pinMode(6, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
value = analogRead(A0);
Serial.print("X:");
Serial.print(value, DEC);
value = analogRead(A1);
Serial.print(" | Y:");
Serial.print(value, DEC);
value = digitalRead(6);
Serial.print(" | Z: ");
Serial.println(value, DEC);
delay(1000);
}
初始狀態(tài)
/*
【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)三十八:joystick雙軸XY按鍵搖桿模塊(PS2游戲航氖艋控制桿)之二
*/
int JoyStick_X = A0;
int JoyStick_Y = A1;
int JoyStick_Z = 6;
void setup()
{
??pinMode(JoyStick_Z, INPUT);
??Serial.begin(9600);
}
void loop()
{
??int x,y,z;
??x=analogRead(JoyStick_X);
??y=analogRead(JoyStick_Y);
??z=digitalRead(JoyStick_Z);
??Serial.print(x ,DEC);
??Serial.print(",");
??Serial.print(y ,DEC);
??Serial.print(",");
??Serial.println(z ,DEC);
??delay(500);
}