专栏首页python3树莓派3 蓝牙连接 PS3手柄

树莓派3 蓝牙连接 PS3手柄

   网上没有直接用3蓝牙连接树莓派的教程,看到一篇用2b 和 蓝牙适配器一起用 连接PS3 手柄的,所以先安装一下试试。

http://tieba.baidu.com/p/3237051512

下面就是安装必要的软件了: pi@raspberrypi ~ $ sudo apt-get install libusb-dev libbluetooth-dev libjack-dev 

注:上面lib这个三个是必须装的,是为了后面编译要用到的 否则各种报错 可以在qtsixa官网下载 下载完毕后解压: pi@raspberrypi ~/tools/sixa $ tar -xvf QtSixA-src.tar.gz 进入解压文件夹: pi@raspberrypi ~/tools/sixa $ cd QtSixA-1.5.1/ 我们先编译配对工具: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1 $ cd utils/ 打开“Makefile”, 把“WANT_JACK = false” 改为 “WANT_JACK = true”。 输入“make”编译工具: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/utils $ make mkdir -p bins cc -O2 -Wall -Wl,-Bsymbolic-functions hidraw-dump.c -o bins/hidraw-dump cc -O2 -Wall -Wl,-Bsymbolic-functions sixpair.c -o bins/sixpair `pkg-config --cflags --libs libusb` cc -O2 -Wall -Wl,-Bsymbolic-functions sixpair_kbd.c -o bins/sixpair-kbd `pkg-config --cflags --libs libusb` 编译完后, 你可以在“./bins” 文件家里看到这些文件: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/utils $ ls bins hidraw-dump sixad-jack sixpair sixpair-kbd 下面进行配对,将手柄用数据线接入树莓派。 按下“ps”按键。 运行“./bins/sixpair”。成功你会看到以下类似信息, 然后可以拔出你的手柄了: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/utils $ sudo ./bins/sixpair Current Bluetooth master: xx:xx:xx:xx:xx:xx Setting master bd_addr to: xx:xx:xx:xx:xx:xx 然后我们进入”../sixad/“, 编译“sixad“: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/utils $ cd ../sixad/ 编译并安装”sixad“: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/sixad $ make

如果你的树莓派版本比较新,gcc版本大于等于4.7以上的,make会报错

mkdir -p bins g++ -O2 -Wall -Wl,-Bsymbolic-functions sixad-bin.cpp bluetooth.cpp shared.cpp textfile.cpp -o bins/sixad-bin `pkg-config --cflags --libs bluez` -lpthread -fpermissive sixad-bin.cpp: In function ‘int main(int, char**)’: sixad-bin.cpp:84:20: warning: taking address of temporary [-fpermissive] sixad-bin.cpp:89:18: error: ‘close’ was not declared in this scope sixad-bin.cpp:100:20: error: ‘sleep’ was not declared in this scope sixad-bin.cpp:109:22: error: ‘close’ was not declared in this scopepi

其实有很多错误 我截取了一段,都是类似这样的错误,需要改以下share.h的文件内容就可以了

/*    
 * shared.h    
 *    
 * This file is part of the QtSixA, the Sixaxis Joystick Manager    
 * Copyright 2008-2011 Filipe Coelho <falktx@gmail.com>    
 *    
 * QtSixA can be redistributed and/or modified under the terms of the GNU General    
 * Public License (Version 2), as published by the Free Software Foundation.    
 * A copy of the license is included in the QtSixA source code, or can be found    
 * online at www.gnu.org/licenses.    
 *    
 * QtSixA is distributed in the hope that it will be useful, but WITHOUT ANY    
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR    
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.    
 *    
 */    
#ifndef SHARED_H    
#define SHARED_H    
#include <unistd.h>    
struct dev_led {    
bool enabled;    
bool anim;    
bool auto_sel;    
int number;    
};    
struct dev_joystick {    
bool enabled;    
bool buttons;    
bool axis;    
bool sbuttons;    
bool accel;    
bool accon;    
bool speed;    
bool pos;    
};    
struct dev_remote {    
bool enabled;    
bool numeric;    
bool dvd;    
bool directional;    
bool multimedia;    
};    
struct dev_input {    
bool enabled;    
int key_select, key_l3, key_r3, key_start, key_up, key_right, key_down, key_left;    
int key_l2, key_r2, key_l1, key_r1, key_tri, key_cir, key_squ, key_cro, key_ps;    
int axis_l_type, axis_r_type, axis_speed;    
int axis_l_up, axis_l_right, axis_l_down, axis_l_left;    
int axis_r_up, axis_r_right, axis_r_down, axis_r_left;    
bool use_lr3;    
};    
struct dev_rumble {    
bool enabled;    
bool old_mode;    
};    
struct dev_timeout {    
bool enabled;    
int timeout;    
};    
struct device_settings {    
bool auto_disconnect;    
struct dev_led led;    
struct dev_joystick joystick;    
struct dev_remote remote;    
struct dev_input input;    
struct dev_rumble rumble;    
struct dev_timeout timeout;    
};    
bool was_active();    
void set_active(int active);    
bool io_canceled();    
void sig_term(int sig);    
void open_log(const char *app_name);    
struct device_settings init_values(const char *mac);    
int get_joystick_number();    
void enable_sixaxis(int csk);    
#endif // SHARED_H

这是完整文件内容,完全覆盖就可以使用

@raspberrypi ~/tools/sixa/QtSixA-1.5.1/sixad $ sudo make install 启动”sixad“, 按下手柄”ps“键, 等待出现以下信息就成功了: pi@raspberrypi ~/tools/sixa/QtSixA-1.5.1/sixad $ sudo sixad --start sixad-bin[6117]: started sixad-bin[6117]: sixad started, press the PS button now sixad-bin[6117]: unable to connect to sdp session sixad-bin[6117]: Connected Sony Computer Entertainment Wireless Controller (xx:xx:xx:xx:xx:xx)

之后就没有错误了 按照步骤 就可以连上ps3手柄

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《敏捷软件开发:原则、模式与实践》笔记(2)

    https://www.twblogs.net/a/5b957acb2b717750bda47bd5/zh-cn/

    sickworm
  • 【从零学习OpenCV 4】直方图匹配

    经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社...

    小白学视觉
  • IT兄弟连 HTML5教程 DIV+CSS网页标准化布局 小结及习题

    DIV+CSS布局页面的优势:表现和内容相分离、代码简洁,提高页面浏览速度、易于维护和改版、提高搜索引擎对网页的索引效率。每个HTML元素都可以看作一个区块,类...

    ITXDL
  • 前端基础-CSS基础(八)

    efonfighting
  • kubelet 创建 pod 的流程

    上篇文章介绍了 kubelet 的启动流程,本篇文章主要介绍 kubelet 创建 pod 的流程。

    田飞雨
  • 蓝桥杯 入门训练 序列求和

    本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

    Debug客栈
  • 2019年第十届蓝桥杯B组C++省赛手记

    这已经是第二次参加蓝桥杯大赛,之前参加蓝桥杯团队赛项只拿到了国家三等奖(安慰奖),上年编程成绩也是甚不理想,今年吃了上一年的亏,准备了许久,虽然是做的比较基础,...

    Debug客栈
  • 还能这样?把 Python 自动翻译成 C++

    随着深度学习的广泛应用,在搜索引擎/推荐系统/机器视觉等业务系统中,越来越多的深度学习模型部署到线上服务。

    jeanron100
  • 【从零学习OpenCV 4】图像中添加椒盐噪声

    经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社...

    小白学视觉
  • 提高标准输入输出流的速度

    iostream默认是与stdio关联在一起的,以使两者同步,因此消耗了iostream不少性能。C++中的std :: cin和std :: cout为了兼容...

    努力努力再努力F

扫码关注云+社区

领取腾讯云代金券