步驟1:
此操縱桿類似于PlayStation 2控制器上的“模擬”操縱桿。它由兩個電位計,每個電位計的值均為10k,一個用于x軸,另一個用于y軸,以及一個用于選擇的觸覺按鈕,按下該按鈕可在按下操縱桿時激活。
兩個電位器是與一個將水平運動和垂直運動分開的萬向節(jié)機構(gòu)連接。在閑置位置時,操縱桿居中,這意味著每個電位計均處于其中心位置或中心位置?;氐捷S概念,您可以隨機選擇哪個電位器用于x或y軸。在上面的圖片中,您可以看到我選擇軸的方式(在此示例中,軸無關(guān)緊要。您可以選擇任何電位計來嘗試草圖)。
對于硬件連接,電位計的中間引腳用于模擬數(shù)據(jù),另外兩個用于電源。哪個引腳連接到5V或GND都無關(guān)緊要,它只會稍微影響默認數(shù)據(jù)值,但無需更改代碼。
步驟2:步驟2:Arduino代碼
以下是用于校準這種電位計的代碼。
/*
日期:------------------------------------ ----- 2015年12月22日標題:---------- JOYSTICK電位計校準
作者:------------------ --- Firas Helou提供------------------------
了解如何使用Arduino Uno校準操縱桿電位器
*/
int defaultData;//在開始
int數(shù)據(jù)時為默認電位計數(shù)據(jù)設(shè)置一個變量;//可以存儲在電位計上從模擬Arduino引腳A0讀取的數(shù)據(jù)
int startTime = 0;//時間變量數(shù)據(jù)類型定義為整數(shù),因為我們不需要超過10微秒
int TimeGap = 10;//定義時間間隔
int重映射;//重新映射變量以存儲來自模擬Arduino引腳A0的重新映射數(shù)據(jù)
//VOID SETUP()功能
void setup(){
//以默認速率設(shè)置串行通信
Serial.begin(9600);
///我們設(shè)置時間來定義在模擬Arduino引腳A0上讀取的默認值,因為我們有一個居中的操縱桿引腳,因此它的默認值不同于0
if(micros()-startTime》 = TimeGap){//電位計連接到模擬Arduino
}
}
//無效循環(huán)()功能
無效循環(huán)(){
//我們將數(shù)據(jù)值設(shè)置為與模擬量讀取的值相等Arduino引腳A0
data = AnalogRead(A0);//在這種情況下,開始時讀取的默認值為488
if(data //我們必須將在模擬Arduino引腳A0上讀取的數(shù)據(jù)值重新映射為介于0和之間的較小值255
//,但是我們必須從默認值中減去1,因為如果不這樣做,//當操縱桿位置居中時,我們將沒有默認值0,相反,我們將有一個/為避免浮動問題,我們在1和0之間浮動值,所以我們只需減去-1 remap = map(data,0,defaultData-1,255,0);
}否則if(data》 = defaultData){
//在這一部分,我們不需要減去任何內(nèi)容
remap = map(data,defaultData,1023,0,255) ;
}
//串行打印我們收到的值
Serial.print(“ Remapped value:”);結(jié)果,Serial.println(重映射);
Serial.print(“默認值:”);結(jié)果,Serial.println(defaultData);
delay(200);
}
假設(shè)我選擇了y軸,通過上傳代碼并打開串行監(jiān)視器,我們必須看到默認值488就我而言(您可能會得到不同的值)。這是操縱桿的閑置中心位置,因此我們必須對其進行校準以使其開始時看到一個0值而不是488。這就是該草圖所在的位置。上圖顯示了在上載最終草圖后收到的結(jié)果。
這是我的第一個可指導(dǎo)的教程。希望對您有所幫助。如果您有任何疑問,或者如果您有更好的編碼方式,請隨時在評論部分中添加您的問題,將其檢查出來是一件很不錯的事,這將有助于我改善自己。如果您發(fā)現(xiàn)可以改進的地方,請在評論中添加它,或給我發(fā)送私人消息。對其他人和我一樣都會有幫助。
-
電位器
+關(guān)注
關(guān)注
14文章
1012瀏覽量
66894 -
操縱桿
+關(guān)注
關(guān)注
0文章
69瀏覽量
8566
發(fā)布評論請先 登錄
相關(guān)推薦
評論