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)
今天就先写到这里,博主这边软连线有点问题,没法实验按钮按下的操作,所以将在下一篇介绍。
技术交流
欢迎转载、收藏、有所收获点赞支持一下!