搜尋程式碼

ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件

ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件

喺呢個教學入面,我哋會學吓點樣將一個XY搖桿同SunFounder嘅ESP32微控制器連接,等我哋可以偵測佢嘅位置,再根據佢嘅輸入採取行動。我哋亦都會整合一個蜂鳴器,當搖桿移到特定位置嘅時候就會啟動。呢個組合會令我哋可以整到啲互動項目,實時回應使用者嘅輸入。

ESP32-26-xy-joystick-main

XY搖桿提供兩個模擬輸出,分別對應X同Y位置,仲有一個掣可以撳落去觸發動作。透過讀取搖桿嘅數值,我哋可以控制項目入面嘅唔同元件,例如啟動蜂鳴器或者喺螢幕上面顯示數值。為咗完全明白成個過程,記得睇吓條片攞多啲見解(片入面00:00位置)。

硬件解說

呢個項目嘅主要元件包括ESP32微控制器、XY搖桿同一個蜂鳴器。ESP32係一塊多功能開發板,支援Wi-Fi同藍牙,好啱用喺IoT項目。XY搖桿由兩個可變電阻組成,分別負責X同Y軸,仲有一個按鈕開關提供額外輸入。

joystick_schematic
ESP32-26-xy-joystick-schematic

搖桿會輸出對應佢位置嘅模擬訊號,由ESP32嘅模擬引腳讀取。按鈕撳落去嘅時候會提供一個數碼訊號。蜂鳴器就連接喺ESP32嘅一個數碼輸出引腳,可以根據搖桿嘅位置啟動或者關閉。

Datasheet詳情

製造商 SunFounder
零件編號 XY Joystick Module
工作電壓 3.3 V – 5 V
電阻值 10 kΩ(每軸)
最大電流 20 mA
開關類型 瞬時按鈕
尺寸 大約 50 mm x 50 mm

 

  • 確保搖桿用3.3 V供電,先至同ESP32相容。
  • 開關要用上拉電阻,避免浮動輸入。
  • 將模擬輸出連去ESP32嘅ADC引腳(X用34,Y用35)。
  • 開關要用防彈跳機制,防止誤觸發。
  • 監察電壓水平,確保佢哋維持喺安全操作範圍之內。

接線指示

ESP32-26-xy-joystick-wiring

要將搖桿接去ESP32,首先將搖桿嘅接地引腳連去ESP32嘅一個接地引腳。跟住將搖桿嘅VCC引腳連去ESP32嘅3.3 V引腳。搖桿有兩個模擬輸出引腳:將X軸輸出(標示為VRX)連去ESP32嘅34引腳,將Y軸輸出(標示為VRY)連去35引腳。

至於開關輸出,就將開關引腳連去ESP32嘅33引腳。呢個引腳會將按鈕撳壓讀做數碼輸入。確保啲連接穩固,避免間歇性問題。如果你嘅接線同條片唔同(片入面02:30位置),就按照相同嘅模擬同數碼連接原則去調整。

程式碼範例同解說

喺程式碼入面,我哋首先定義搖桿引腳嘅常數。識別碼xAxisyAxisbtn分別設定做343533。咁樣令到成個程式入面引用呢啲引腳更加容易。

#define xAxis 34
#define yAxis 35
#define btn 33

setup()函數入面,我哋初始化序列通訊,並將按鈕引腳模式設定做輸入。咁樣準備好ESP32去讀取搖桿嘅數據,再將佢送去序列監視器。

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

loop()入面,我哋用analogRead()讀取搖桿X同Y軸嘅模擬數值,並將佢哋儲存喺xValueyValue。按鈕狀態就用digitalRead()讀取,儲存喺btnValue。最後,我哋將呢啲數值打印去序列監視器。

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // 讀取之間嘅延遲
}

呢個迴圈會持續更新數值,提供搖桿移動同按鈕撳壓嘅實時回饋。想睇完整程式碼,請參考文章下面載入嘅完整程式。

示範/預期效果

當接線完成同程式碼上載之後,序列監視器應該會顯示X同Y數值,連同按鈕狀態。當你移動搖桿嘅時候,數值會相應改變,反映佢嘅位置。撳按鈕就會將佢嘅狀態喺高同低之間切換。

常見嘅錯誤包括接線唔啱,可能會導致浮空輸入或者搖桿冇反應。確保用啱引腳,同埋為開關加上拉電阻。睇片可以睇到呢啲情況嘅實際示範(片入面13:00)。

影片時間標記

  • 00:00 開始
  • 1:47 XY搖桿介紹
  • 7:32 量度搖桿數值
  • 8:40 接線解釋
  • 11:06 用ESP32嘅Arduino搖桿程式碼解釋
  • 14:43 喺Arduino IDE度揀ESP32板同COM埠
  • 16:24 搖桿簡單用法示範
  • 19:20 用蜂鳴器偵測搖桿位置嘅程式碼
  • 21:16 偵測位置示範

圖片

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
語言: C++
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33


void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  // Set the mode of the button pin to input
  pinMode(btn, INPUT);  
}

void loop() {
  // Read the analog value for x,y axis
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 

  // Read the digital value from the button pin
  int btnValue = digitalRead(btn);
  
  // print out the values
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  
  delay(300);  // Delay between reads
}

資源與參考資料

文件📁

冇文件可用。