电子说
模拟二轴拇指操纵杆(俗称摇杆)是一种模拟操纵杆,相比于「方向」操纵杆更加准确和灵敏,它带有一个「按下选择按钮」。因为它是模拟的,所以需要使用树莓派 Pico 上支持模拟输入的引脚来读取,下面我们选择的是 GP26 和 GP27。分别来读取 X 和 Y。而按钮按下状态可使用数字引脚 GP22 来读取。
硬件连接
摇杆的 GND 接 Pico 的 GND。
摇杆的 +5V 接 Pico 的 VSYS。
摇杆的 VRX 接 Pico 的 GP27。
摇杆的 VRY 接 Pico 的 GP26。
摇杆的 SW 接 Pico 的 GP22。
编程
具体代码如下。其中当读取到的模拟量不超过 600 时判定为「左」或者「下」,而当读取到的模拟量大于或等于 60000 时判定为「右」或者「上」,介于这中间时判定为「中」。这个标准也可以微调来控制摇杆的灵敏度。
import machine
import utime
X_axis = machine.ADC(26)
Y_axis = machine.ADC(27)
press = machine.Pin(22, machine.Pin.IN, machine.Pin.PULL_UP)
while True:
X_axis_value = X_axis.read_u16()
Y_axis_value = Y_axis.read_u16()
if X_axis_value <= 600:
print("X: "+"Left ", end='')
elif X_axis_value >= 60000:
print("X: "+"Right ", end='')
elif 600 < X_axis_value < 60000:
print("X: "+"Middle ", end='')
if Y_axis_value <= 600:
print("Y: "+"Down")
elif Y_axis_value >= 60000:
print("Y: "+"Up")
elif 600 < Y_axis_value < 60000:
print("Y: "+"Middle")
if press.value() == 0:
print("Pressed")
utime.sleep(0.5)
运行之后,上下左右拨动摇杆,可以看到 Shell 窗口输出的方向变化。按下摇杆,会看到 Shell 窗口输出「Pressed」。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !