<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 升級我的復(fù)古手持游戲機(jī),配備運(yùn)動控制和液晶顯示器

          升級我的復(fù)古手持游戲機(jī),配備運(yùn)動控制和液晶顯示器

          作者: 時間:2024-10-16 來源:EEPW編譯 收藏

          按照我對手持游戲控制器的升級,我添加了一個新的1.8英寸彩色LCD用于動畫圖形,以及一個用于輸入的加速計(jì)模塊。

          本文引用地址:http://www.ex-cimer.com/article/202410/463693.htm

          在我之前的一篇文章中,我介紹了一種復(fù)古風(fēng)格的手持游戲機(jī)的開發(fā)過程,該游戲機(jī)具有本地?zé)o線多人連接功能。本文將重點(diǎn)介紹使用1.8英寸彩色LCD進(jìn)行動畫圖形升級,以及使用加速計(jì)模塊進(jìn)行輸入。

          對于我們升級的硬件,我們將使用ESP8266編寫一個簡單的基于Arduino的格斗游戲,在游戲中,屏幕兩側(cè)的兩名玩家相互戰(zhàn)斗,直到其中一人失去所有生命值。每個角色都將以16位顏色設(shè)置動畫,并可通過傾斜和搖晃玩家各自的控制臺進(jìn)行控制。

          在構(gòu)建這個項(xiàng)目之前,您可能想回顧一下本系列的第一部分,了解使用ESP-NOW進(jìn)行無線通信的基礎(chǔ)知識,將MIDI文件轉(zhuǎn)換為背景音頻并播放,視頻游戲中的碰撞檢測,以及如何將代碼上傳到ESP8266微控制器。

          電路設(shè)計(jì)和PCB布局

          圖1是我們復(fù)古手持設(shè)備改進(jìn)版本的Eagle接線示意圖。

          帶LCD屏幕的復(fù)古游戲機(jī)電路示意圖

           

          1.png

          圖1.帶LCD屏幕的復(fù)古游戲機(jī)電路示意圖

          升級后的控制臺的PCB設(shè)計(jì)不必改變,因?yàn)槲夜室饬舫隽藬U(kuò)展空間,包括用于更大SPI顯示器和I2C傳感器模塊的引腳頭(圖2)。然而,與我的大多數(shù)項(xiàng)目一樣,今天所涵蓋的一切都是面包板和性能板友好的。

          復(fù)古游戲機(jī)的PCB布局

           2.png

          圖2.復(fù)古游戲機(jī)的PCB布局

          我已經(jīng)提供了Eagle原理圖和電路板文件供下載。

          物料清單

          下表顯示了構(gòu)建一個設(shè)備的物料清單。請記住,您需要兩個游戲機(jī)才能進(jìn)行無線多人游戲。

           3.png

          表1.升級游戲機(jī)項(xiàng)目的物料清單(BOM)

          彩色顯示和圖形庫

          該顯示器為1.8英寸128x160像素TFT LCD,內(nèi)置ST7735S SPI驅(qū)動IC。它使用一種名為RGB565的16位顏色格式,這意味著我們可以顯示高達(dá)65K的顏色。您會發(fā)現(xiàn)此顯示器的不同版本提供了不同的引腳排列,因此請確保正確連接。如果你正在復(fù)制我的自定義PCB,你需要修改它以支持不同的引腳。

          對于這個項(xiàng)目,我們將使用Bodmer的TFT_eSPI圖形庫,該庫專門用于在ESP8266等32位微控制器上顯示動態(tài)圖像。這些類型的圖像稱為精靈,存儲在處理器的RAM內(nèi)存中。它們可以以各種方式操縱,并集成在更大的2D場景之前或之后。精靈的一種顏色總是被指定為透明的,這樣很容易將它們疊加在其他圖像上。

          帶游戲屏幕的復(fù)古游戲機(jī)視圖,包括玩家

          人物

           4.png

          圖3.屏幕上的玩家角色是使用精靈實(shí)現(xiàn)的

          此項(xiàng)目中使用的所有精靈都是itch.io的Free Tiny Hero精靈素材的修改版本。您始終可以按照我代碼中的相同邏輯,用自己的藝術(shù)或互聯(lián)網(wǎng)上的其他圖形替換它們。

          游戲場景

          我們游戲中的場景分為三個部分:

          背景

          戰(zhàn)斗區(qū)域

          HUD(平視顯示器)

          對于背景,我選擇了一個漸變,從底部的白色開始,在頂部過渡到不同的次要顏色。在啟動時,次要顏色是從我認(rèn)為與頂部素材搭配得很好的幾種顏色中隨機(jī)選擇的。

          我們的戰(zhàn)斗區(qū)域,或顯示器的中間,是玩家將戰(zhàn)斗的地方。一個玩家將在左側(cè)生成,而另一個玩家會在右側(cè)生成??偣灿腥齻€角色,而且,每當(dāng)游戲開始時,它都會隨機(jī)分配給每個玩家一個角色,而不會重復(fù)。

          HUD位于顯示器的頂部和底部,使用綠色狀態(tài)欄顯示每個玩家的健康點(diǎn)(HP),該狀態(tài)欄隨著玩家失去HP而遞減。在狀態(tài)欄旁邊,有描繪玩家角色和標(biāo)識符(玩家1或玩家2)的框架圖像。

          為精靈制作動畫

          為了達(dá)到運(yùn)動的效果,每當(dāng)玩家執(zhí)行一個動作時,我們都會快速滾動與該特定動作相關(guān)的一系列圖像,而不是顯示靜止圖像,給人一種我們的角色在屏幕上流暢動態(tài)移動的錯覺,類似于卡通或傳統(tǒng)視頻游戲的工作方式。

          這些圖像是我使用Rinky Dink Electronics的image-to-RGB565工具轉(zhuǎn)換為Arduino代碼的精靈資產(chǎn),以指針數(shù)組的形式組織,使其在渲染動作時易于迭代。

          在這個游戲中,動作被定義為空轉(zhuǎn)(原地停留和呼吸)、行走(步態(tài)模式)和拳擊(向?qū)κ峙e起手臂)。每個動作只有幾個圖像,這些圖像會根據(jù)游戲計(jì)數(shù)器變量激活,該變量在Arduino循環(huán)時遞增。

          使用加速度計(jì)進(jìn)行運(yùn)動傳感

          最后,我們需要給用戶一種控制他們性格的方法。我們將使用MPU6050加速計(jì)/陀螺儀模塊,以及Refetick的MPU6050_light.h庫。該庫通過MPU6050芯片提供了一種輕量級、快速、簡單的通信方法。

          在這個項(xiàng)目中,我將傳感器垂直連接到PCB上,使我們能夠使用X軸傾斜角度讀數(shù),在整個控制臺向任一方向傾斜時向左或向右移動角色。此外,與我的電子墨水蝕刻草圖項(xiàng)目類似,我使用了所有三個軸的加速度讀數(shù),實(shí)現(xiàn)了震動檢測,每當(dāng)用戶搖動控制臺時,都會觸發(fā)一個沖壓動作。

          傾斜和抖動范圍可能因您的特定MPU6050模塊及其位置而異。請記住,在確定哪種靈敏度最適合您的設(shè)置之前,您必須修改不同的值。

          上傳代碼

          現(xiàn)在我們了解了這個項(xiàng)目背后的邏輯,我們需要將代碼上傳到我們的ESP8266微控制器。和上次一樣,我將使用Lolin D1 Mini板,它有一個方便的USB到串行編程器。

          在開始上傳之前,您需要使用所有相關(guān)的板和庫設(shè)置Arduino環(huán)境。我們將對主機(jī)和客戶端使用相同的草圖,只使用兩行代碼來區(qū)分它們。一行是一個名為isHost的布爾變量(1代表主機(jī),0代表客戶端):

           5.png

          第二行是接收節(jié)點(diǎn)的相應(yīng)MAC地址的數(shù)組: 

           6.png

          主程序、音頻和MAC查找器的代碼可從GitHub下載。

          輪到你了

          除了本文及其前一個迭代中涵蓋的功能外,我還包括了一個我們的控制臺啟動的基本“連接”屏幕,以及一些用于阻塞和躲避等操作的精靈,您可以在項(xiàng)目的版本中實(shí)現(xiàn)。

          你將如何擴(kuò)展這個項(xiàng)目?你還會包括哪些其他硬件?你想制作什么類型的游戲?

          在我之前的文章中,一位用戶建議切換到ESP32,它提供了更多的GPIO引腳,可能消除了對I/O擴(kuò)展器的需求,I/O擴(kuò)展器以前用作8位觸覺開關(guān)端口。您還可以添加一個MP3播放器IC,用于播放更長、更復(fù)雜的背景游戲音樂片段。

          得益于ESP硬件,您甚至可以擴(kuò)展此項(xiàng)目以連接到全球互聯(lián)網(wǎng),并與更多玩家互動,而不是ESP-NOW協(xié)議的本地化功能。




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();