使用树莓派读取游戏手柄数据

使用树莓派读取游戏手柄数据

本教程使用树莓派读取游戏手柄数据,python3版本,可将数据读取为list。
大致思路是使用joystick软件,解析出手柄的数据,保存在文件中,再读文件数据。考虑到sd卡读写次数有限,将上述临时文件放在内存当中。
一、在shell环境下先安装手柄的操作软件
#1.更新包信息
sudo apt-get update
#2.安装手柄软件
sudo apt-get install joystick
二、测试软件是否正常工作
插上手柄,在shell中输入
cat /dev/input/js0 | hexdump
正常应该出现一堆数字,而且数字会随着手柄按键活动变化。
在这里插入图片描述
三、增加虚拟硬盘文件

在文件:/etc/fatab末尾增加:

tmpfs /var/jstestRes tmpfs defaults,noatime,nosuid,mode=0777,size=1m 0 0

重启树莓派后检查是否出现文件夹:/var/jstestRes
四、运行python文件:
https://download.csdn.net/download/lianqingde/22031214
该文件在子进程中调用文件:/home/pi/app/starter,该地址可自行确定。按照本文目录设定,应该如下:
必须具备starter文件和joyStick.py文件必须具备starter文件和joyStick.py文件。

文件为脚本:

 #!/bin/bash
jstest /dev/input/js0 > /var/jstestRes/res.txt

五、运行:python3 joyStick.py

在这里插入图片描述

六、部分代码如下:
初始化:

def __init__(self):
    self.process =subprocess.Popen("/home/pi/app/starter", shell=True)
    self.f = open('/var/jstestRes/res.txt', 'w+')
    time.sleep(0.5)
    self.CleanBufFile(

读数据:

def ReadStcick(self):
    while True:
        self.Buf = self.f.read()
        if self.Buf != '':
            # print(self.Buf)
            print(self.AnsisStickData())
            self.CleanBufFile()

得到手柄数据位于list:StickAxes, StickBtn当中

 def AnsisStickData(self):
        StickAxes = [0, 0, 0, 0, 0, 0]
        StickBtn = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

        tmp = self.Buf.split("Buttons:")
        StickAxesData = tmp[-2]
        StickBtnsData = tmp[-1]
        StickAxesData = StickAxesData.split("Axes:")[-1]
        StickAxesData = StickAxesData.replace(" ","")
        for i in range(len(StickAxes)):
            StickAxes[i] = self.GetData(StickAxesData, i)

        for i in range(len(StickBtn)):
            StickBtn[i] = self.GetData(StickBtnsData, i)

        return StickAxes, StickBtn
        pass

手柄就是普通的usb手柄,我买的时候特意在淘宝上找了一家自称可以兼容树莓派的,实测可用,20一个。链接如下:

https://item.taobao.com/item.htm?spm=a1z09.2.0.0.475b2e8dA84SaS&id=546529614303&_u=82113089bc4

在这里插入图片描述
附上代码链接:https://download.csdn.net/download/lianqingde/22031214

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用树莓派读取MPU6050数据,你需要连接MPU6050到树莓派的I2C总线上,并使用Python编写代码来读取数据。以下是一些基本步骤: 1. 连接MPU6050到树莓派的I2C总线上。MPU6050有两个地址,分别是0x68和0x69。连接时需要将AD0引脚接地(或3.3V),以选择一个地址。 2. 安装Python的smbus库。这个库提供了I2C通信的功能。 3. 编写Python代码来读取MPU6050的数据。可以使用smbus库中的read_byte_data()和read_word_data()函数来读取寄存器中的数据。 以下是一个简单的示例代码,可以读取MPU6050的加速度计和陀螺仪数据: ```python import smbus # I2C通信使用的总线号 bus = smbus.SMBus(1) # MPU6050的I2C地址 address = 0x68 # 读取一个16位的寄存器值 def read_word(reg): high = bus.read_byte_data(address, reg) low = bus.read_byte_data(address, reg + 1) value = (high << 8) + low return value # 读取加速度计和陀螺仪数据 while True: # 读取加速度计数据 acc_x = read_word(0x3b) acc_y = read_word(0x3d) acc_z = read_word(0x3f) # 读取陀螺仪数据 gyro_x = read_word(0x43) gyro_y = read_word(0x45) gyro_z = read_word(0x47) # 输出数据 print("Acceleration: ({0}, {1}, {2})".format(acc_x, acc_y, acc_z)) print("Gyroscope: ({0}, {1}, {2})".format(gyro_x, gyro_y, gyro_z)) ``` 这个示例代码可以实时读取MPU6050的加速度计和陀螺仪数据,并将其输出到控制台。你可以根据需要进行修改,以满足自己的需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值