用PS4手柄做Arduino的控制器

本文来自好奇吖斌的主页

用PS4手柄做Arduino遥控器国外有比较多的帖子了(因为原创在国外的),我搜索了一下国内的社区和论坛这个的资料几乎没有,最多的就是PS2手柄,还有一些是PS3手柄做遥控器的,不过资料也不是很全面,最近弄了用PS4手柄蓝牙控制Arduino,写个教程帖分享一下吧,如果你既是PS4游戏玩家也是位创客的话,那么你可以学习一下怎么使用PS4手柄做Arduino的控制器,把手柄利用起来。

实现PS4手柄做Arduino控制器其实很简单的,USB Host Shield库提供两种方法:
一是用USB数据线控制,这个方法搭好硬件烧好库的例程就直接可以用了,非常简单,不过连着线不好做遥控器所以这个方法不说。
二是用蓝牙适配器无线遥控,比较适合做一些小车、机器人的控制器,这里最关键就是蓝牙适配器的配对了,用PS4手柄做项目作品比起用PS2和手机蓝牙遥控会显得高大上,废话不多说了,按下面做准备吧!
准备的硬件:

  • PS4手柄
  • USB蓝牙4.0适配器
  • USB Host Shield板
  • Arduino UNO

准备的软件和库:


我的PS4手柄是新款的slim,就是触摸板上带灯条的;之前买过一个蓝牙2.0的适配器发现怎么也配对不了,换成蓝牙4.0的适配器一下子就成功配对上了,我这里用了一个叫orico的蓝牙4.0适配器,听别人说绿联的蓝牙4.0适配器也行,建议买这两个品牌的;USB Host Shield我用的是全尺寸那种,还有一种迷你的没用过,Arduino板用UNO或MEGA的都行,我这里用的是经典的UNO。

安装好Arduino IDE后下载USB Host Shield库文件,右键解压到当前文件夹,USB_Host_Shield_2.0-master文件夹名改成USB_Host_Shield_2.0,不改也行,只不过好看点,然后把整个文件夹复制到Arduino IDE的libraries库文件夹里,该文件夹一般在我的电脑-->我的文档-->Arduino-->libraries
还有一种在线安装库文件的方法,在IDE菜单点项目–>加载库–>管理库,然后等待网络加载库列表,在搜索框输usb找到USB_Host_Shield2.0然后安装即可,不过这个方法有时候库列表容易加载失败 

安装成功后重新打开软件,文件-->示例-->USB_Host_Shield_2.0这里可以找到我们新增的库

接下来我们烧录Buletooth下的BTPS4例程,我们看下面这个配对代码。

// This will start an inquiry and then pair with the PS4 controller - you only have to do this once
// You will need to hold down the PS and Share button at the same time, the PS4 controller will then start to blink rapidly indicating that it is in pairing mode
PS4BT PS4(&Btd, PAIR);

// After that you can simply create the instance like so and then press the PS button on the device
//PS4BT PS4(&Btd);

默认的示例代码是第一次进行配对时把PS4BT PS4(&Btd, PAIR);这句代码注释去掉,//PS4BT PS4(&Btd);这句代码注释加上表示进入配对状态,烧录好代码好上电,此时同时按下PS4手柄上的PS和SHARE键进入配对模式,手柄LED灯会快闪,当和蓝牙适配器配对好后LED常亮,可以把原来配对的代码注释//PS4BT PS4(&Btd, PAIR);启用PS4BT PS4(&Btd);重新烧录,以后就不用再上电的时候重新进入配对模式了,就像下面那样。

// This will start an inquiry and then pair with the PS4 controller - you only have to do this once
// You will need to hold down the PS and Share button at the same time, the PS4 controller will then start to blink rapidly indicating that it is in pairing mode
//PS4BT PS4(&Btd, PAIR);

// After that you can simply create the instance like so and then press the PS button on the device
PS4BT PS4(&Btd);

下面是个随手录制的视频。

坐沙发

发表评论