ESP32-S3 控制 PS2传感器模块
ESP32-S3 PS2摇杆传感器模块实验 —— 方向检测与按键识别
本实验通过 ESP32-S3 与 PS2 摇杆模块 实现摇杆方向检测和按键识别。
通过串口监视器实时输出摇杆方向和按键状态,便于理解摇杆模块的使用方法。
一、实验名称
PS2摇杆传感器模块实验
二、接线说明
| PS2摇杆模块 | ESP32-S3 引脚 |
|---|---|
| VCC | 3V3 |
| GND | GND |
| VRX | 6 |
| VRY | 7 |
| SW | 5 |
三、实验现象
-
程序下载成功后,操作摇杆,串口监视器实时输出摇杆方向:
- up 上
- down 下
- left 左
- right 右
-
按下摇杆按键 SW 时,串口显示 “pressed”。
四、注意事项
- VRX、VRY 为模拟输入,需要设置 ADC 分辨率为 12bit(0~4095)。
- SW 按键为数字输入,可通过 ADC 读取判断按下状态。
- 串口波特率设置为 115200,以便实时显示数据。
五、完整代码示例
// 定义控制管脚
#define vry_pin 7
#define vrx_pin 6
#define sw_pin 5
// 定义全局变量
int adcx = 0;
int adcy = 0;
int adcsw = 0;
// 数据范围映射函数
int ratio_map(int x, int in_min, int in_max, int out_min, int out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
// 方向判断函数
int direction(void) {
char i = 0;
adcx = analogRead(vrx_pin); // 读取X轴ADC值
adcx = ratio_map(adcx, 0, 4095, 0, 255);
adcy = analogRead(vry_pin); // 读取Y轴ADC值
adcy = ratio_map(adcy, 0, 4095, 0, 255);
adcsw = analogRead(sw_pin); // 读取按键ADC值
adcsw = ratio_map(adcsw, 0, 4095, 0, 255);
if (adcx <= 30) i = 1; // up方向
else if (adcx >= 255) i = 2; // down方向
else if (adcy >= 255) i = 3; // left方向
else if (adcy <= 30) i = 4; // right方向
else if (adcsw == 0) i = 5; // Button按下
return i;
}
void setup() {
// 串口配置
Serial.begin(115200);
// 设置ADC分辨率为12bit (0~4095)
analogReadResolution(12);
}
void loop() {
String state[6] = {"home", "up", "down", "left", "right", "pressed"};
String temp;
while (1) {
temp = state[direction()];
Serial.print("方向:");
Serial.println(temp);
delay(500);
}
}
六、代码讲解
- ADC 读取与映射
adcx = analogRead(vrx_pin);
adcx = ratio_map(adcx, 0, 4095, 0, 255);
- VRX、VRY 模拟输入读取 0
4095 的值,通过255,便于判断方向。ratio_map映射到 0
- 方向判断逻辑
if (adcx <= 30) i = 1; // up
else if (adcx >= 255) i = 2; // down
else if (adcy >= 255) i = 3; // left
else if (adcy <= 30) i = 4; // right
- 通过 X、Y 轴值判断摇杆偏转方向。
- 按键检测
else if (adcsw == 0) i = 5; // Button按下
- 读取 SW 按键 ADC 值,判断是否按下。
- 串口输出
temp = state[direction()];
Serial.print("方向:");
Serial.println(temp);
- 通过字符串数组对应方向和按键状态,输出到串口。
七、实验效果
- 摇杆向上操作,串口显示:
方向:up
- 摇杆向左操作,串口显示:
方向:left
- 按下摇杆按钮,串口显示:
方向:pressed
八、总结
- 学会读取 模拟信号 VRX、VRY 并进行映射。
- 通过条件判断实现 摇杆方向识别。
- 按键检测可与方向结合,实现更多控制功能。

浙公网安备 33010602011771号