基于XIAO ESP32 C6,以16x8矩陣作為顯示器設(shè)計(jì)一個(gè)小游戲
掃描二維碼
隨時(shí)隨地手機(jī)看文章
大家好,歡迎回來(lái)。這里有一些有趣的東西。
The XIAO Hopper,一款基于《Flappy bird》靈感的游戲。
在這里,我們使用自定義的16x8 WS2812B LED矩陣作為顯示器和按鈕來(lái)控制像素。
“XIAO跳躍器”一詞源于我們的版本《Flappy Bird》,它使用了一個(gè)XIAO微控制器;故名蕭hopper。
這是我們版本的《Flappy Bird》,在這個(gè)版本中,由單個(gè)像素表示的小鳥(niǎo)在16x8 LED矩陣上移動(dòng)柱子的間隙中移動(dòng)。目標(biāo)是在空間之間導(dǎo)航時(shí)避免撞到柱子。游戲玩法由一個(gè)按鈕控制,挑戰(zhàn)隨著時(shí)間的推移而增加。
柱子是隨機(jī)分配的空間,鳥(niǎo)兒必須穿過(guò)這些空間。
當(dāng)按下按鈕時(shí),鳥(niǎo)兒向上飛行;松開(kāi)按鈕時(shí),重力將其向下拖動(dòng)。
本文是關(guān)于這個(gè)項(xiàng)目的完整構(gòu)建過(guò)程,所以讓我們從構(gòu)建開(kāi)始。
材料要求
這些是在此構(gòu)建中使用的組件。
?XIAO ESP32 C6 DEV board
?定制PCB(由Seeed Fusion提供)
?WS2812B發(fā)光二極管
?跳線(xiàn)
?電路試驗(yàn)板
?按鈕
XIAO ESP32 C6 DEV board
在這個(gè)項(xiàng)目中,我們使用的是基于ESP32-C6 SoC的XIAO ESP32 C6開(kāi)發(fā)板,它具有雙32位RISC-V處理器,一個(gè)具有160 MHz的高性能內(nèi)核,另一個(gè)具有20 MHz的低功耗內(nèi)核,可實(shí)現(xiàn)高效的多任務(wù)處理和節(jié)能。
它的512KB SRAM和4MB閃存為程序執(zhí)行和存儲(chǔ)提供了足夠的空間,使其成為對(duì)速度和內(nèi)存效率都有要求的項(xiàng)目的絕佳選擇。
XIAO ESP32 C6以其連接性而脫穎而出,支持Wi-Fi 6,藍(lán)牙5.3和Zigbee/Thread等高級(jí)協(xié)議,可與智能家居系統(tǒng)和物聯(lián)網(wǎng)設(shè)備順利集成。該板具有11個(gè)GPIO引腳和各種接口,如UART, SPI, I2C和ADC,允許輕松連接到傳感器和外設(shè)。其占地面積小(21 x 17.8 mm)和USB Type-C電源輸入使其非常適合空間受限和便攜式項(xiàng)目,例如LED矩陣游戲機(jī)。
如果您想要一個(gè),請(qǐng)?jiān)L問(wèn)其產(chǎn)品頁(yè)面,或者訪(fǎng)問(wèn)其wiki頁(yè)面以了解有關(guān)開(kāi)發(fā)板的更多信息。
16x8 WS2812BLED矩陣
在這個(gè)項(xiàng)目中,我們使用我們之前制作的矩陣項(xiàng)目之一,該項(xiàng)目由128個(gè)WS2812B LED組成,放置在16x8矩陣布局中,16個(gè)LED放置在16行和8列中。
每個(gè)WS2812B LED彼此并聯(lián)連接。為了控制所有128個(gè)LED,只需要一個(gè)GPIO,因?yàn)槊總€(gè)LED都以獨(dú)特的配置連接,其中第一個(gè)LED Dout連接到第二個(gè)LED Din端口,第二個(gè)LED Dout連接到第三個(gè)LED的Din端口,以此類(lèi)推,直到最后128個(gè)LED。
要更深入地了解該顯示器的開(kāi)發(fā)過(guò)程,請(qǐng)參閱我之前的文章,我在其中簡(jiǎn)要解釋了它。
Seeed Studio Fusion
Seeed Fusion PCBService為PCB制造和PCB組裝提供一站式原型設(shè)計(jì),因此,他們?cè)?個(gè)工作日內(nèi)生產(chǎn)出高質(zhì)量的PCB和快速交鑰匙PCB。
Seeed Studio Fusion PCB組裝服務(wù)負(fù)責(zé)整個(gè)制造過(guò)程,從Seeed Studio Fusion敏捷制造和硬件定制到零件采購(gòu),組裝和測(cè)試服務(wù),因此您可以確保他們獲得高質(zhì)量的產(chǎn)品。
在衡量市場(chǎng)興趣并驗(yàn)證工作原型之后,Seeed Propagate Service可以通過(guò)專(zhuān)業(yè)指導(dǎo)和強(qiáng)大的連接網(wǎng)絡(luò)幫助您將產(chǎn)品推向市場(chǎng)。
試驗(yàn)板組裝
?為了開(kāi)始組裝,我們將XIAO ESP32 C6微控制器放在面包板上。然后,我們?cè)谒赃吿砑覲ush Button。
?我們通過(guò)將矩陣的VCC連接到XIAO的5V開(kāi)始布線(xiàn)過(guò)程。
?然后將矩陣的GND連接到XIAO的GND。
?我們將Push Button的一端連接到GND,另一端連接到GPIO 1。
?矩陣數(shù)據(jù)線(xiàn)連接到XIAO的GPIO0。
接線(xiàn)過(guò)程現(xiàn)在已經(jīng)完成。
代碼
這是在這個(gè)項(xiàng)目中使用的代碼,它是一個(gè)簡(jiǎn)單的。
讓我們簡(jiǎn)要地分析一下代碼。
我們使用Adafruit_NeoMatrix.h庫(kù)來(lái)控制16x8 WS2812B LED矩陣。這個(gè)庫(kù)幫助我們繪制像素、形狀和動(dòng)畫(huà)。
初始化矩陣以匹配其物理布局和顏色格式。
BUTTON_PIN連接到一個(gè)按鈕,該按鈕控制鳥(niǎo)的運(yùn)動(dòng)。
跟蹤鳥(niǎo)的垂直位置(birdY)。
柱子用x(水平位置)、gapStart(縫隙位置)和gapHeight(尺寸)來(lái)定義。
本節(jié)準(zhǔn)備LED矩陣,設(shè)置按鈕引腳作為輸入,并初始化柱子。
這個(gè)按鈕控制小鳥(niǎo)的運(yùn)動(dòng),模擬釋放時(shí)的重力。
小鳥(niǎo)的位置被固定在屏幕邊界內(nèi),并在x=3處繪制。
柱子向左移動(dòng)并在離開(kāi)屏幕時(shí)重置新的間隙位置。
這將檢查小鳥(niǎo)是否擊中了柱子(在間隙之外),并顯示紅色的“Game Over”,然后重新開(kāi)始游戲。
隨著時(shí)間的推移,柱子移動(dòng)得越快,游戲就越難。
結(jié)果和下一步
這是這個(gè)小構(gòu)建的最終結(jié)果:在基于esp32的開(kāi)發(fā)板上使用自定義矩陣面板運(yùn)行一個(gè)類(lèi)似《Flappy bird》的游戲。
我們使用Push Button控制Bird或Pixel的移動(dòng);隨著時(shí)間的推移,游戲的難度也在增加。如果我們擊中任何建筑物,我們將看到一個(gè)紅色屏幕,表明游戲已經(jīng)結(jié)束;然后游戲重新開(kāi)始,循環(huán)再次重復(fù)。
這是一個(gè)小型手持游戲控制臺(tái)項(xiàng)目的測(cè)試項(xiàng)目,該項(xiàng)目將由一個(gè)帶有按鈕的單個(gè)定制矩陣PCB組成。游戲?qū)?huì)在屏幕上進(jìn)行編程,它看起來(lái)就像Game Boy或類(lèi)似的設(shè)備,但帶有RGB LED顯示屏。
本文編譯自hackster.io