跳到:
ESP32 教學 1/55 - SunFounder ESP32 IoT 學習套件軟件同 Arduino IDE 簡介 ESP32 教學 2/55 - 咩係 ESP32、相機擴展板、開箱 SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 3/55 - 電阻、LED、麵包板項目:Hello LED -ESP32 IoT 學習套件 ESP32 教學 4/55 - 數據類型 定義變量 Int、bool、char、序列監視器 - ESP32 IoT 套件 ESP32 教學 5/55 - LED 漸變,控制 LED 亮度 - ESP32 物聯網學習套件 ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 30/55 - 使用 Adafruit IO 服務透過 MQTT 喺網頁上控制伺服摩打 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 40/55 - 讀寫 Micro SD 卡 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 教學 45/55 - 自訂串流伺服器配合 LED 控制 CAM-3 l SunFounder 嘅 ESP32 學習套件 ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 48/55 - 遠程溫度監控同 LED 控制 MQTT | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 49/55 - 透過 Adafruit IoT 控制直流摩打 | SunFounder 嘅 ESP32 套件 ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 55/55 - 點樣量度 12V、24V 或者 100V 直流電壓 | 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位置),就按照相同嘅模擬同數碼連接原則去調整。
程式碼範例同解說
喺程式碼入面,我哋首先定義搖桿引腳嘅常數。識別碼xAxis、yAxis同btn分別設定做34、35同33。咁樣令到成個程式入面引用呢啲引腳更加容易。
#define xAxis 34
#define yAxis 35
#define btn 33
喺setup()函數入面,我哋初始化序列通訊,並將按鈕引腳模式設定做輸入。咁樣準備好ESP32去讀取搖桿嘅數據,再將佢送去序列監視器。
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
喺loop()入面,我哋用analogRead()讀取搖桿X同Y軸嘅模擬數值,並將佢哋儲存喺xValue同yValue。按鈕狀態就用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
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
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
}