如何在树莓派Pico上使用摇杆?

电子说

1.3w人已加入

描述

 

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

GND







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分