資料介紹
描述
概述
該項目的硬件構(gòu)建非常容易。一個 Arduino Mega 和一個 7 英寸 Nextion 顯示器是主要組件!但是軟件開發(fā)可以像您想要的那樣具有挑戰(zhàn)性。我已經(jīng)使用這個平臺開發(fā)了三款游戲,它們都包含在軟件下載中。但我在這里希望找?guī)讉€人為這個平臺寫游戲軟件,這樣我們就可以交換軟件,并為它建立一個游戲庫。
為該平臺創(chuàng)建的任何游戲都有兩個軟件組件 - Nextion 的圖形用戶界面 (GUI) 文件和構(gòu)建游戲操作和邏輯的 Arduino 草圖。
我在這里介紹的三款游戲是井字游戲、Dots and Boxes 和 Simon。
每個人都知道井字游戲。它可以使計算機無與倫比,但我遺漏了幾步,為玩家贏得了一扇門。
Dots and Boxes 是另一種類似于井字游戲的游戲,您可以在其中與計算機對戰(zhàn)。當你連接點并形成一個盒子時,你會得到一個點和另一個轉(zhuǎn)彎。誰得到最多的盒子就贏了。在這種情況下,計算機是一個很好的播放器,但它可以被擊敗。
西蒙就像孩之寶的同名記憶挑戰(zhàn)游戲。我使用了 Simon 游戲的圖像,所以它看起來和工作起來都一樣。
在一個單獨的項目中,Arduino 游戲控制臺第 2 部分,我將展示我也為這個平臺開發(fā)的兩個紙牌游戲:二十一點和五張牌撲克。
稍后我們將更詳細地討論每款游戲。除了下載中每個游戲的單獨軟件外,還有一個名為 Arcade 的應(yīng)用程序中的前三個游戲的組合。
硬件
為了創(chuàng)建一個便攜式游戲機,除了 Arduino Mega 和 Nextion 顯示器之外,我還添加了一個 7.4 伏鋰離子電池、一個開關(guān)和一個穩(wěn)壓器。2000 mAh 電池在兩次充電之間可持續(xù)使用約 3 小時。稍后的示意圖向您展示了它的接線方式。Arduino 可以通過 Vin 引腳直接使用電池供電,但 Nextion 需要 5 伏電壓。有很多方法可以獲得 5 伏,盡管 Arduino 上的 5 伏引腳不是其中之一。Nextion 帶有幾個警告,即 Arduino 無法處理 Nextion 當前的要求。我選擇了一個 LM317 可變電壓調(diào)節(jié)器模塊,因為我有一個可用的。您只需將輸出電壓設(shè)置為 5 伏,因為它是一個可變電壓調(diào)節(jié)器。
我還提供了 3D 打印案例的文件,但如果您無法使用 3D 打印機,您可能可以用塑料或輕質(zhì)膠合板制作一個。以下是一些施工細節(jié)的照片:
?
上圖顯示了一些重要的事情。該板帶有一個漂亮的 4 針連接器,但它插入側(cè)面。我的 3D 打印外殼沒有為該連接器留出任何空間,因此我將 4 根電線直接焊接到連接器的背面。此外,重要的是要注意 Nextion 的 TX 連接到 Arduino RX (pin10),Nextion 的 RX 連接到 Arduino 的 TX (pin11)。我們在這里使用軟件串行,以免占用用于編程 Arduino 的硬件串行引腳 0、1。
充電器插頭和 Arduino Mega 都用大量熱膠固定!
上面顯示的空殼實際上經(jīng)過了幾次迭代,然后我才得到它以容納 Nextion 顯示器邊緣的所有東西。
Arduino 的編程顯然是通過 USB 端口完成的,但 Nextion GUI 文件需要加載到 micro SD 卡上并插入 Nextion 背面的插槽中。只需在 SD 卡就位的情況下打開 Nextion 即可安裝文件。然后可以取出 SD 卡進行正常使用。
關(guān)于硬件的最后一點說明:我使用 Arduino 上的模擬輸入 A0 來獲得一個隨機值,用于設(shè)置隨機種子,因為所有這些游戲都使用隨機數(shù)。為了獲得良好的隨機模擬輸入,我將一根 3 英寸的線連接到 A0。它不依附于任何東西。它只是接收雜散電噪聲的天線。
使用 Nextion
在這個項目開始時,我并沒有專門尋找 Nextion 顯示器。我只是在尋找可以與 Arduino 一起使用的大型 LCD 屏幕。Nextion 不僅僅是一個 LCD 觸摸屏。它有自己的處理器、自己的操作系統(tǒng)、用于設(shè)計圖形用戶界面的應(yīng)用程序,以及您可以從 Arduino 使用的命令語言來配置和控制它。
我在這里看到的大多數(shù)使用 Nextion 的項目都將它視為他們用于用戶界面的工具。我將嘗試更深入地研究 Nextion 的真正含義,因為它已成為該項目的關(guān)鍵部分。
Nextion 顯示器旨在為幾乎任何事情提供人機界面,但似乎特別針對工業(yè)控制應(yīng)用,即一個完整的觸摸屏,可用于控制工業(yè)機械。在我看來,它并不是專門為業(yè)余愛好者設(shè)計的,所以需要一點時間來適應(yīng)。
使用 Arduino 和 Nextion 構(gòu)建項目涉及兩個截然不同且不同的步驟 - 1) 使用 Nextion 編輯器創(chuàng)建圖形用戶界面或 GUI,2) 開發(fā)與該用戶界面交互的 Arduino 應(yīng)用程序。
Nextion Editor 是您構(gòu)建 GUI 的應(yīng)用程序。您可以創(chuàng)建菜單和各種頁面。如果這一切聽起來很熟悉,它可能應(yīng)該,因為它幾乎就像建立一個網(wǎng)站。
事實上,就網(wǎng)站而言,Nextion 系統(tǒng)的設(shè)計和行為與特定的 Web 技術(shù)平臺非常相似:ASP.NET(Active Server Pages)。在這種情況下,Nextion 就像在您自己的計算機上運行的網(wǎng)絡(luò)瀏覽器一樣,而 Arduino 就像一個遠程服務(wù)器,在用戶界面上采取行動并響應(yīng)更改,然后將它們傳回 Nextion。
Nextion Editor 是一個非常好的應(yīng)用程序!它易于學(xué)習(xí)且功能非常強大。它甚至有一個模擬器/調(diào)試器,可以模擬 Nextion 顯示器,并允許您測試您創(chuàng)建的用戶界面,而無需將其下載到實際的 Nextion 顯示器。
Nextion 和 Arduino 之間的通信通過簡單的串行連接在兩個方向上完成。這種通信的協(xié)議和命令結(jié)構(gòu)是 Nextion 自己的語言。它沒有什么復(fù)雜的,但是有許多不同的命令和一門新的語言需要學(xué)習(xí)!有幾個 Arduino 庫可用,它們試圖彌合差距并處理 Nextion 的所有命令。我不確定他們中的任何一個在這方面特別成功。我讀過的幾篇文章建議最直接的方法是一起跳過庫并學(xué)習(xí) Nextion 語言。
在查看了各種庫和許多 Nextion 有點令人眼花繚亂的文檔之后,我最終使用了 Neo Nextion。它是一個功能齊全的庫,具有官方 Nextion 庫的所有功能,但總體上比官方提供了很多好的示例和更好的文檔。但即使有了這個庫,也需要一些時間來弄清楚你在 Arduino 方面做了什么。
Nextion 的基本思想是用戶界面中的對象(如按鈕、圖像框、頁面、文本框等)具有屬性,其中一些屬性只能由 Nextion 編輯器設(shè)置,但大部分可以設(shè)置和從 Arduino 改變。因此,例如,我可以更改圖像框中的圖片或更改 Arduino 中按鈕的顏色。因此,要使用此方案構(gòu)建游戲,我們使用 Nextion Editor 創(chuàng)建用戶界面,并使用 Arduino 對游戲邏輯進行編程。
Nextion 通過名稱和 ID 號標識每個接口對象。一些命令使用對象的名稱;其他人使用它的 ID。Neo Nextion 之類的庫允許您僅使用對象的名稱來保持一致性。(我對 Nextion 編輯器的一個批評是,如果你刪除一個對象,例如一個按鈕,它會更改頁面上許多其他對象的 ID 號——這不是一個好主意——它真的會弄亂你的 Arduino草圖?。?/font>
關(guān)于所有這些庫的另一個值得一提的問題是它們實現(xiàn)了完整 Nextion 控制語言的一個子集。例如,Nextion 支持可以動態(tài)更改的按鈕上的圖像。但是 Neo Nextion 庫不支持圖像按鈕,所以我無法從 Arduino 控制按鈕上的圖像。
我將通過快速概述 Arduino 如何與 Nextion 上的按鈕交互來完成對 Nextion 的討論。理解這一點將大大有助于理解 Nextion 使用的 Arduino 代碼。首先,在 Nextion 方面,必須將按鈕配置為將其 ID 發(fā)送到 Arduino,無論是在按下時,還是在釋放時,或兩者兼而有之。在 Arduino 端,我們需要在 Neo Nextion 中設(shè)置一個按鈕實例和一個“回調(diào)”” 它將按鈕鏈接到按下(或釋放)按鈕時執(zhí)行的例程。我們還需要創(chuàng)建將要執(zhí)行的實際例程。然后,在 Arduino 的設(shè)置中,我們需要向 Nextion 發(fā)送一個“回調(diào)”指令,該指令為 Nextion 提供我們的“回調(diào)”例程的地址。最后,在 Arduino 的主循環(huán)中唯一允許的是 Nextion 的按鈕輪詢例程。其他所有內(nèi)容都內(nèi)置在按鈕被按下的“回調(diào)”響應(yīng)中!
第一次設(shè)置按鈕時似乎有點混亂,但每個按鈕都是一樣的,所以創(chuàng)建一堆按鈕主要是“復(fù)制和粘貼”練習(xí)。Neo Nextion 有很多很好的例子,向你展示如何做按鈕等等。
軟件
正如我們已經(jīng)說過的,該軟件有兩個部分:1)使用 Nextion 編輯器創(chuàng)建圖形用戶界面,以及 2)創(chuàng)建 Arduino 草圖以生成所有游戲邏輯和對用戶界面的響應(yīng)。
在軟件下載中,我為每個游戲和三個游戲的“街機”組合分別包含了 Arduino 草圖和 Nextion GUI 文件。如果您只想重新創(chuàng)建我所做的,只需使用這些文件。順便說一下,GUI 文件 (.tft) 需要通過 microSD 卡下載到 Nextion。如果您想為此硬件創(chuàng)建自己的游戲,請繼續(xù)閱讀...
Nextion 編輯器易于使用且有據(jù)可查,所以我不會在這里花很多時間解釋它。您需要選擇特定的 Nextion 顯示器 - 我們的是 7 英寸、智能電容式觸控,并在水平 0 模式下運行。您將按鈕和圖像框從工具包拖到活動屏幕并在屬性窗口中配置它們。在應(yīng)用程序的底部,您可以啟用按鈕的操作。一種操作是將該對象的 ID 發(fā)送到 Arduino,如果您希望 Arduino 響應(yīng),您必須啟用該 ID。您希望 Nextion 自行執(zhí)行的操作,例如更改頁面或更改圖片框中的圖片,需要在操作窗口中指定。在大多數(shù)情況下,操作幾乎是直觀的,例如“page 1”切換到第 1 頁或“p0.pic=3”將圖片框 0 中的圖片更改為圖像編號 3。您可以參考Nextion 指令集以獲取有關(guān)這些命令的更多信息。Nextion Editor 有自己的調(diào)試器,您可以在其中運行新創(chuàng)建的用戶界面并測試它的工作原理——這是一個非常好的功能。
在這一點上我應(yīng)該提到的一個細節(jié)是匹配 Nextion 和 Arduino 的串行通信波特率。Nextion 默認設(shè)置為 9600,但這很慢。我的每個 Nextion 文件都設(shè)置了波特率。(它是通過使用類似“bauds = 38400”的命令的預(yù)啟動操作設(shè)置的)匹配的 Arduino 文件在 Setup() 中設(shè)置為相同的波特率。我在這里所做的一切都是波特率 38400。
我使用更高的波特率試圖加快 Nextion 對我在 Arduino 上所做更改的反應(yīng)。雖然它有一點幫助,但并沒有我想象的那么好。顯然,大部分感知到的延遲是等待 Nextion 確認成功接收請求的結(jié)果。這意味著我們有時會等待按鈕變?yōu)榛顒訝顟B(tài)。
對 Arduino 進行編程以與 Nextion 一起工作并不是特別直觀,但 Neo Nextion 有很好的示例可以幫助您入門。Neo Nextion 庫似乎需要大量初始代碼才能啟動。必須為要使用的庫的每個部分添加“包含”,并且每個圖形對象都需要在 Neo Nextion 中聲明,然后才能與之交互。回調(diào)必須包含您希望按鈕執(zhí)行的例程,并且它們的地址必須傳達給 Nextion。一切都發(fā)生在回調(diào)例程中。除了輪詢按鈕的活動外,主循環(huán)不做任何事情。
如果您想使用我的 Arduino 草圖來幫助您入門,我建議您使用其中一款單獨的游戲。三場比賽的街機變得相當復(fù)雜。
井字游戲
這是我處理的第一場比賽。網(wǎng)格是背景圖像,每個正方形都有一個大按鈕。一個非常大的字體(144 像素高)在這些按鈕內(nèi)形成了 Xs 和 Os。
Arduino 草圖基本上有兩部分:1)與 Nextion 按鈕的接口和 2)實際玩井字游戲所需的邏輯。
游戲邏輯嘗試按順序完成以下步驟
- 阻止對手獲勝
- 創(chuàng)建一個可以通過兩種方式獲勝的分叉
- 阻止對手創(chuàng)建分叉
- 走對面的角落
- 走中心廣場
- 采取任何空的角落
- 取一個中間正方形
如果以上都實現(xiàn)了,那電腦就打不過了。我故意省略了涉及分叉的第二步和第三步(它們在代碼中,但為空),以便有可能擊敗計算機。擊敗它仍然不容易。只有幾個非常特定的序列,您可以擊敗計算機。這是一個:
Nextion 有助于為游戲創(chuàng)建漂亮的圖形。圖像用于游戲標題和獲勝、失敗、平局圖形,并且可以在 Arduino 控制下輕松打開或關(guān)閉或切換。
西蒙
西蒙是一個簡單的記憶測試。它是四款游戲中最容易創(chuàng)建的一款,但視覺效果非常令人愉悅,因為它看起來與真實的西蒙游戲一模一樣。
這一切都是通過交換圖像來完成的。該序列是隨機生成的,并一遍又一遍地重復(fù),每次都會在序列中增加一個。與其物理對應(yīng)物完全一樣。
點和框
這個游戲很簡單。不熟悉的可以去網(wǎng)上看看各種網(wǎng)上版本。(或者你的孩子可能會教你怎么玩?。┪覜]想到無論是從 Nextion 的用戶界面還是從 Arduino 的游戲邏輯來說,這都是一個巨大的挑戰(zhàn)。但與井字游戲或西蒙游戲相比,這是一個巨大的挑戰(zhàn)。
第一個問題是用戶界面。我們的 5 x 5 游戲網(wǎng)格上有 30 個垂直門和 30 個水平門。那是60個按鈕。當玩家或電腦分別拍攝時,這 25 個單元格需要分別涂成綠色或紅色。我使用了空文本框的背景顏色,所以有 25 個文本框。然后有一個用于點網(wǎng)格的圖像框、一個開始按鈕、另一個顯示游戲標題的圖像框、一個獲勝圖像、一個失敗圖像、兩個顯示分數(shù)的數(shù)字框,以及一個用于標記分數(shù)的文本框。使用 Nextion 編輯器創(chuàng)建和配置大量圖形對象。并且每一個都有一個唯一的ID號和一個唯一的名字。
Arduino 代碼也是一個挑戰(zhàn)。一方面,每個圖形對象都有一個名稱,名稱可以包括它們在網(wǎng)格上的位置,但這些名稱不能被索引。我們可以使用索引數(shù)組來定義每個盒子的狀態(tài)(哪些邊是閉合的,多少邊是閉合的)但是將該索引轉(zhuǎn)換為特定對象需要一個專門進行轉(zhuǎn)換的子例程 - 一次一個對象!
設(shè)置和配置按鈕所需的 Arduino 代碼中的每個步驟都必須重復(fù) 60 次。而且由于它們無法被索引,因此每個步驟需要 60 行代碼。沒什么大不了的,但是很多復(fù)制和粘貼!
游戲邏輯也不是特別容易。關(guān)閉一個特定的門會導(dǎo)致幾件事發(fā)生。我們首先要看到的是之前沒有關(guān)閉。然后它會導(dǎo)致它兩側(cè)的盒子的一側(cè)關(guān)閉(在水平門的情況下它的上方和下方)。然后我們必須看看關(guān)門是否導(dǎo)致這些盒子中的任何一個被完全關(guān)閉并被玩家或計算機認領(lǐng)。無論玩家還是電腦移動,所有這些都是真實的。
計算機如何決定移動到哪里是另一組問題。它首先嘗試關(guān)閉它可以關(guān)閉的任何盒子并聲稱該盒子,它會再轉(zhuǎn)一圈。當這不能發(fā)生時,它會嘗試找到一個兩側(cè)尚未關(guān)閉的盒子,因為在兩側(cè)已經(jīng)關(guān)閉的盒子旁邊選擇一個門會設(shè)置玩家關(guān)閉它并聲稱該盒子。如果這也失敗了,它會隨機從剩余的門中挑選。這就是計算機成為一個非常好的玩家所需要的一切,但是要實現(xiàn)這個相對簡單的策略需要查看很多門和很多盒子的狀態(tài)。
最重要的是,Dots & Boxes 比井字游戲或西蒙游戲更難構(gòu)建和編程!
下一步是什么
正如我之前所說的,在第 2 部分中,我將為該平臺介紹兩種紙牌游戲的附加軟件:二十一點和五張牌撲克。我希望其他人能建造這個游戲機并創(chuàng)造一些我們可以分享的新游戲。其他想法可能包括德州撲克、紅心。跳棋,或任何兩人棋盤游戲。
- TeleBall:基于Arduino的復(fù)古掌上游戲機
- KOKO游戲機開源分享
- 液晶游戲機開源分享
- PALPi復(fù)古游戲機開源分享
- Arduino掌上游戲機開源分享
- 使用Arduino(Arduboy)DIY手持游戲機
- 簡單的arduino游戲機設(shè)計案例
- 乒乓球游戲機VHDL程序 12次下載
- 拔河游戲機2 0次下載
- 電子拔河游戲機 0次下載
- 電子拔河游戲機17個燈 0次下載
- 數(shù)字電子技術(shù)_拔河游戲機 0次下載
- 數(shù)字電子技術(shù)_拔河游戲機 0次下載
- PS游戲機的原理圖紙及PCB端口的設(shè)計 8次下載
- 飛標游戲機
- 如何用小安派玩小霸王游戲 535次閱讀
- MicroByte:基于ESP32 DIY復(fù)古游戲機 635次閱讀
- 使用ESP32微控制器制作游戲機 2768次閱讀
- 微雪電子micro:bit游戲手柄擴展板簡介 1983次閱讀
- 微雪電子樹莓派游戲機套餐|GamePi20 4.3寸屏介紹 2051次閱讀
- 微雪電子樹莓派迷你游戲機擴展板|GamePi15 1.54寸屏介紹 2512次閱讀
- 微雪電子樹莓派游戲機配件包|GamePi20配件包 4.3寸屏介紹 2001次閱讀
- 微雪電子 樹莓派游戲機擴展板|GamePi43 4.3寸屏介紹 2740次閱讀
- 微雪電子樹莓派游戲機配件包|GamePi43介紹 2114次閱讀
- 微雪電子樹莓派配件包G 游戲機配件包介紹 1528次閱讀
- 基于Raspberry Pi 3 Model B+的掌上游戲機介紹 4905次閱讀
- 便攜式吉他游戲機diy圖解 3447次閱讀
- 用FPGA使當年風(fēng)靡的Atari 2600 VCS游戲機和Apple II個人電腦再次重生 6317次閱讀
- ARDUINO IDE編寫和AVR單片機程序的下載 9769次閱讀
- arduino和單片機的區(qū)別 10.5w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多