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以所需的输出量输出输出,汽车就会行驶!

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

    关注

    114

    文章

    17648

    浏览量

    190291
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    69.9元乐鑫科技ESP32-S3 2.8寸串口屏爆改手持彩屏遥控器!手机APP卡顿?不存在的!

    了!本期就让我启明智显2.8寸触摸串口屏,为你打造一个专属的高性能遥控器,成本仅69.9元!这款串口屏搭载ESP32-S3芯片,支持Wi-Fi和蓝牙,配备240*
    的头像 发表于 11-21 18:02 260次阅读
    69.9元<b class='flag-5'>用</b>乐鑫科技ESP32-S<b class='flag-5'>3</b> 2.8寸串口屏爆改手持彩屏<b class='flag-5'>遥控器</b>!手机APP卡顿?不存在的!

    ASM1042A3S规级CANFD芯片在两轮和平衡控制器方案中的技术应用

    摘要 本文以国科安芯推出的ASM1042A3S规级CAN FD芯片为例,讨论在两轮与平衡控制器方案中的技术应用。通过对芯片核心技术特点
    的头像 发表于 10-23 17:49 469次阅读

    智能天文时控,路灯光电控制器,路灯三遥控制器,沃思智能

    在现代城市照明系统中,智能控制技术的应用已成为提升能源效率和管理水平的核心手段。智能天文时控、路灯光电控制器与路灯三遥控制器作为三大核心设备,通过融合天文算法、光电传感和远程通信技术
    的头像 发表于 10-09 09:46 331次阅读
    智能天文时控<b class='flag-5'>器</b>,路灯光电<b class='flag-5'>控制器</b>,路灯三<b class='flag-5'>遥控制器</b>,沃思智能

    【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波避障、远程控制、星闪/红外遥控)有教程代码

    很多物联网学习者总觉得“学了用不上”:单独会接传感、懂点通信协议,可一到“多模块协同”就慌了——不知道怎么让超声波模块的测距数据通过星闪传出去,也没试过小程序远程控制小车避障。而这台基于WS63
    的头像 发表于 09-10 16:01 690次阅读
    【项目实战】基于WS63的鸿蒙星闪红外<b class='flag-5'>遥控车</b>(循迹、超声波避障、远程<b class='flag-5'>控制</b>、星闪/红外<b class='flag-5'>遥控</b>)有教程代码

    产品推荐 | MOS管在电动控制器上的应用

    电动控制器的定义及结构目前市面上的电动包含电动自行车、电动摩托车、电动三轮、电动四轮等。无论何种电动
    的头像 发表于 08-12 15:21 800次阅读
    产品推荐 | MOS管在电动<b class='flag-5'>车</b><b class='flag-5'>控制器</b>上的应用

    两轮自平衡电动及其电机控制器设计

    摘要:两轮自平衡电动的平衡原理源自倒立摆模型,为研制两轮自平衡电动设计了一套两轮自平衡电动的方案,并采用MC33035和PIC18F4580为主控芯片为两轮自平衡电动设计了一个
    发表于 06-09 16:15

    具有同步续流的电动直流电机控制器设计

    二极管上产生的稳态续流功耗占了整个控制器功耗相当大的比例。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:具有同步续流的电动直流电机控制器设计.pdf【免责声明】本文系网
    发表于 06-05 11:23

    车载整机控制器 工程机械主机控制器#硕博电子#国产控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年05月26日 09:09:02

    工程机械控制器厂家 控制器国产替代 #国产控制器#控制器厂家#控制器品牌

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年04月29日 14:15:05

    工程机械控制器如何选型?控制器选型指南 #控制器 #车载控制器 #整车控制器 #控制器选型

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年03月14日 10:54:24

    英飞凌_XC846电动控制器原理图(12管)

    英飞凌_XC846电动控制器原理图(12管)
    发表于 02-13 17:02 5次下载

    无线遥控车的电机抖动

    我们的遥控车电控方案有一个问题,不知道是怎么回事,请帮我看看问题在哪。 我们的方案是无线遥控接收机的sbus接我们主板,我们主板接电调,电调接电机。 现在的问题是打开遥控器不动摇杆,电机会无故抖动
    发表于 02-12 16:48

    Y1620工程机械主机控制器 车载智能控制器 CAN总线 #工程机械控制器 #整车控制器 #车载控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年02月10日 15:32:21

    移动机械控制器X1010,支持433兆赫兹遥控器#工程机械控制器 #车载智能控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2024年12月26日 10:52:47

    使用TPS2492/3热插拔控制器

    电子发烧友网站提供《使用TPS2492/3热插拔控制器.pdf》资料免费下载
    发表于 12-20 17:16 0次下载
    使用TPS2492/<b class='flag-5'>3</b>热插拔<b class='flag-5'>控制器</b>