一、 雙軸搖桿 (Joystick) 模組運作原理
雙軸搖桿(Joystick) 是 Arduino 專題中常用於控制遙控車方向、雲台旋轉與遊戲角色的核心輸入模組。
模組核心運作機制
-
X、Y 軸雙向類比控制: 搖桿內部整合了兩個互相垂直的 10KΩ 可變電阻(Potentiometer)。當搖桿在上下(Y軸)或左右(X軸)移動時,內部電阻值會隨之改變,輸出 0V ~ 5V 的類比電壓訊號。
-
Arduino 類比讀取: Arduino 透過 ADC(模數轉換器)讀取引腳電壓,傳回 0 ~ 1023 的數值:
-
搖桿靜止居中時,X 與 Y 軸數值約為 512。
-
推至最左 / 最下時,數值接近 0。
-
推至最右 / 最上時,數值接近 1023。
-
-
Z 軸按鈕功能(SW): 垂直向下按壓搖桿頭部會觸發內建的輕觸開關(Switch),輸出高/低電位數位訊號。

二、 實驗所需材料與電路接線圖 (Hardware Setup)
依照雙軸搖桿上的 5 Pin 腳位標記,連接至 Arduino Uno 對應的電源與類比輸入引腳。
準備材料
-
Arduino Uno 開發板 x 1
-
USB 傳輸線 x 1
-
雙軸搖桿模組 (Joystick) x 1
-
杜邦線 5 根
準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)
腳位對接說明 (Pin Mapping)
三、 完整程式碼實作
燒錄程式碼後,開啟 Serial Monitor(序列埠監視器),即可即時觀察搖桿移動時 X軸、Y軸 與 Z軸(按鍵)的參數變化。
int xPin = 0; //X軸 接類比A0
int yPin = 1; //Y軸 接類比A1
int zPin = 2; //Z軸 接類比A2
int xval=0; //X軸變數
int yval=0; //Y軸變數
int zval=0; //Z軸變數
void setup() {
Serial.begin(9600); // 視窗baud rate
}
void loop() {
xval = analogRead(xPin); //讀取X軸數值到xval變數
yval = analogRead(yPin); //讀取Y軸數值到yval變數
zval = analogRead(zPin); //讀取Z軸數值到zval變數
char buf[100];
sprintf(buf, "VRx=%d, VRy=%d, SW=%d", xval, yval, zval);
Serial.println(buf);
delay(100);
}
結果:
下載程序完成後,打開序列埠監控視窗,左右上下或按下搖桿讀取參數的變化。

四、 常見問題與除錯 (FAQ)
Q1:搖桿放開靜止時,輸出的數值不是剛好 512?
解答: 這是正常的硬體公差現象。市售搖桿的機械結構與電阻零件皆有些微誤差,靜止中位數通常落於 490 ~ 530 之間。實務應用時可透過程式設定 deadzone(死區容差值)進行修正。
Q2:按壓搖桿 SW 時,數值沒有明顯變化或跳動不定?
解答: 搖桿模組的 SW 腳位通常為開路狀態。若希望獲得穩定的數位 HIGH / LOW 狀態,可改將 SW 接至 Arduino 的數位引腳(如 D2),並在
setup()中使用pinMode(2, INPUT_PULLUP);開啟內部上拉電阻。
Q3:序列埠監視器顯示出一堆亂碼?
解答: 請確認序列埠監視器右下角的波特率(Baud Rate)是否設定為
9600 baud。