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

    文章

    16199

    浏览量

    177399
收藏 人收藏

    评论

    相关推荐

    电动控制器欠压保护怎样调整

    电动控制器的欠压保护功能是为了保护电池和延长电池寿命而设计的。当电池电压下降到某一设定值时,控制器会自动切断电源,防止电池过度放电。调整电动控制
    的头像 发表于 10-15 10:34 1611次阅读

    电动控制器电压过高怎么解决

    当电动控制器电压过高时,可以采取以下措施来解决这一问题: 一、检查与调整控制器设定 查找截止电压设定参数 : 电动控制器的截止电压设定参
    的头像 发表于 10-15 10:31 671次阅读

    电动万能控制器不用霍尔可以吗

    电动控制器是电动系统中非常重要的一个部件,它负责控制电机的启动、运行、停止以及速度调节等功能。霍尔传感(Hall sensor)是
    的头像 发表于 10-15 10:24 626次阅读

    组合逻辑控制器什么实现的

    组合逻辑控制器是一种用于控制和管理复杂系统中各个组件之间交互的逻辑设备。它可以应用于各种领域,如计算机科学、通信、自动化控制等。在这篇文章中,我们将详细探讨组合逻辑控制器的实现方法、原
    的头像 发表于 06-30 10:11 457次阅读

    PS6605系列 PD协议快充控制器概述

    PS6605系列 PD协议快充控制器概述
    的头像 发表于 05-30 13:27 347次阅读
    <b class='flag-5'>PS</b>6605系列 PD协议快充<b class='flag-5'>控制器</b>概述

    宽输入电压低 IQ 升压控制器LM5150-Q1数据表

    电子发烧友网站提供《宽输入电压低 IQ 升压控制器LM5150-Q1数据表.pdf》资料免费下载
    发表于 04-02 09:12 0次下载
    宽输入电压<b class='flag-5'>车</b><b class='flag-5'>用</b>低 IQ 升压<b class='flag-5'>控制器</b>LM5150-Q1数据表

    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 1313次阅读

    自己设计开发的一些无刷电机控制器,希望坛友多多交流

    遥控:支持HotRC SBUS接收机遥控 功能:双轮速度同步闭环,角速度闭环,支持坡道驻,比较好的走直线功能! 双轮FOC控制器(小功率) 电压:DC18-32V 电流:15A*2
    发表于 01-30 18:15

    如何选择合适的集中电源控制器

    控制遥控控制、手动控制等。 稳定性:选择性能稳定、可靠性高的集中电源控制器,以确保设备的长期稳定运行。 扩展性:考虑集中电源
    的头像 发表于 01-30 15:25 541次阅读
    如何选择合适的集中电源<b class='flag-5'>控制器</b>?

    控制器在两轮中的位置和作用

    两轮,又称摩托车或电动自行车,是一种常见的交通工具。在两轮中,控制器起着至关重要的作用,它负责控制整车的运行状态,包括电机的转速、方向和制动等。本文将详细介绍
    的头像 发表于 01-15 16:12 2789次阅读

    基于XIAO ESP32C3的智能家居四路控制器设计

    今天小编给大家带来的是印度的Maker Technolab creation的基于ESP32C3的智能家居四路控制器,该控制器可以通过传统的手动开关按钮、红外遥控器、智能手机进行
    的头像 发表于 01-02 10:53 1648次阅读
    基于XIAO ESP32C<b class='flag-5'>3</b>的智能家居四路<b class='flag-5'>控制器</b>设计

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41

    智能控制器功能有哪些

    以简单的智能为例,一般会存在两个控制器,一个是运行ROS的主控,另一个是运行电机控制和传感信息采集的单片机比如STM32。 以智能的应
    的头像 发表于 11-26 17:38 1238次阅读
    智能<b class='flag-5'>车</b><b class='flag-5'>控制器</b>功能有哪些