模拟二轴拇指操纵杆(俗称摇杆)是一种模拟操纵杆,相比于「方向」操纵杆更加准确和灵敏,它带有一个「按下选择按钮」。因为它是模拟的,所以需要使用树莓派 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\t\t", end='') elif X_axis_value >= 60000: print("X: "+"Right\t", end='') elif 600 < X_axis_value < 60000: print("X: "+"Middle\t", 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」。
能否出个DIY手柄教程