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