一、 雙軸搖桿 (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。
🔗 延伸閱讀與推薦課程
📟 進階顯示模組控制:【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例
👈 上一篇: 【Arduino進階教學】4×4 矩陣按鍵模組:雙重迴路掃描原理、配線圖與程式碼實作
👉 下一篇: 【Arduino進階教學】RGB LED 模組 PWM 調色實作:全彩燈光控制原理與接線圖
📘 總索引: Arduino 新手學習必讀經典 – 快速索引頁面


