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

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>帶有PS3遙控器的ESP32上的Arduboy TV

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

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

資料介紹

描述

目標

我著手做一個簡單而省力的 Arduboy 游戲機。設計目標是

  • 便宜又簡單
  • 電視輸出
  • 不錯的控件
  • 各種有趣的游戲

我現在對使用 ESP32 和 Arduboy 代碼感到很自在,并認為這將是一個有趣的項目,可以推動自己學習一些新事物。

將目標一一確定

便宜又簡單

KISS - 保持簡單愚蠢。

幾乎唯一要購買的大產品就是這個

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

我一直在不斷地構建控件,這一次我希望我可以利用 ESP32 中的一些額外硬件來實現這一目的。我選擇了 PS3 控制器,任何無線通用 PS3 控制器都應該是完美的。

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

電視輸出

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

我啟動并運行了它,看到我從裸 ESP32 發送到電視的一些實際視頻信號真的很酷。

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

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

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

生成電視信號的另一個有趣問題是,它需要滿足非常嚴格的時序約束,而 ESP32 有 2 個內核,我通過將其中一個內核專門用于電視信號來解決這個問題。

我本可以走另一條路,得到一個帶有 PSRAM 的 ESP32,大多數相機模塊都有它們,因為它們經常咀嚼超過 520kb,盡管回到我最初的廉價和簡單的目標,即沒有額外內存的“裸”ESP32更容易掌握。

poYBAGNsUiyAP5S_AANg51OOrHg324.png
不太理想的設置
?
poYBAGNsUjqALbC0AASmdCqP7eo959.png
后來看起來好一點
?

不錯的控件

我最初的選擇是使用藍牙,它實現了我的一些目標,它很好的控制,硬件內置在 ESP32 中(雖然需要一些軟件黑客),而且因為我們正在做電視輸出,所以它'當我們玩的時候,會給我們一些范圍來打沙發。

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

PS3 控制器幾乎是一個令人著迷的案例,從技術上講,它使用藍牙,但通過序列號有一個自定義配對過程。

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

我從這里得到了這個網站,這似乎是合法的....

pYYBAGNsUjyATyltAAAay6P7d00002.png
SixAxisTool 設置控制器新控制臺
?

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

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

現在我的游戲在哪里!

各種各樣的游戲

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

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

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

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

啟動和運行它的實際過程非常有趣。

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

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

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

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

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

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

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

poYBAGNsUk6AefIeAAAGOlU02HM714.png
假裝不存在
?

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

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

EEPROM - 我在游戲過程中運行良好,可以存儲它,但實際上它需要一個完整的實現,我希望它知道哪個游戲正在運行并將 EEPROM 文件存儲在 SPIFFS 分區上,這更像文件系統并允許文件,可能是與游戲名稱匹配的格式,并將特定游戲 EEPROM 存儲在 SPIFFS 上的文件中,因此它永遠不會被覆蓋。待定

PS3 控制器連接- PS3 庫實際上有一個經常運行的通知檢查,我只是將它的值存儲在一些全局變量中,然后我可以在 Arduboy2Core::buttonsState 過程中使用它來設置值。

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

修改每個游戲的代碼- 這實際上非常有趣,因為它意味著源代碼兼容我想找到一種修改每個 Arduboy 游戲的方法,我研究了很多解決方案。但讓我先設置前提。

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

第一次嘗試- 手動修改游戲這是一件很痛苦的事情,并且不能對所有游戲進行維護或擴展。

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

第三次嘗試- 實際上我需要的只是將 setup() 和 loop() 重命名為其他名稱,然后創建自己的啟動和循環方法來調用它們!

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

找到文件后,請進行備份(始終進行備份!)。然后復制到我愿意修改的文件,我運行了一些更改

pYYBAGNsUlCAAlLCAAF0B_Ghe2M742.png
?

最后,一旦完成所有磨機更改,它會使用我的新設置和循環創建一個新的 ino 文件,一旦完成,它就會調用重命名的游戲設置和循環方法

poYBAGNsUlKAEZtlAAA6EA8jmhE072.png
?

我的設置運行游戲設置代碼并為游戲邏輯循環設置線程。

我幾乎可以在這里做任何我想做的事情,目前它只是嘗試進行無線更新,但以后可能會添加一個 flash 菜單,如果我們有 SD 卡,你可以在設備上玩多個游戲

你會看到循環只是一種延遲方法。它不需要做任何 gameLogicLoop 線程負責運行原始循環代碼的事情。

其中一個不錯的功能是實際上使其可多次運行(有點冪等),因此每次運行它時,它都會修改原始文件而不是已經更改的文件,這對快速迭代有很大幫助。

從這里到哪里

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

https://github.com/tonym128/ESP32_Arduboy

這個項目目前都在 tvout 分支下

我已經在 BSides Cape Town 2019 Badge 上運行了它,我在這里詳細介紹了徽章項目本身的軟件。

ESP32 電子紙顯示器

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

我希你在我的旅程中發現了一些有趣的地方,如果你想聊聊這方面的任何事情,請給我留言,我很樂意參與。

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

?

?


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 日韩ab| 极品啪啪| 成人欧美一区二区三区的电影| 人人干夜夜操| 亚洲男人的天堂久久无| 三级毛片在线播放| 4虎成人| 久久久久久久综合狠狠综合| 午夜视频入口| 亚洲午夜顶级嘿嘿嘿影院| 日韩黄色免费| 天天爽夜夜爽每晚高澡| 亚洲免费资源| 年轻的护士3在线观看| 男女一级特黄a大片| 在线视频亚洲色图| 国产亚洲精品在天天在线麻豆| 激情五月激情综合| 香蕉视频啪啪| 夜色爽| 男女视频在线| 河南毛片| 天天操天天摸天天干| 欧美精品xxxxbbbb| 亚洲视频一二| 拍拍拍美女黄色1000视频 | 高清视频一区二区| 久久新地址| 动漫精品成人免费网站| 午夜激情啪啪| 午夜va| 一级在线观看| a站在线观看| 日本一区二区三区欧美在线观看| 免费观看的黄色网址| 国产成人精品影视| 三级四级特黄在线观看| 清纯唯美亚洲综合一区| 午夜色婷婷| 天天综合网在线| 亚洲伦理一区二区三区|