一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣用PS3控制器控制遙控車

454398 ? 來源:wv ? 2019-09-24 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:拆開汽車

怎樣用PS3控制器控制遙控車

您需要卸下汽車外殼以露出電線,以便您可以輕松地使用電動(dòng)機(jī)并插入arduino。幾乎有一堆螺絲和東西,所以只要將它們卸下,就可以開始使用。

步驟2:找出控制器

您需要使用usb電纜將ps3控制器連接到計(jì)算機(jī),以找出輸入等。我為此使用了程序USB視圖。您可以從以下鏈接下載:http://www.ftdichip.com/Resources/Utilities/usbview.zip

然后打開程序并選擇ps3控制器

結(jié)果應(yīng)如下所示:

設(shè)備描述符:

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

當(dāng)前配置值:0x01

設(shè)備總線速度:完整

設(shè)備地址:0x01

打開管道:2

端點(diǎn)描述符:

bEndpointAddress:0x02

傳輸類型:中斷

wMaxPacketSize:0x0040(64)

bInterval:0x01

端點(diǎn)描述符:

bEndpointAddress:0x81

傳輸類型:Interrupt PackageSize:0x0040(64) BInterval:0x01

重要的一點(diǎn)是控制器在輸出時(shí)提供輸出(0x02),并在(0x81)上接收輸入

步驟3:使用USB庫

幸運(yùn)的是,我不是第一個(gè)將ps3控制器連接到arduino的人,因此可以使用非常有用的庫。您應(yīng)該在這里獲取它:https://github.com/ribbotson/USB-Host/tree/master/ps3/PS3USB

現(xiàn)在,您應(yīng)該下載此文件以了解有關(guān)控制器的更多信息:https://github.com/ribbotson/USB-Host/blob/master/examples/USB_desc.pde

使用此代碼,我們可以找到有關(guān)arduino的各種內(nèi)容。

請(qǐng)參閱:開始

freeMemory()報(bào)告683 《設(shè)備》描述符:

描述符長度:12

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

設(shè)備類別: 00

設(shè)備子類:00 《設(shè)備》協(xié)議:00 《最大》數(shù)據(jù)包大?。?0 《供應(yīng)商ID:054C 《產(chǎn)品》產(chǎn)品ID:0268 《版本》修訂ID:0100

制造商。字符串索引:01

產(chǎn)品字符串索引:02

序列號(hào)索引:00

配置數(shù):01

配置描述符:

總長度:0029

Num.intf: 01

Conf。值:01 字符串:00

屬性:80 最大功率:FA

接口描述符:

Intf.number:00

Alt 。:00

端點(diǎn):02

Intf。類別:03

Intf。子類:00

Intf。協(xié)議:00

Intf.string:00

未知描述符:

長度:09

類型:21

內(nèi)容:110100012294000705

端點(diǎn)描述符:

端點(diǎn)地址:02

屬性:03

最大包大小:0040

輪詢間隔:01

端點(diǎn)描述符:

端點(diǎn)地址:81

屬性:03 《最大》包大?。?040

輪詢間隔:01 現(xiàn)在我們需要使庫和控制器同步。為此,我們使用以下代碼:

typedef struct {

byte epAddr;//如果設(shè)置了

byte Attr,則從端點(diǎn)描述符復(fù)制而沒有位7。//端點(diǎn)傳輸類型。

unsigned int MaxPktSize;//最大數(shù)據(jù)包大小。

字節(jié)間隔;//輪詢間隔(以幀為單位)。

byte sndToggle;//最后一個(gè)觸發(fā)值,HCTL觸發(fā)位的位掩碼

byte rcvToggle;//最后一個(gè)觸發(fā)值,HCTL觸發(fā)位的位掩碼

} EP_RECORD;

還有:

device_descriptor =(USB_DEVICE_DESCRIPTOR *)&buf;

if(

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

Serial.println(“不支持的USB設(shè)備”);

while(1);//stop

第4步:現(xiàn)在,我們將控制器設(shè)置為提供輸入!

我們希望控制器能夠隨時(shí)向以下位置提供輸入: 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, ;

/*設(shè)置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(“設(shè)置報(bào)告錯(cuò)誤:”);

Serial.println (rcode,HEX);

while(1);//stop

}

如果您想做一些額外的工作以保持冷靜,還可以將ps3控制器上的LED 1設(shè)為打開。因?yàn)楫?dāng)您將控制器連接到ps3時(shí),LED會(huì)亮起,所以看起來更親,但除了美觀以外,這沒什么用。 (注意:您還可以使控制器與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(“設(shè)置報(bào)告錯(cuò)誤:”);

Serial.println(rcode,HEX);

while(1);//stop

}

更重要的是,arduino需要處理來自控制器的信號(hào)。使用以下代碼:

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步:大結(jié)局:將Arduino連接到汽車上

因此,每輛車都不一樣。在我的項(xiàng)目中,我有一輛非常簡單的汽車,只有四個(gè)控制選項(xiàng)(向前,向后,向左,向右),并且每個(gè)都只允許一個(gè)值,即只有一個(gè)允許的加速度。因此,相應(yīng)地創(chuàng)建代碼。我只使用了控制器上的方向按鈕,因?yàn)槲艺J(rèn)為這是最簡單的。也可以使用加速度計(jì)進(jìn)行轉(zhuǎn)向,使用操縱桿進(jìn)行前進(jìn)等?;旧?,您可以選擇所需的任何控制配置。我將在短期內(nèi)說明如何操作。

但是,現(xiàn)在,我們需要將arduino連接到汽車上。我的車有兩個(gè)馬達(dá)。向前后退一圈,向前轉(zhuǎn)一圈。您需要確定這些電機(jī)的工作方式。如果它們像我的,則將連接兩根電線,您將需要去除這些電線并將其從arduino的輸出端焊接到它們上。如果您的汽車與眾不同,那么希望它不會(huì)太難找出答案。

現(xiàn)在我們已經(jīng)將arduino連接到汽車上,我們需要編寫代碼來告訴汽車要做什么。正如我上面提到的,這取決于您的喜好和個(gè)人汽車。因此,現(xiàn)在我將介紹一堆無論情況如何都將有用的代碼。首先,我們希望方法讀取按鈕輸入。我們可以使用以下內(nèi)容:

#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。因此,對(duì)于我來說,我使用了buUp,buDown等。

如果您想成為發(fā)燒友,并且可能具有一系列輸入值,那么您可以使用多個(gè)加速力,則可以使用加速度計(jì)。這些是他們的方法:

#define加速度計(jì)X 0

#define加速度計(jì)Y 1

#define加速度計(jì)Z 2

#define陀螺儀Z 3

這些值從0到1023,其中512為中性

無論如何,一旦執(zhí)行了此操作,您只需要告訴arduino以所需的輸出量輸出輸出,汽車就會(huì)行駛!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17105

    瀏覽量

    184273
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    兩輪自平衡電動(dòng)及其電機(jī)控制器設(shè)計(jì)

    摘要:兩輪自平衡電動(dòng)的平衡原理源自倒立擺模型,為研制兩輪自平衡電動(dòng)設(shè)計(jì)了一套兩輪自平衡電動(dòng)的方案,并采用MC33035和PIC18F4580為主控芯片為兩輪自平衡電動(dòng)設(shè)計(jì)了一個(gè)
    發(fā)表于 06-09 16:15

    具有同步續(xù)流的電動(dòng)直流電機(jī)控制器設(shè)計(jì)

    二極管上產(chǎn)生的穩(wěn)態(tài)續(xù)流功耗占了整個(gè)控制器功耗相當(dāng)大的比例。 純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~*附件:具有同步續(xù)流的電動(dòng)直流電機(jī)控制器設(shè)計(jì).pdf【免責(zé)聲明】本文系網(wǎng)
    發(fā)表于 06-05 11:23

    車載整機(jī)控制器 工程機(jī)械主機(jī)控制器#碩博電子#國產(chǎn)控制器

    控制器
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2025年05月26日 09:09:02

    工程機(jī)械控制器廠家 控制器國產(chǎn)替代 #國產(chǎn)控制器#控制器廠家#控制器品牌

    控制器
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2025年04月29日 14:15:05

    工程機(jī)械控制器如何選型?控制器選型指南 #控制器 #車載控制器 #整車控制器 #控制器選型

    控制器
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2025年03月14日 10:54:24

    英飛凌_XC846電動(dòng)控制器原理圖(12管)

    英飛凌_XC846電動(dòng)控制器原理圖(12管)
    發(fā)表于 02-13 17:02 ?1次下載

    無線遙控車的電機(jī)抖動(dòng)

    我們的遙控車電控方案有一個(gè)問題,不知道是怎么回事,請(qǐng)幫我看看問題在哪。 我們的方案是無線遙控接收機(jī)的sbus接我們主板,我們主板接電調(diào),電調(diào)接電機(jī)。 現(xiàn)在的問題是打開遙控器不動(dòng)搖桿,電機(jī)會(huì)無故抖動(dòng)
    發(fā)表于 02-12 16:48

    移動(dòng)機(jī)械控制器X1010,支持433兆赫茲遙控器#工程機(jī)械控制器 #車載智能控制器

    控制器
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2024年12月26日 10:52:47

    電動(dòng)控制器欠壓保護(hù)怎樣調(diào)整

    電動(dòng)控制器的欠壓保護(hù)功能是為了保護(hù)電池和延長電池壽命而設(shè)計(jì)的。當(dāng)電池電壓下降到某一設(shè)定值時(shí),控制器會(huì)自動(dòng)切斷電源,防止電池過度放電。調(diào)整電動(dòng)控制
    的頭像 發(fā)表于 10-15 10:34 ?9470次閱讀

    電動(dòng)控制器電壓過高怎么解決

    當(dāng)電動(dòng)控制器電壓過高時(shí),可以采取以下措施來解決這一問題: 一、檢查與調(diào)整控制器設(shè)定 查找截止電壓設(shè)定參數(shù) : 電動(dòng)控制器的截止電壓設(shè)定參
    的頭像 發(fā)表于 10-15 10:31 ?3376次閱讀

    電動(dòng)萬能控制器不用霍爾可以嗎

    電動(dòng)控制器是電動(dòng)系統(tǒng)中非常重要的一個(gè)部件,它負(fù)責(zé)控制電機(jī)的啟動(dòng)、運(yùn)行、停止以及速度調(diào)節(jié)等功能?;魻杺鞲?b class='flag-5'>器(Hall sensor)是
    的頭像 發(fā)表于 10-15 10:24 ?2797次閱讀

    控制器取掉霍爾線可以嗎

    控制器取掉霍爾線可以嗎?這個(gè)問題涉及到電動(dòng)控制器的工作原理和霍爾傳感的作用。 電動(dòng)控制器
    的頭像 發(fā)表于 10-15 10:14 ?1762次閱讀

    電動(dòng)無刷控制器成熟量產(chǎn)方案

    電動(dòng)無刷控制器成熟量產(chǎn)方案電路圖紙
    發(fā)表于 09-29 09:01 ?15次下載

    國產(chǎn)控制器廠家 整車控制器 以太網(wǎng)控制器 CAN控制器 國產(chǎn)化替代

    控制器
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2024年09月03日 09:15:51

    車載智能控制器 工程機(jī)械控制器 CAN總線控制器 碩博電子 #控制器 #can總線 #國產(chǎn)化替代

    控制器總線
    長沙碩博電子科技股份有限公司
    發(fā)布于 :2024年08月29日 10:43:57