一、目的
这一节我们学习如何使用我们的ESP32开发板来控制PS2摇杆。
二、环境
ESP32 + PS2摇杆 + Thonny IDE + 几根杜邦线
接线示意图:注意接3.3V,接5V烧板子。
三、ESP32 ADC
ESP32 上有几个引脚可以用来获取模拟量——这些引脚称为 ADC 引脚(模拟值转换为数字值),以下所有 GPIO 均可用作 ADC 引脚:0、2、4、12、13、14、15、25、26、27、32、33、34、35、36、39
但有些开发板上0、2、4引脚不能使用,推荐使用32、 32、33、34、35、36、39
官方文档:Quick reference for the ESP32 — MicroPython latest documentation
注意,默认ESP32的对应值是1v对应4095,所以为了能够调整需要在代码中控制
ADC.ATTN_0DB
— 满量程电压:1.2V
ADC.ATTN_2_5DB
— 满量程电压:1.5V
ADC.ATTN_6DB
— 全量程电压:2.0V
ADC.ATTN_11DB
— 全量程电压:3.3V
四、代码
from machine import Pin, ADC
import time
ps2_y = ADC(Pin(33))
ps2_y.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V,默认为1V
ps2_x = ADC(Pin(32))
ps2_x.atten(ADC.ATTN_11DB) # 这里配置测量量程为3.3V,默认为1V
btn = Pin(15, Pin.IN) # 按键按下输出0,
while True:
val_y = ps2_y.read() # 输出范围0-4095,默认处于中间位置
if(val_y > 1900):
print("向上")
elif(val_y < 1800):
print("向下")
val_x = ps2_x.read() # 输出范围0-4095,默认处于中间位置
if(val_x > 1900):
print("向右")
elif(val_x < 1800):
print("向左")
if(btn.value() == 0):
print("按键按下")
print("x:{} y:{} btn:{}".format(val_x, val_y, btn.value())) # 打印出x轴,y轴的值
time.sleep(0.2)
五、演示效果
六、摇杆购买
同样大家可以在某宝上购买到摇杆: