在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>帶有PS3遙控器的ESP32上的Arduboy TV

帶有PS3遙控器的ESP32上的Arduboy TV

2022-11-10 | zip | 1.86 MB | 次下載 | 2積分

資料介紹

描述

目標(biāo)

我著手做一個(gè)簡(jiǎn)單而省力的 Arduboy 游戲機(jī)。設(shè)計(jì)目標(biāo)是

  • 便宜又簡(jiǎn)單
  • 電視輸出
  • 不錯(cuò)的控件
  • 各種有趣的游戲

我現(xiàn)在對(duì)使用 ESP32 和 Arduboy 代碼感到很自在,并認(rèn)為這將是一個(gè)有趣的項(xiàng)目,可以推動(dòng)自己學(xué)習(xí)一些新事物。

將目標(biāo)一一確定

便宜又簡(jiǎn)單

KISS - 保持簡(jiǎn)單愚蠢。

幾乎唯一要購買的大產(chǎn)品就是這個(gè)

TTGO T-Display ESP32,這個(gè)板實(shí)際上比我買它時(shí)很多沒有顯示器的板便宜,但幾乎任何 ESP32 板都可以。

我一直在不斷地構(gòu)建控件,這一次我希望我可以利用 ESP32 中的一些額外硬件來實(shí)現(xiàn)這一目的。我選擇了 PS3 控制器,任何無線通用 PS3 控制器都應(yīng)該是完美的。

你還需要一些 RCA 插孔,我選擇了母頭,這樣我就可以在電視和我的電腦之間快速輕松地來回運(yùn)行,還需要一根公對(duì)公延長(zhǎng)線,以便將背面也插入電視。 .. 最終我確實(shí)得到了一個(gè) RCA 到 HDMI 轉(zhuǎn)換器并將它連接到我的第二臺(tái)顯示器,我對(duì)設(shè)備非常滿意,并且在閃爍和測(cè)試之間的周轉(zhuǎn)時(shí)間更少。

電視輸出

電視輸出是我真正想了解更多的第一個(gè)也是最重要的事情。

我啟動(dòng)并運(yùn)行了它,看到我從裸 ESP32 發(fā)送到電視的一些實(shí)際視頻信號(hào)真的很酷。

未修改的代碼存在一些問題,它實(shí)際上是為帶有 PSRAM 的 ESP32 設(shè)計(jì)的,它將通常可用的 520kb 增加了另外 8mb!

問題是做顏色會(huì)占用大量空間,并且對(duì)于庫和它的工作方式,它有非常嚴(yán)格的時(shí)間要求,所以你實(shí)際上使用了一個(gè)雙緩沖區(qū),這意味著當(dāng)你繪制一個(gè)緩沖區(qū)(屏幕)時(shí),您致力于更新另一個(gè)緩沖區(qū)。在完成對(duì)一個(gè)緩沖區(qū)的渲染時(shí),將其換出,然后顯示該緩沖區(qū),然后開始繪制到備用緩沖區(qū)。這允許您在游戲處理下一幀時(shí)將一個(gè)緩沖區(qū)連續(xù)渲染到電視。

通過從彩色轉(zhuǎn)換為黑白,我繞過了我所面臨的大小限制,這使緩沖區(qū)從一個(gè)字節(jié)縮小了 8 倍......所以我們又回到了游戲中:)

生成電視信號(hào)的另一個(gè)有趣問題是,它需要滿足非常嚴(yán)格的時(shí)序約束,而 ESP32 有 2 個(gè)內(nèi)核,我通過將其中一個(gè)內(nèi)核專門用于電視信號(hào)來解決這個(gè)問題。

我本可以走另一條路,得到一個(gè)帶有 PSRAM 的 ESP32,大多數(shù)相機(jī)模塊都有它們,因?yàn)樗鼈兘?jīng)常咀嚼超過 520kb,盡管回到我最初的廉價(jià)和簡(jiǎn)單的目標(biāo),即沒有額外內(nèi)存的“裸”ESP32更容易掌握。

poYBAGNsUiyAP5S_AANg51OOrHg324.png
不太理想的設(shè)置
?
poYBAGNsUjqALbC0AASmdCqP7eo959.png
后來看起來好一點(diǎn)
?

不錯(cuò)的控件

我最初的選擇是使用藍(lán)牙,它實(shí)現(xiàn)了我的一些目標(biāo),它很好的控制,硬件內(nèi)置在 ESP32 中(雖然需要一些軟件黑客),而且因?yàn)槲覀冋谧鲭娨曒敵觯运?當(dāng)我們玩的時(shí)候,會(huì)給我們一些范圍來打沙發(fā)。

我碰巧有一個(gè)廢棄的 PS3 和 2 個(gè)控制器,所以在弄亂了一些原始的藍(lán)牙外圍設(shè)備之后,我決定看看使用這些。

PS3 控制器幾乎是一個(gè)令人著迷的案例,從技術(shù)上講,它使用藍(lán)牙,但通過序列號(hào)有一個(gè)自定義配對(duì)過程。

我將我的 PS3 控制器連接到我的 PC 并使用 SixAxisPair 工具將其序列號(hào)設(shè)置為 01:02:03:04:05:06(我知道非常原始!)

我從這里得到了這個(gè)網(wǎng)站,這似乎是合法的....

pYYBAGNsUjyATyltAAAay6P7d00002.png
SixAxisTool 設(shè)置控制器新控制臺(tái)
?

使用 Wifi 和藍(lán)牙啟動(dòng) ESP32 項(xiàng)目時(shí)要注意的一件事是庫非常龐大!你炸掉大約 1Mb 的 ROM 只是為了獲得 BT 和 Wifi 堆棧,我相信有更輕的可用,但不是我可以使用 Arduino

完成此操作后,我的輸入和輸出開始工作了!

現(xiàn)在我的游戲在哪里!

各種各樣的游戲

到目前為止,Arduboy 已經(jīng)給我?guī)砹艘粋€(gè)有趣的世界,它是我放在面包板上的第一個(gè)真正的硬件,然后焊接到原型板上并構(gòu)建了我自己的 ESP32 版本,最后現(xiàn)在制作了一個(gè)電視輸出版本。我對(duì)我在這個(gè)生態(tài)系統(tǒng)中和周圍的樂趣感到非常滿意。我什至構(gòu)建了一款令我引以為豪的游戲 Game Plug ArduRacer https://community.arduboy.com/t/arduracer-a-trackmania-type-time-trial-game/8850 ,它具有平滑滾動(dòng)、放大功能起跑線和 10 個(gè)關(guān)卡為特色!

poYBAGNsUj6ALBm8AAALWk7BQEw205.png
介紹屏幕
?
poYBAGNsUkGARN3JAAAG_2rVzT0119.png
游戲截圖
?

一個(gè)早期的控制臺(tái)原型(錯(cuò)誤的芯片,但我保證我有一個(gè)非常相似的帶有按鈕的 Arduino Pro Micro)。

pYYBAGNsUkuAMh6EAAQrcDszC_0363.png
我用 Arduino Pro Micro 和按鈕拍了一張非常相似的照片,真正的共同點(diǎn)是拍攝時(shí)間
?

啟動(dòng)和運(yùn)行它的實(shí)際過程非常有趣。

最初我嘗試使用 Blinky 先生的圖書館

https://github.com/MrBlinky/Arduboy-homemade-package

這很棒,并且在不同的屏幕上為許多不同類型的 Arduboy 和 Arduino 的不同引腳做了訣竅。經(jīng)過一堆錯(cuò)誤的開始后,我找到了 ESPBoy https://www.espboy.com/的 ESP8266 轉(zhuǎn)換

一旦我抓住了這個(gè),我做的第一件事就是讓它在它所構(gòu)建的硬件上啟動(dòng)并運(yùn)行,所以我抓住了一個(gè) ESP8266、一個(gè)兼容的屏幕和面包板,一直在研究它,直到我啟動(dòng)并運(yùn)行它(并且然后玩了一會(huì)兒游戲)

完成此操作后,接下來的步驟是更換處理器,進(jìn)行了很多更改,但主要是刪除和更改庫。我將列出一些亮點(diǎn)

  • PROGMEM 不是 ESP32 上的東西,刪除引用
  • avr/pgmspace.h 已移至 ESP32 上的 pgmspace.h
  • EEPROM不是很好,必須工作
  • 音調(diào)不起作用,不得不重新編寫代碼,它仍然有點(diǎn)hacky
  • 更改控件以使用 PS3 控制器
  • 將輸出代碼大幅更改為線程化并輸出到電視
  • 因?yàn)樾枰€程,我不得不修改每個(gè)游戲的代碼!

PROGMEM - 這有點(diǎn)簡(jiǎn)單,你需要做的就是#define PROGMEM 沒有任何意義,等 viola,完成

poYBAGNsUk6AefIeAAAGOlU02HM714.png
假裝不存在
?

avr/pgmspace.h - 我有點(diǎn)懶,在 Visual Studio Code 中對(duì)整個(gè)文件夾進(jìn)行了完整的搜索和替換,這很快就解決了這個(gè)問題

Tones - 我寫了一些非常適用于詛咒地下墓穴的 hacky 代碼,我喜歡它!不幸的是,其他一些游戲也在為此苦苦掙扎……我應(yīng)該稍后再研究一下

EEPROM - 我在游戲過程中運(yùn)行良好,可以存儲(chǔ)它,但實(shí)際上它需要一個(gè)完整的實(shí)現(xiàn),我希望它知道哪個(gè)游戲正在運(yùn)行并將 EEPROM 文件存儲(chǔ)在 SPIFFS 分區(qū)上,這更像文件系統(tǒng)并允許文件,可能是與游戲名稱匹配的格式,并將特定游戲 EEPROM 存儲(chǔ)在 SPIFFS 上的文件中,因此它永遠(yuǎn)不會(huì)被覆蓋。待定

PS3 控制器連接- PS3 庫實(shí)際上有一個(gè)經(jīng)常運(yùn)行的通知檢查,我只是將它的值存儲(chǔ)在一些全局變量中,然后我可以在 Arduboy2Core::buttonsState 過程中使用它來設(shè)置值。

電視輸出- Arduboy 有它自己的幀緩沖區(qū),理想情況下我會(huì)使用它來避免代碼重復(fù)和復(fù)制,但它的水平條紋格式有點(diǎn)奇怪。緩沖區(qū)模仿您一次寫入幾個(gè)水平像素的屏幕的方式,這使得我的電視輸出代碼很難使用,所以我有一個(gè)過程,我把它放入 Arduboy 輸出代碼中,而不是輸出到屏幕,它準(zhǔn)備緩沖區(qū)并使用鎖處理緩沖區(qū)的交換。有一個(gè)線程一直在運(yùn)行,只是使用當(dāng)前設(shè)置的輸出緩沖區(qū)進(jìn)行 TV 輸出,當(dāng)它們準(zhǔn)備好時(shí),它將獲取更改。

修改每個(gè)游戲的代碼- 這實(shí)際上非常有趣,因?yàn)樗馕吨创a兼容我想找到一種修改每個(gè) Arduboy 游戲的方法,我研究了很多解決方案。但讓我先設(shè)置前提。

我需要為線程添加初始化代碼,電視輸出代碼對(duì)于它生成的 NTSC 信號(hào)非常敏感,所以我希望它本身有一個(gè)完整的核心。默認(rèn)情況下,Wifi 和藍(lán)牙代碼也在默認(rèn)使用的一個(gè)核心上運(yùn)行。這對(duì)電視輸出來說是有問題的,所以我希望它在不同的核心上。

第一次嘗試- 手動(dòng)修改游戲這是一件很痛苦的事情,并且不能對(duì)所有游戲進(jìn)行維護(hù)或擴(kuò)展。

第二次嘗試- 用我自己的替換主 ino 文件,同時(shí)將 ino 重命名為 mytvgame.cpp 或類似的,我能夠通過一兩個(gè)游戲擺脫這個(gè)問題,但由于一些原因而出現(xiàn)了一些問題。Ino 文件就像一個(gè)全局命名空間,可以按照您喜歡的任何順序定義函數(shù)(就像您在導(dǎo)入的頭文件中指定它們一樣),但是當(dāng)我以編程方式生成頭文件時(shí),我開始遇到更多錯(cuò)誤。這是一個(gè)單一的源文件,一旦它們被復(fù)制到 CPP 文件中,它實(shí)際上就能夠從我的 Arduino INO 文件https://fossil-scm.org/home/doc/trunk/src/makeheaders.html制作標(biāo)題。

第三次嘗試- 實(shí)際上我需要的只是將 setup() 和 loop() 重命名為其他名稱,然后創(chuàng)建自己的啟動(dòng)和循環(huán)方法來調(diào)用它們!

我最近在 Python 上玩得很開心,并決定在其中編寫腳本。首先,瀏覽所有 GAMES 目錄,尋找與文件夾名稱匹配的 a.ino 文件(這是我從未理解的 Arduino IDE 限制,但謝謝!)

找到文件后,請(qǐng)進(jìn)行備份(始終進(jìn)行備份!)。然后復(fù)制到我愿意修改的文件,我運(yùn)行了一些更改

pYYBAGNsUlCAAlLCAAF0B_Ghe2M742.png
?

最后,一旦完成所有磨機(jī)更改,它會(huì)使用我的新設(shè)置和循環(huán)創(chuàng)建一個(gè)新的 ino 文件,一旦完成,它就會(huì)調(diào)用重命名的游戲設(shè)置和循環(huán)方法

poYBAGNsUlKAEZtlAAA6EA8jmhE072.png
?

我的設(shè)置運(yùn)行游戲設(shè)置代碼并為游戲邏輯循環(huán)設(shè)置線程。

我?guī)缀蹩梢栽谶@里做任何我想做的事情,目前它只是嘗試進(jìn)行無線更新,但以后可能會(huì)添加一個(gè) flash 菜單,如果我們有 SD 卡,你可以在設(shè)備上玩多個(gè)游戲

你會(huì)看到循環(huán)只是一種延遲方法。它不需要做任何 gameLogicLoop 線程負(fù)責(zé)運(yùn)行原始循環(huán)代碼的事情。

其中一個(gè)不錯(cuò)的功能是實(shí)際上使其可多次運(yùn)行(有點(diǎn)冪等),因此每次運(yùn)行它時(shí),它都會(huì)修改原始文件而不是已經(jīng)更改的文件,這對(duì)快速迭代有很大幫助。

從這里到哪里

如果您有興趣四處尋找,可以查看我的所有代碼

https://github.com/tonym128/ESP32_Arduboy

這個(gè)項(xiàng)目目前都在 tvout 分支下

我已經(jīng)在 BSides Cape Town 2019 Badge 上運(yùn)行了它,我在這里詳細(xì)介紹了徽章項(xiàng)目本身的軟件。

ESP32 電子紙顯示器

現(xiàn)在有了帶有 PS3 控制器的電視輸出,我認(rèn)為這是最簡(jiǎn)單、最快捷的方式來開始這一點(diǎn)并獲得一些樂趣。

我希你在我的旅程中發(fā)現(xiàn)了一些有趣的地方,如果你想聊聊這方面的任何事情,請(qǐng)給我留言,我很樂意參與。

在那之前,我會(huì)玩一些該死的地下墓穴。

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1PC4401_DC-DC 42V反激式隔離開關(guān)電路
  2. 0.85 MB   |  3次下載  |  免費(fèi)
  3. 2GPRS智能超聲波液位監(jiān)測(cè)終端
  4. 835.55 KB  |  2次下載  |  免費(fèi)
  5. 3NS4862 500mA鋰電池充放電管理IC中文手冊(cè)
  6. 2.27 MB   |  次下載  |  免費(fèi)
  7. 4NS4892B藍(lán)牙耳機(jī)充電倉-線性鋰電池充放電管理IC中文手冊(cè)
  8. 1.79 MB   |  次下載  |  免費(fèi)
  9. 5AIWA HS-JX3000/HS-JX3000D維修手冊(cè)
  10. 14.78 MB   |  次下載  |  10 積分
  11. 6先鋒CDJ-1000MK3打碟機(jī)圖紙
  12. 9.79 MB   |  次下載  |  10 積分
  13. 7NS4823雙聲道AB/D類音頻功率放大器(內(nèi)置BOOST升壓)中文手冊(cè)
  14. 1.26 MB   |  次下載  |  免費(fèi)
  15. 8西門子PLC-模擬量采集計(jì)算使用方法
  16. 0.07 MB   |  次下載  |  2 積分

本月

  1. 1第十一屆 藍(lán)橋杯 單片機(jī)設(shè)計(jì)與開發(fā)項(xiàng)目 省賽 程序設(shè)計(jì)試題及源碼
  2. 90.88KB   |  23次下載  |  3 積分
  3. 2NR-E531TX-XN冰箱說明書
  4. 8.64 MB   |  23次下載  |  免費(fèi)
  5. 3Python從入門到精通背記手冊(cè)
  6. 18.77 MB   |  20次下載  |  1 積分
  7. 4STM32F103C8T6開發(fā)板最小系統(tǒng)原理圖
  8. 0.78 MB   |  17次下載  |  免費(fèi)
  9. 5華碩主板架構(gòu)認(rèn)識(shí)
  10. 1.42 MB   |  11次下載  |  免費(fèi)
  11. 6SX1308應(yīng)用電路圖與SX1308升壓電路圖
  12. 0.18 MB   |  8次下載  |  1 積分
  13. 7東芝彩色電視機(jī)29SF6C維修說明書
  14. 4.86 MB   |  8次下載  |  1 積分
  15. 8單電源板1875電路圖
  16. 0.06 MB   |  7次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191377次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183336次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81584次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73814次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 日日做夜夜爽夜夜爽 | 午夜视频在线观看免费视频 | 四虎永久在线免费观看 | 三级在线观看 | 久久久免费视频播放 | 国产福利不卡一区二区三区 | 免费亚洲成人 | 欧美一级视频免费看 | 丁香啪啪天堂激情婷婷 | 爱操成人网 | 美女视频黄a视频免费全过程 | 好爽好深太大了再快一点 | 99久久99久久精品免费看子伦 | 五月天婷婷导航 | 操操操插插插 | 青草国产在线视频 | 国产一区二区三区欧美精品 | 亚洲国产欧美日韩一区二区三区 | 色女人网 | 欧美瑟瑟| 久草在线免费资源站 | 三级理论在线观看 | 五月婷婷亚洲综合 | 亚洲美女高清一区二区三区 | 成人国产精品2021 | 国产精品人成在线播放新网站 | 国产精品天天影视久久综合网 | 亚州黄色网址 | 日本特黄在线观看免费 | 午夜在线免费视频 | 三级网站视频 | 国产成人精品日本亚洲语言 | 俺去操 | 2017天天天天做夜夜夜做 | 午夜影院免费观看视频 | 三级毛片在线 | 日产精品卡二卡三卡四卡乱码视频 | 亚欧免费视频一区二区三区 | 日韩xx00 | 一级毛片不收费 | 亚洲欧美色一区二区三区 |