海纳百客

海纳百客

在树莓派 Pico 上使用摇杆

吃瓜阿阳

友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com

模拟二轴拇指操纵杆(俗称摇杆)是一种模拟操纵杆,相比于「方向」操纵杆更加准确和灵敏,它带有一个「按下选择按钮」。因为它是模拟的,所以需要使用树莓派 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」。

你还可以:
查看系列教程中的其他文章
购买本教程所用到的 Pico 套件

    标签:

    发布评论 条评论)

    评论列表