Micropython——Pico获取双轴摇杆模块数据(一)

简介:

模拟二轴拇指操纵杆是一种模拟操纵杆,相比于“方向”操纵杆更加准确和灵敏,它带有一个“按下选择”按钮。因为它是模拟的,所以需要在微控制器上安装两个模拟读取针来确定X和Y。有一个额外的数字输入可以让你读取开关。


1、实物图

图一: 模拟二轴拇指操纵杆实物图


2、连接及使用


3、调试程序

这里我们为什么要先进行调试,因为我们不知道当摇杆进行左右或者上下摇动时,其值为多少,所以在这里我们就要获取其上下左右所出现的最大值和最小值,以便我们进行下一步处理。 

from machine import Pin,ADC
import utime

x_axis = ADC(Pin(26,Pin.OUT))
y_axis = ADC(Pin(27,Pin.OUT))

while True:
    x_axis_value = x_axis.read_u16()
    y_axis_value = y_axis.read_u16()
    print("X = {0:.2f} \t\t   Y = {1:.2f}\r\n".format(x_axis_value,y_axis_value))
    utime.sleep(1)

在这里我们首先可以得到当摇杆进行转动时,我们在这里可以得到当摇杆处于中心位置时,即静止不动时,其值范围为如下所示:

 当左右推动摇杆,可得到如下所示的X范围数值:

可以清晰地看到,当X轴进行转动时,其最大值均在60000以上,其最下值在600以下,而且当轻微推动时,其数值也在该范围内,所以在此可以判断X轴是否进行左右推动。

同理,我们可以得到 Y 轴上下的推动范围数值:

 其数值的范围与 X 轴数值范围的波动变化情况相同。

可得到下面的一张图:

根据上面的图,可以得到如下的程序: 

from machine import ADC,Pin
import utime

X_axis = ADC(Pin(26,Pin.OUT))
Y_axis = ADC(Pin(27,Pin.OUT))

while True:
    X_axis_value = X_axis.read_u16()
    Y_axis_value = Y_axis.read_u16()
    if X_axis_value <= 600:
        print("X: "+"  Left  ")
    elif X_axis_value >=60000:
        print("X: "+"  Right  ")
    elif 600<X_axis_value<60000:
        print("X: "+"  Middle  ")
    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  ")
    utime.sleep(2)

 今天就先写到这里,博主这边软连线有点问题,没法实验按钮按下的操作,所以将在下一篇介绍。

技术交流
欢迎转载、收藏、有所收获点赞支持一下!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

posted @ 2022-09-07 09:00  Xa_L  阅读(60)  评论(0编辑  收藏  举报  来源