ps2摇杆传感器实验
实验目的:通过实验获取摇杆传感器对应的方向以及数值。从而为摇杆应用提供支持。
因为摇杆获取的是模拟信号,我们需要将模拟信号转换为数字信号;因此传感器需要配合PCF8591数模转换模块使用。
接线示例:
引脚 | 连接引脚 |
摇杆GND | 树莓派GND |
摇杆+5V | 树莓派5V |
摇杆VRX | PCF8591的AIN0 |
摇杆VRY | PCF8591的AIN1 |
摇杆SW | PCF8591的AIN2 |
代码示例:
#!/usr/bin/env python
#coding:utf-8
'''
from JiuJiang
树莓酱的操作实例
https:://www.suhmeijiang.com
'''
import time ##引入time库
import smbus ##引入控制总线
address = 0x48 ##传感器地址
xAddress = 0x40 ##x轴使用的地址 对应的AIN0
yAddress = 0x41 ##y轴使用的地址 对应的AIN1
zAddress = 0x42 ##z轴使用的地址 对应的AIN2
bus = smbus.SMBus(1) ##开启总线
##定义监测方法
def getStatus(n):
if not n: return
global address
map = {'x':xAddress, 'y':yAddress, 'z':zAddress}
if n not in map.keys():
return False
#发送一个控制字节到设备 表示要读取n通道的数据
bus.write_byte(address, map[n])
#空读一次 消费掉无效数据(重要)
bus.read_byte(address)
#返回某通道输入的模拟值A/D转换后的数字值
return bus.read_byte(address)
##获取方位信息
def getDirection(n):
if not n: return
num = getStatus(n)
num = int(num)
mess = ''
if n == 'x':
if num > 150: mess = 'backward'
if num < 125: mess = 'forward'
if n == 'y':
if num > 150: mess = 'left'
if num < 125: mess = 'right'
if n == 'z':
if num == 0: mess = 'pressed'
return mess
其中PCF8591数模转换模块参考:https://www.shumeijiang.com/2022/10/30/pcf8591-da数模转换实验.html。