零基础学ESP32:PS2摇杆——让ESP32拥有“手感”!
前面我们学了倾斜传感器、震动传感器、温度传感器——ESP32能感知姿态、震动和温度了。但还有一种非常直观的交互方式还没玩过:摇杆。
游戏手柄、无人机遥控器、机器人控制……这些设备的核心交互就是摇杆。它能把你的手指动作转换成电信号,让设备理解“往上推”、“往下拉”、“往左拨”这些指令。
今天这节课,我们就用PS2摇杆模块,让ESP32拥有“手感”!
第一步:找到课程,看看成品效果
打开逗脑IDE,点击顶部 “文档”,在 “课程” → “ESP32” →“ESP32 + MicroPython” 分类下,找到PS2摇杆。

打开课件,你会看到本节课的最终效果:推动摇杆时,终端实时打印出X轴、Y轴和按键的数值——往上推数值变小,往下推数值变大,按下摇杆按键会显示按钮状态。


第二步:什么是摇杆?什么是ADC?
PS2摇杆其实就是游戏手柄上用的那种摇杆,内部由两个滑动电阻(X轴和Y轴)和一个按键组成。
滑动电阻的原理:

核心知识点:ADC(模数转换)
摇杆输出的是模拟电压信号(0~3.3V连续变化),但ESP32只能理解数字信号(0和1)。所以需要一个桥梁——ADC(模数转换器)。
模拟量(电压) → ADC → 数字量(数值)
ESP32的ADC可以将 0~3.3V 的电压映射为 0~4095 的数值:
- 电压越低,数值越小(接近0)
- 电压越高,数值越大(接近4095)

ESP32支持ADC的引脚:
0、2、4、12、13、14、15、25、26、27、32、33、34、35、36、39
⚠️ 注意: 有些开发板0、2、4引脚不能使用,推荐使用32、33、34、35、36、39。
第三步:动手接线——5根线搞定
PS2摇杆有5个引脚:
| 摇杆引脚 | 连接ESP32 | 说明 |
|---|---|---|
| GND | GND | 电源地 |
| VCC | 3.3V | 电源正极 |
| X | GPIO32 | X轴模拟输出(ADC) |
| Y | GPIO33 | Y轴模拟输出(ADC) |
| SW | GPIO15 | 按键输出(数字) |

第四步:代码——读取X、Y和按键
from machine import Pin, ADC
import time
ps2_y = ADC(Pin(33))
ps2_y.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V
ps2_x = ADC(Pin(32))
ps2_x.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V
btn = Pin(15, Pin.IN)
while True:
val_y = ps2_y.read() # 0-4095
val_x = ps2_x.read() # 0-4095
print("x:{} y:{} btn:{}".format(val_x, val_y, btn.value()))
time.sleep(0.1)
代码逻辑:
| 变量 | 范围 | 含义 |
|---|---|---|
val_x |
0 ~ 4095 | X轴位置(左→右) |
val_y |
0 ~ 4095 | Y轴位置(上→下) |
btn.value() |
0 或 1 | 按键是否按下 |
第五步:保存运行,推动摇杆看数据!
按 Ctrl + S 保存,选择ESP32开发板设备,给文件命名(比如ps2.py),点击保存。

点击运行按钮,终端开始不断打印数据。
试试看:
- 摇杆居中 → x≈2000,y≈2000(中间值)
- 摇杆往上推 → y值变小(接近0)
- 摇杆往下推 → y值变大(接近4095)
- 摇杆往左推 → x值变小(接近0)
- 摇杆往右推 → x值变大(接近4095)
- 按下摇杆 → btn变成1(或0,取决于模块)
PS2摇杆能做什么?
| 应用场景 | 用途 |
|---|---|
| 游戏手柄 | 控制游戏中角色的移动方向 |
| 无人机遥控 | 控制飞行姿态和方向 |
| 机器人控制 | 控制机器人前进、后退、转向 |
| 智能家居控制 | 摇杆代替按钮,控制灯光亮度、音量大小 |
| 菜单选择器 | 上下左右选择菜单项,按下确认 |
全程回顾
| 步骤 | 操作 | 效果 |
|---|---|---|
| 找到课程 | 文档→课程→ESP32→ESP32+MicroPython→PS2摇杆 | 了解PS2摇杆 |
| 认识ADC | 理解“模拟量→数字量”的转换 | 知道0~4095的含义 |
| 动手接线 | GND→GND, VCC→3.3V, X→GPIO32, Y→GPIO33, SW→GPIO15 | 硬件就位 |
| 打开代码 | 点击“打开”按钮 | 代码进入编辑器 |
| 保存运行 | Ctrl+S → 选择ESP32 → 运行 | 终端实时打印数据 |
| 推动摇杆 | 上下左右推动,按下按键 | 数值实时变化! |
如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好相关配件,跟着课件走一遍。
有任何问题或建议,欢迎在评论区留言告诉我们。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)