制作一個(gè)交互式街機(jī)床頭鐘
這是一個(gè)交互式街機(jī)床頭鐘,帶有觸摸屏和動(dòng)畫(huà)街機(jī)人物,并且您可以錄制您選擇的鬧鐘聲音。
該項(xiàng)目包括一個(gè) 3D 打印案例和四個(gè)可供選擇的獨(dú)立程序
Arcade Clock - DK Mario、Space Invaders 和 Pac-Man 動(dòng)畫(huà)
Pacman Clock - 具有時(shí)鐘功能的交互式動(dòng)畫(huà)吃豆人游戲
DK Clock - 具有時(shí)鐘功能的交互式動(dòng)畫(huà)DK游戲
Tumble Ghost - 基于 Flappy Bird 的動(dòng)畫(huà)吃豆人幽靈游戲
對(duì)于喜歡重溫 80 年代街機(jī)游戲角色的懷舊情懷的人來(lái)說(shuō),制作起來(lái)充滿樂(lè)趣,也是一份很棒的禮物。
第 1 步:收集材料
Arduino 板 - Arduino Mega 2560
觸摸屏 Arduino 擴(kuò)展板 - 3.2“ Mega Touch LCD 擴(kuò)展板擴(kuò)展板
觸摸屏 - 用于 Arduino Mega 2560 的 3.2” TFT LCD 顯示屏 + 觸摸屏
實(shí)時(shí)時(shí)鐘模塊 - DS3231 RTC
錄音機(jī)模塊-ISD1820錄音機(jī)
3D打印機(jī)用PLA燈絲
用于將外殼粘合在一起的兩部分環(huán)氧樹(shù)脂
USB 電纜 2m 長(zhǎng) USB 充電器(用于時(shí)鐘的電源)
熱膠槍
束線帶 X 3
僅在床頭鐘的情況下才需要可選的自動(dòng)背光調(diào)光組件:
電阻 270k 歐姆
穩(wěn)壓二極管 3.3v
0.5 瓦電阻 47 歐姆
光敏電阻 (LDR)
第 2 步:打印 3D 外殼
你可以在此找到我的3D打印外殼文件。
第 3 步:構(gòu)建電路
整個(gè)電路包含實(shí)時(shí)時(shí)鐘、Arduino Mega、聲音模塊、觸摸屏和屏幕屏蔽。
實(shí)時(shí)時(shí)鐘
如圖所示,將實(shí)時(shí)時(shí)鐘安裝在 Arduino Mega 背面。我使用了熱膠槍和包裝泡沫以確保它們不會(huì)接觸并且有一些緩沖來(lái)吸收運(yùn)動(dòng)。就我而言,我將 2 個(gè) RTC 腿直接焊接到 Arduino 上,并使用連接線將 5v 和 GND 連接到 Arduino。
錄音模塊
這些真的很酷且易于使用。以與上述類似的方式,使用泡沫和熱膠將模塊和揚(yáng)聲器放置在 Arduino 的背面,注意確保它們與接觸絕緣。聲音模塊是由 Arduino 上的 D8 觸發(fā)的,所以這個(gè)和電源需要按照提供的電路圖連接。
自動(dòng)背光調(diào)光器(可選)
如果您打算用作床頭鐘,那么您可能希望在晚上自動(dòng)調(diào)暗背光,以免影響您的睡眠。(如果沒(méi)有,那么你可以跳過(guò)這一步!)不幸的是,TFT 屏幕中的背光是硬連線到 +3.3v 的,不能用 Arduino 調(diào)整。這意味著我們必須斷開(kāi)它并重新連接到 Arduino 上的 PWM 引腳來(lái)控制背光亮度。我想在對(duì)組件上的引腳或軌道造成最小損壞的情況下做到這一點(diǎn),因此采取了以下方法。請(qǐng)仔細(xì)按照以下步驟操作:
(a) 為了實(shí)現(xiàn)這一點(diǎn),光敏電阻 (LDR) 位于單元的背面以檢測(cè)光。在外殼上鉆兩個(gè) 3 毫米的孔,然后將 LDR 支腿穿過(guò)孔。在機(jī)柜內(nèi)部使用熱膠將支腿固定到位。在外殼內(nèi)部焊接兩根電線并按照電路圖連接它們。根據(jù)電路圖在 Arduino 的 A7 上添加一個(gè) 270k 歐姆電阻。
(b) 取下 TFT 顯示器,并將其放在堅(jiān)固的表面上。識(shí)別針腳 19 (LED_A) 并小心地去除針腳底部幾毫米的塑料。如上圖所示,將引腳彎曲并遠(yuǎn)離連接器。檢查 TFT Sheild 是否可以緊密插入,并且彎曲的插針不會(huì)阻礙插頭或插座。
(c) 將一個(gè) 47 歐姆的寄存器焊接到彎曲的引腳上,并將一根電線從電阻器連接到 Arduino Mega 的 D9。Arduino D9 引腳可吸收高達(dá) 40mA 的電流,因此電阻器將其限制為小于此值。將一個(gè) 3.3v 齊納二極管連接到同一引腳 (LED_A) 并按照?qǐng)D表將其接地。這樣做的目的是保護(hù)背光免受過(guò)壓,因?yàn)樗鼘㈦妷赫{(diào)節(jié)到 3.3v。
TFT屏幕和Arduino Shield
小心地將 3.2‘ TFT 觸摸屏連接器推入 TFT Arduino Shield。然后按照提供的圖片小心地連接到 Arduino 的頂部。RTC 有一塊電池,因此即使斷電也能保持正確的時(shí)間。鬧鐘時(shí)間存儲(chǔ)在 Arduino 上的 Eeprom 中,這意味著如果停電,它將保留。
第 4 步:加載代碼
該項(xiàng)目將需要在編譯和運(yùn)行之前加載以下文件和庫(kù)。代碼是獨(dú)一無(wú)二的,圍繞著我借用的庫(kù)、硬件、一些自定義圖形和其他項(xiàng)目的功能構(gòu)建。
請(qǐng)注意:此項(xiàng)目的代碼開(kāi)發(fā)使用了 IDE v1.06,并且一些所需的庫(kù)已過(guò)時(shí)。這意味著有些人在加載代碼時(shí)遇到了新的 IDE 版本 1.6 及更高版本的問(wèn)題。因此,為了簡(jiǎn)單起見(jiàn),我建議人們使用 IDE v1.06,并在教程第 4 步底部的 zip 文件中包含正確版本的庫(kù)文件。
Arduino IDE
我一直在使用早期版本的 Arduino IDE,因此為了簡(jiǎn)單起見(jiàn),我建議您在安裝代碼之前在臺(tái)式機(jī)上下載 Arduino IDE 1.06 版。你可以從這里得到他的版本。
TFT 屏幕變化
TFT 屏幕和制造商的模糊性導(dǎo)致了這些注意事項(xiàng)。
(a) Sainsmart - 如果您購(gòu)買(mǎi)了 TFT 設(shè)備背面標(biāo)有 Sainsmart 品牌的 3.2 英寸 TFT 屏幕,您會(huì)發(fā)現(xiàn)他們必須修改庫(kù)以解決顯示問(wèn)題。如果您已經(jīng)購(gòu)買(mǎi)了 Sainsmart TFT 顯示器,下面有修復(fù)
編輯文件“initlcd.h”并修改以下行
LCD_Write_COM_DATA(0x01, 0x2B3F);
至
LCD_Write_COM_DATA(0x01, 0x3B3F);
您需要重新啟動(dòng) IDE,然后將代碼重新加載到 Arduino。
(b.) TFT 控制器芯片組 - 購(gòu)買(mǎi)了 3.2 英寸 TFT 屏幕的人可能會(huì)發(fā)現(xiàn)他們也可能擁有兩種不同的芯片組“SSD1289”或“ILI9341”中的一種,令人討厭的是,在線區(qū)分差異并不容易。好消息是它很容易修復(fù)。如果加載代碼后出現(xiàn)空白屏幕,那可能是因?yàn)樗?ILI9341 控制器。
要修復(fù),您需要對(duì)代碼進(jìn)行以下更改。編輯代碼,修改下面這行代碼
從
UTFT myGLCD(SSD1289, 38, 39, 40, 41); //應(yīng)根據(jù)您的 Display/Schield 模型調(diào)整參數(shù)
至
UTFT myGLCD(ILI9341_16, 38, 39, 40, 41); //應(yīng)根據(jù)您的 Display/Schield 模型調(diào)整參數(shù)
現(xiàn)在嘗試將代碼重新加載到 Arduino。
(c.)倒置觸摸屏控制
一些制造商報(bào)告說(shuō) Y 軸觸摸屏按鈕已被反轉(zhuǎn)。確定了對(duì)此的修復(fù),其中兩行代碼要更改以翻轉(zhuǎn)觸摸屏讀數(shù)。
查找:“yT = myTouch.getY();” 將其更改為:“yT = 240 - myTouch.getY();”
不要忘記搜索兩次,第一個(gè)實(shí)例是在時(shí)鐘模式下控制 pacman,第二個(gè)是在設(shè)置菜單中。
圖形文件
當(dāng)您開(kāi)始加載到 Arduino 中時(shí),我在下面包含了一組位圖文件,它們需要與 Arduino 代碼位于同一子目錄中。因此下載以下文件并使用 IDE 進(jìn)行加載。
設(shè)置時(shí)鐘
成功加載代碼后,按屏幕中心,這應(yīng)該會(huì)調(diào)出設(shè)置屏幕。使用菜單以 24 小時(shí)格式設(shè)置時(shí)間和鬧鐘。按 SAVE 按鈕保存設(shè)置。RTC 有一塊電池,因此即使斷電也能保持正確的時(shí)間。鬧鐘時(shí)間存儲(chǔ)在 EEPROM 中,這意味著如果斷電,它會(huì)保留。
測(cè)試警報(bào)
Sound 模塊用于提供警報(bào)。ISD1820 由 Arduino D8 引腳控制。通過(guò)向麥克風(fēng)播放聲音,同時(shí)按下 ISD1820 上的錄制按鈕,可以輕松添加聲音。就我而言,我從另一個(gè)設(shè)備播放的音頻文件中錄制了原始的 Pac-Man 介紹音樂(lè)。錄制聲音后,可以通過(guò)按下 PLAY-E 按鈕來(lái)測(cè)試錄音,該按鈕應(yīng)通過(guò)揚(yáng)聲器播放聲音。使用設(shè)置菜單將時(shí)鐘時(shí)間和鬧鐘時(shí)間設(shè)置為相隔幾分鐘。請(qǐng)務(wù)必“設(shè)置”警報(bào)并按下“保存”菜單按鈕。返回主屏幕后,警報(bào)應(yīng)在時(shí)間到來(lái)時(shí)響起。可以通過(guò)按下觸摸屏面板的中心來(lái)關(guān)閉警報(bào),從而進(jìn)入設(shè)置屏幕。
觸摸屏校準(zhǔn)
一些制造商發(fā)現(xiàn)設(shè)置屏幕上的按鈕與 TFT 觸摸控件不對(duì)齊。在這些情況下,觸摸屏需要校準(zhǔn)。這可以通過(guò)使用 URtouch 庫(kù)中提供的觸摸屏校準(zhǔn)代碼和說(shuō)明輕松完成。如果您發(fā)現(xiàn)此問(wèn)題,請(qǐng)按照這些說(shuō)明進(jìn)行操作。
四種不同的程序可供選擇
1. 街機(jī)時(shí)鐘 - DK 馬里奧、太空侵略者和吃豆人動(dòng)畫(huà) 2。Pacman Clock - 具有時(shí)鐘功能的交互式動(dòng)畫(huà) Pacman/Ms Pacman 游戲
3. DK Clock - 具有時(shí)鐘功能的交互式動(dòng)畫(huà)DK游戲
4. Tumble Ghost - 基于 Flappy Bird 的 Pacman Ghost 動(dòng)畫(huà)游戲
第5步:把它們放在一起
增加外部電源
最后一步是添加外部電源。使用鉆頭,在機(jī)柜背面添加一個(gè)孔。將 USB 電纜穿過(guò)后面板,然后按照電路圖將 USB 電纜 VCC、GND、D+ 和 D- 線連接到 Arduino USB 連接器的底座。這有兩個(gè)好處,首先Arduino Mega Boards的USB輸入具有過(guò)流保護(hù),其次,您可以使用USB電纜上傳代碼更改而無(wú)需拆卸盒子。將電源線絕緣層熱粘合到 Arduino 背面,以在組裝前后面板時(shí)防止電纜張力。在距離 Arduino 連接 6-8 厘米的電源線上,將電纜扎帶緊緊地圍繞在外殼內(nèi)側(cè)的電纜上,為電纜添加一個(gè)線夾。
在機(jī)箱中安裝電子設(shè)備
將電路放置在前面板頂部,帶有四個(gè)孔導(dǎo)向器,該導(dǎo)向器應(yīng)將屏幕中心對(duì)準(zhǔn)切口。打開(kāi)電路電源,您可以看到前面板屏幕,檢查屏幕圖像是否處于正確位置,然后用熱膠將其粘合到位。結(jié)果是與位于切口孔中心的方形屏幕緊密配合。
總裝
將前面板輕輕推到后面板上,然后輕輕拉動(dòng) USB 電源線以收緊后面板的松弛部分。線夾在這里很有用,可以保護(hù)接線的任何損壞。插入 USB 充電器,您就可以開(kāi)始使用了。
-
鬧鐘
+關(guān)注
關(guān)注
0文章
77瀏覽量
27069 -
交互式
+關(guān)注
關(guān)注
0文章
26瀏覽量
9710 -
DIY設(shè)計(jì)
+關(guān)注
關(guān)注
2文章
59瀏覽量
19805
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論