0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用PS3控制器控制遥控车

454398 来源:wv 2019-09-24 11:46 次阅读

步骤1:拆开汽车

怎样用PS3控制器控制遥控车

您需要卸下汽车外壳以露出电线,以便您可以轻松地使用电动机并插入arduino。几乎有一堆螺丝和东西,所以只要将它们卸下,就可以开始使用。

步骤2:找出控制器

您需要使用usb电缆将ps3控制器连接到计算机,以找出输入等。我为此使用了程序USB视图。您可以从以下链接下载:http://www.ftdichip.com/Resources/Utilities/usbview.zip

然后打开程序并选择ps3控制器

结果应如下所示:

设备描述符:

bcdUSB:0x0200

bDeviceClass:0x00

bDeviceSubClass:0x00

bDeviceProtocol:0x00

bMaxPacketSize0:0x40(64)

idVendor:0x054C(Sony Corporation)

idProduct:0x0268

bcdDevice:0x0100

iManufacturer:0x01

iProduct:0x02

iSerialNumber:0x00

bNumConfigurations:0x01

ConnectionStatus:DeviceConnected

当前配置值:0x01

设备总线速度:完整

设备地址:0x01

打开管道:2

端点描述符:

bEndpointAddress:0x02

传输类型:中断

wMaxPacketSize:0x0040(64)

bInterval:0x01

端点描述符:

bEndpointAddress:0x81

传输类型:Interrupt PackageSize:0x0040(64) BInterval:0x01

重要的一点是控制器在输出时提供输出(0x02),并在(0x81)上接收输入

步骤3:使用USB库

幸运的是,我不是第一个将ps3控制器连接到arduino的人,因此可以使用非常有用的库。您应该在这里获取它:https://github.com/ribbotson/USB-Host/tree/master/ps3/PS3USB

现在,您应该下载此文件以了解有关控制器的更多信息:https://github.com/ribbotson/USB-Host/blob/master/examples/USB_desc.pde

使用此代码,我们可以找到有关arduino的各种内容。

请参阅:开始

freeMemory()报告683 《设备》描述符:

描述符长度:12

描述符类型:01 USB版本:0200

设备类别: 00

设备子类:00 《设备》协议:00 《最大》数据包大小:40 《供应商ID:054C 《产品》产品ID:0268 《版本》修订ID:0100

制造商。字符串索引:01

产品字符串索引:02

序列号索引:00

配置数:01

配置描述符:

总长度:0029

Num.intf: 01

Conf。值:01 字符串:00

属性:80 最大功率:FA

接口描述符:

Intf.number:00

Alt 。:00

端点:02

Intf。类别:03

Intf。子类:00

Intf。协议:00

Intf.string:00

未知描述符:

长度:09

类型:21

内容:110100012294000705

端点描述符:

端点地址:02

属性:03

最大包大小:0040

轮询间隔:01

端点描述符:

端点地址:81

属性:03 《最大》包大小:0040

轮询间隔:01 现在我们需要使库和控制器同步。为此,我们使用以下代码:

typedef struct {

byte epAddr;//如果设置了

byte Attr,则从端点描述符复制而没有位7。//端点传输类型。

unsigned int MaxPktSize;//最大数据包大小。

字节间隔;//轮询间隔(以帧为单位)。

byte sndToggle;//最后一个触发值,HCTL触发位的位掩码

byte rcvToggle;//最后一个触发值,HCTL触发位的位掩码

} EP_RECORD;

还有:

device_descriptor =(USB_DEVICE_DESCRIPTOR *)&buf;

if(

(device_descriptor-》 idVendor!= PS3_VID)||(device_descriptor-》 idProduct!= PS3_PID)){

Serial.println(“不支持的USB设备”);

while(1);//stop

第4步:现在,我们将控制器设置为提供输入!

我们希望控制器能够随时向以下位置提供输入: arduino,因此我们使用以下代码:

#define PS3_F4_REPORT_LEN 4

#define HID_REPORT_FEATURE 3

#define PS3_F4_REPORT_ID 0xF4 prog_char feature_F4_report [] PROGMEM = {0x42,0x0c, ;

/*设置PS3控制器为(i = 0; i ;

rcode = Usb.setReport (PS3_ADDR,ep_record [CONTROL_PIPE] .epAddr,PS3_F4_REPORT_LEN,PS3_IF,HID_REPORT_FEATURE,PS3_F4_REPORT_ID,buf);

if(rcode){

Serial.print(“设置报告错误:”);

Serial.println (rcode,HEX);

while(1);//stop

}

如果您想做一些额外的工作以保持冷静,还可以将ps3控制器上的LED 1设为打开。因为当您将控制器连接到ps3时,LED会亮起,所以看起来更亲,但除了美观以外,这没什么用。 (注意:您还可以使控制器与arduino配合使用,非常酷!)。这是LED的代码:

#define PS3_01_REPORT_LEN 48

#define HID_REPORT_OUTPUT 2

#define PS3_01_REPORT_ID 0x01

prog_char output_01_report [] PROGMEM = {0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00,

0x00、0x02、0xff,0x27、0x10、0x00、0x32、0xff,

0x27、0x10、0x00, 0x32、0xff,0x27、0x10、0x00,

0x32、0xff,0x27、0x10、0x00、0x32、0x00、0x00,

0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00,

》 0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00

};

/*为(i = 0; i buf [i] = pgm_read_byte_near(output_01_report + i);

rcode = Usb.setReport(PS3_ADDR,ep_record [CONTROL_PIPE] .epAddr,PS3_01_REPORT_LEN,PS3_IF,HID_REPORT_OUTPUT,PS3_01_REPORT_ID,《) br》 Serial.print(“设置报告错误:”);

Serial.println(rcode,HEX);

while(1);//stop

}

更重要的是,arduino需要处理来自控制器的信号。使用以下代码:

void PS3_poll(void)

{

byte rcode = 0;//返回代码

/*轮询PS3 */

rcode = Usb.inTransfer(PS3_ADDR,ep_record [INPUT_PIPE] .epAddr,PS3_01_REPORT_LEN,buf);

if(rcode!= 0){

return;

}

process_report();

return;

}

第5步:大结局:将Arduino连接到汽车上

因此,每辆车都不一样。在我的项目中,我有一辆非常简单的汽车,只有四个控制选项(向前,向后,向左,向右),并且每个都只允许一个值,即只有一个允许的加速度。因此,相应地创建代码。我只使用了控制器上的方向按钮,因为我认为这是最简单的。也可以使用加速度计进行转向,使用操纵杆进行前进等。基本上,您可以选择所需的任何控制配置。我将在短期内说明如何操作。

但是,现在,我们需要将arduino连接到汽车上。我的车有两个马达。向前后退一圈,向前转一圈。您需要确定这些电机的工作方式。如果它们像我的,则将连接两根电线,您将需要去除这些电线并将其从arduino的输出端焊接到它们上。如果您的汽车与众不同,那么希望它不会太难找出答案。

现在我们已经将arduino连接到汽车上,我们需要编写代码来告诉汽车要做什么。正如我上面提到的,这取决于您的喜好和个人汽车。因此,现在我将介绍一堆无论情况如何都将有用的代码。首先,我们希望方法读取按钮输入。我们可以使用以下内容:

#define buSelect 0

#define buLAlog 1

#define buRAnalog 2

#define buStart 3

#define buUp 4

#define buRight 5

#define buDown 6

#define buLeft 7

#define buL2 8

#define buR2 9

#define buL1 10

#define buR1 11

#define buTriangle 12

#define buCircle 13

#define buCross 14

#define buSquare 15

#define buPS 16

如果按下指定的按钮,则它们返回true。因此,对于我来说,我使用了buUp,buDown等。

如果您想成为发烧友,并且可能具有一系列输入值,那么您可以使用多个加速力,则可以使用加速度计。这些是他们的方法:

#define加速度计X 0

#define加速度计Y 1

#define加速度计Z 2

#define陀螺仪Z 3

这些值从0到1023,其中512为中性

无论如何,一旦执行了此操作,您只需要告诉arduino以所需的输出量输出输出,汽车就会行驶!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15206

    浏览量

    171121
收藏 人收藏

    评论

    相关推荐

    STM32F407控制器遥控控制3个直流电机,PWM引脚输出电压达不到驱动控制电压为什么?

    请教各位大拿,我STM32F407控制器遥控控制3个直流电机,分别模拟汽车的转向电机、制动电机、油门电机,程序没有问题,原车上都调试过了,
    发表于 03-20 08:07

    自制一辆遥控悍马

    这周和大家分享一个14岁的学生参加一个AI挑战赛,利用ChatGPT的帮助做的遥控车项目,包含作者的心路历程。 所需材料 Fly Sky控制器/接收(任何控制器都可以) Ardu
    发表于 03-19 16:02

    索尼发布PS3更新,支持蓝光播放并修复漏洞 

    PS3发售以来已经超过18个春秋,它的影响力仍然可见。PlayStation Plus高级会员服务每月提供多样化的PS3游戏供玩家串流游玩,同时还允许会员访问包括PS1、PS2和PS
    的头像 发表于 02-28 15:12 587次阅读

    怎样用32单片机测电压?

    怎样用32单片机测电压
    发表于 10-31 07:09

    怎样用单片机IO口来控制三极管的开关特性使共阳极的LED点亮?

    怎样用单片机IO口来控制三极管的开关特性使共阳极的LED点亮
    发表于 10-15 06:02

    儿童电动遥控车玩具,基于2.4G合封芯片开发

    和复杂程度方面涵盖了广泛的范围。 遥控车玩具由两部分组成:遥控器和遥控车遥控器上的五个控制键控制遥控
    的头像 发表于 07-26 11:42 796次阅读

    Arduino遥控车 物联网控制遥控车方案

      摘要:主要讨论了如何使用Arduino制作一个遥控车,并通过WiFi和MQTT或者蓝牙等不同的方式实现遥控车控制。其中,WiFi和MQTT的实现需要连接到OneNet平台
    发表于 07-18 17:07 4次下载

    物联网遥控车开源分享

    电子发烧友网站提供《物联网遥控车开源分享.zip》资料免费下载
    发表于 07-11 11:09 2次下载
    物联网<b class='flag-5'>遥控车</b>开源分享

    遥控车遥控器的连接

    电子发烧友网站提供《遥控车遥控器的连接.zip》资料免费下载
    发表于 07-10 14:57 4次下载
    <b class='flag-5'>遥控车</b>和<b class='flag-5'>遥控</b>器的连接

    Arduino新型蓝牙遥控车

    电子发烧友网站提供《Arduino新型蓝牙遥控车.zip》资料免费下载
    发表于 07-06 11:18 0次下载
    Arduino新型蓝牙<b class='flag-5'>遥控车</b>

    使用Android和Arduino进行遥控车破解

    电子发烧友网站提供《使用Android和Arduino进行遥控车破解.zip》资料免费下载
    发表于 06-30 11:17 0次下载
    使用Android和Arduino进行<b class='flag-5'>遥控车</b>破解

    通过电脑游戏控制遥控车

    电子发烧友网站提供《通过电脑游戏控制遥控车.zip》资料免费下载
    发表于 06-29 14:58 1次下载
    通过电脑游戏<b class='flag-5'>控制</b><b class='flag-5'>遥控车</b>

    带Arduino的Rain1遥控车

    电子发烧友网站提供《带Arduino的Rain1遥控车.zip》资料免费下载
    发表于 06-26 10:23 0次下载
    带Arduino的Rain1<b class='flag-5'>遥控车</b>

    自制远程遥控车的难度?

    遥控车
    YS YYDS
    发布于 :2023年06月20日 13:49:30

    如何使用NodeMCU Lilin v3制作遥控车

    我正在尝试使用 NodeMCU Lilin v3 制作遥控车。现在我已经能够使用网络服务功能来实现它。我什至使用 DDNS 服务 (DuckDNS) 能够通过蜂窝路由
    发表于 06-06 10:10