无线游戏手柄-树莓派二次开发总结

本文总结了在树莓派上装载无线游戏手柄驱动的步骤,包括载入joydev模块、解决安装过程中的依赖问题、测试手柄通信,以及使用Python读取手柄数据。此外,还介绍了如何通过dir()、help()和Pygame的joystick模块来查询和理解Python库的使用。最后,针对pycharm中pip安装库的问题提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树莓派装载手柄驱动

 通过这篇文章了解到手柄驱动装载的方法:

https://blog.csdn.net/dany_zj_cn/article/details/125926508?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%8C%97%E9%80%9A%E6%96%AF%E5%B7%B4%E8%BE%BE%E6%A0%91%E8%8E%93%E6%B4%BE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-125926508.142^v99^pc_search_result_base7&spm=1018.2226.3001.4187

 感觉所有的手柄都可以使用这种方法(这个后面再进行尝试)

1、载入joydev模块

# 载入 joydev 模块
pi@raspberrypi:~ $ modprobe joydev

 2、查看模块是否已经安装

#查看模块是否安装
pi@raspberrypi:~ $ lsmod

 如下图所示,出现joydev即可

3、安装手柄软件

pi@raspberrypi:~ $ sudo apt-get install joystick

 依赖问题

在这一步的时候,我另外一块板子出现了一些插曲,发现无法安装:

pi@raspberrypi:~ $ sudo apt-get install joystick
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

基于此,我找了一些方法:E: Could not get lock /var/lib/dpkg/lock-frontend问题的解决方法,跟着这个方法做完之后,又发现了另外一个问题:

pi@raspberrypi:~ $ sudo apt-get install joystick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 chromium-browser-l10n : Depends: chromium-browser (>= 92.0.4515.98~buster-rpt2) but 86.0.4240.197-rpt1 is to be installed
 cups-daemon : Depends: libcups2 (= 2.2.10-6+deb10u7) but 2.2.10-6+deb10u4 is to be installed
 libcupsimage2 : Depends: libcups2 (= 2.2.10-6+deb10u7) but 2.2.10-6+deb10u4 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

基于以上问题,找到了其解决方法:The following packages have unmet dependencies

最终成功安装!亲测有效!

4、测试手柄与树莓派之间是否通信(注意:在测试前,一定要将无线手柄的USB接收口插在树莓派上

pi@raspberrypi:~ $ jstest /dev/input/js0

可以看到手柄数据随着手柄的按动,发生了变化

树莓派使用python读取手柄数据

 这里有一篇大佬的文章有讲到使用python3提取手柄数据,暂时保留,查看是否拥有更好的。

通过不懈的努力,有找到一篇简单获取手柄摇杆数据python 简单获取手柄摇杆输入的文章,并且做了验证,发现可行。下面是我结合他的文章做出的代码调试:

import pygame
import time

pygame.init()
pygame.joystick.init()
done=False

while (done != True):
    for event in pygame.event.get():  # User did something
        if event.type == pygame.QUIT:  # If user clicked close
            done = True  # Flag that we are done so we exit this loop
    joystick_count = pygame.joystick.get_count()
    print(joystick_count)
    for i in range(joystick_count):
        joystick = pygame.joystick.Joystick(i)
        joystick.init() #  对手柄对象进行初始化操作,否则在IDE中无法操作,但是在pycharm中可以执行
        # axes = joystick.get_numaxes()  # 通过打印”axes”可知,摇杆输出共有六个数据
        print('***',joystick.get_axis(0),'***',joystick.get_axis(1),'***',joystick.get_axis(2),'***',joystick.get_axis(3),'***',joystick.get_axis(4),'***',joystick.get_axis(5))
        # 为了寻求对应关系,我将遥感数据一次性全部打印
        print('================')
        
        '''for i in range(axes): # 原文章提供的代码是通过循环分别打印六个数据,但是这样很快,无法通过调试得到对应关系,
            axis = joystick.get_axis(i)
            print(axis)'''


关于详细的joystick 模块使用可以参考这位大佬的文章Pygame详解(十七):joystick 模块

为了后面能够独立学习代码,我想实现能够查看python中一些库函数的使用方法,或者查看库函数或者package或者module的使用情况。通过查找相关资料,发现查询Python模块的使用方法这篇挺不错的。

文中提到了三种查询方式:

1、dir(库名)可以导出该库下所有的模块信息

2、help(函数名)可以导出使用方法

3、按住ctrl键在用鼠标左键点击所需要查看的函数或者文件,就可以看到他的使用方法

import pygame
print(dir(pygame.joystick))
'''joystick类中的方法
    ['Joystick', 'JoystickType', '_PYGAME_C_API', '__doc__', '__file__', '__loader__', '__name__',
     '__package__', '__spec__', 'get_count', 'get_init', 'init', 'quit']
    '''
print(help(pygame.joystick))

pip大法

我在树莓派中使用的是pycharm进行编程,当我想使用pygame库时,发现通过setting进行解释器配置有时候会出现无法下载或者获取不到信息的情况。这个时候我就找到一篇大神发的方法pip大法

# 在pycharm终端运行该命令
pip install pygame

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值