By thediylife in Circuits



我將向您展示如何構(gòu)建自己的密碼游戲,在該游戲中,您將使用旋轉(zhuǎn)編碼器撥盤猜測(cè)隨機(jī)生成的代碼密碼已破解保險(xiǎn)箱。保險(xiǎn)柜的前面有8個(gè)LED指示燈,可以告訴您,您猜對(duì)了多少位數(shù)字以及正確位置的數(shù)字。
保險(xiǎn)柜最初是打開(kāi)的,可讓您將某些物品放入內(nèi)部隔間。Arduino和電池位于背面的單獨(dú)隔間中。然后,您按下轉(zhuǎn)盤以鎖定保險(xiǎn)柜,這是通過(guò)門內(nèi)的伺服器完成的。然后,您需要通過(guò)轉(zhuǎn)動(dòng)撥盤選擇數(shù)字并按下?lián)鼙P以確認(rèn)每個(gè)數(shù)字來(lái)輸入代碼。選擇第四個(gè)數(shù)字后,保險(xiǎn)柜會(huì)使用門上的紅色和綠色LED來(lái)顯示正確的數(shù)字以及正確位置的數(shù)字。
紅色LED指示正確的數(shù)字,綠色LED顯示正確的位置。因此,您需要點(diǎn)亮所有四個(gè)紅色和綠色的LED才能破解密碼并打開(kāi)保險(xiǎn)柜。
保險(xiǎn)柜會(huì)跟蹤您為破解代碼而進(jìn)行的猜測(cè)的次數(shù),一旦設(shè)法破解了,就會(huì)顯示出來(lái)。乍一看聽(tīng)起來(lái)很復(fù)雜,但實(shí)際上并不那么困難,您只需要記住并基于您先前的猜測(cè)即可。大多數(shù)時(shí)候,您應(yīng)該能夠在5到10個(gè)猜測(cè)中破解代碼,具體取決于您最初的猜測(cè)有多幸運(yùn)。
耗材:
- Arduino Uno
 - I2C OLED顯示屏
 - 按鈕編碼器
 - 4 x 5mm紅色LED
 - 4 x 5mm綠色LED
 - 8 x220Ω電阻器
 - 微型伺服器
 - 帶狀電纜
 - 杜邦線
 - 電源開(kāi)關(guān)
 - 3mm MDF薄板
 
您還需要一些基本工具,木膠,膠槍和烙鐵。
保險(xiǎn)箱的零件需要用到激光切割機(jī)。
步驟1:組裝盒子

文末附設(shè)計(jì)圖,可能須根據(jù)實(shí)際使用材料種類及尺寸進(jìn)行修改后才可使用。



該保險(xiǎn)箱是從3mm MDF切割而成的。如果需要,您也可以從3mm的丙烯酸或膠合板上切割零件。如果使用其他厚度的材料,則需要調(diào)整盒子組件中的插槽,以使它們正確地裝配在一起。
盒子的外部有6個(gè)面板,后面板和前面板的前部和后部都有切口。表盤還使用一些激光切割件制成,然后將其粘合在一起。
盒子的頂部和兩側(cè)貼有三塊裝飾面板,使盒子看起來(lái)更像保險(xiǎn)箱。還有兩個(gè)組成門的面板和一個(gè)分隔面板,該分隔面板進(jìn)入箱子的中間,以將保險(xiǎn)柜和電子柜分開(kāi)。
我首先將裝飾面板粘貼到頂部和側(cè)面。確保以正確的順序拿到零件,以便知道哪個(gè)是哪個(gè)。一共有三個(gè)不同的部分,頂部和底部是相同的,側(cè)面是相同的,正面和背面是相同的。面板干燥后,即可組裝盒子。
確保中央分隔線的切口在側(cè)面。這些用于將任何電線從包裝盒的正面連接到Arduino和電池所在的包裝盒的背面。
鉸鏈也需要激光切割,一旦您安裝好門,它們就被粘在適當(dāng)?shù)奈恢?。確保它們與門平行,否則您將很難打開(kāi)它。您可能還需要從門的內(nèi)部鉸接邊緣打一點(diǎn)點(diǎn),以使它在經(jīng)過(guò)時(shí)不會(huì)在盒子的邊緣摩擦。
將四個(gè)正方形粘合到后面板后面的角上,以打孔后蓋的螺釘。然后,您可以在螺釘上鉆孔,然后開(kāi)始安裝屏幕,Arduino,后蓋以及編碼器。
步驟2:連接電子設(shè)備


我在Tinkercad Circuits的試驗(yàn)板上設(shè)計(jì)了該電路,然后將其添加到OLED顯示器中。
我們有8個(gè)LED連接到數(shù)字IO引腳6至13。鎖定伺服器連接到引腳5。編碼器連接到引腳2、3和4,OLED顯示器連接到Arduino的I2C接口。
我為每個(gè)LED使用220歐姆電阻,將其直接焊接到負(fù)極LED上,并使用彩色帶狀電纜將組件連接在一起,以保持布線整潔,并幫助跟蹤連接到每個(gè)Arduino引腳的導(dǎo)線。
我將帶狀電纜推入后部隔間,并將一些引腳排針焊在帶狀電纜上,以插入Arduino。我還在后蓋上安裝了電源開(kāi)關(guān),并將其連接至電池插頭,以連接至可充電電池為游戲供電。您可以使用9V電池。
最后,您需要將鎖止伺服器朝門的邊緣定位,以使其越過(guò)盒子中的邊沿,并且臂部能夠向上推抵邊沿的內(nèi)部以鎖定盒子。這不是最強(qiáng)大的鎖定機(jī)制,但它確實(shí)很簡(jiǎn)單,并且可以很好地滿足游戲目的。
步驟3:對(duì)Arduino進(jìn)行編程


我們首先導(dǎo)入庫(kù)來(lái)控制OLED顯示屏和伺服系統(tǒng)。然后,我們?yōu)轱@示設(shè)置參數(shù)并創(chuàng)建所有變量。有許多變量專用于跟蹤編碼器旋轉(zhuǎn),因?yàn)檫@些變量是通過(guò)引腳2和3的上升沿中斷來(lái)完成的。
創(chuàng)建了兩個(gè)代碼數(shù)組,一個(gè)用于存儲(chǔ)隨機(jī)生成的代碼,另一個(gè)用于存儲(chǔ)用戶當(dāng)前的猜測(cè)。
在設(shè)置功能中,我們啟動(dòng)顯示器,連接伺服器,設(shè)置IO引腳模式,然后在顯示器上顯示Crack the Code文本動(dòng)畫。
循環(huán)功能使LED閃爍并顯示消息推送以鎖定保險(xiǎn)箱,然后等待用戶按下?lián)鼙P開(kāi)始游戲。游戲結(jié)束時(shí)將運(yùn)行相同的代碼,然后顯示嘗試次數(shù)并等待撥號(hào)以開(kāi)始新游戲。
編碼器按鈕上有一些反跳代碼,一旦按下,伺服將鎖定保險(xiǎn)箱,并生成一個(gè)隨機(jī)代碼。然后,代碼會(huì)調(diào)用一個(gè)函數(shù),要求用戶輸入他們的猜測(cè),然后再調(diào)用另一個(gè)函數(shù)來(lái)檢查猜測(cè),重復(fù)此過(guò)程,直到用戶正確猜測(cè)代碼為止。
有一個(gè)更新顯示的代碼的功能,每次轉(zhuǎn)動(dòng)編碼器并且需要更改顯示的代碼時(shí)都會(huì)調(diào)用該功能。
生成新代碼的功能只需為代碼數(shù)組中的四個(gè)元素中的每個(gè)元素分配一個(gè)隨機(jī)數(shù)字。
輸入代碼猜測(cè)的功能允許用戶使用編碼器選擇一個(gè)數(shù)字,然后通過(guò)向下按下編碼器確認(rèn)每個(gè)數(shù)字輸入。然后,校驗(yàn)碼猜測(cè)功能將檢查猜測(cè)的代碼,并確定多少個(gè)數(shù)字正確,以及多少個(gè)數(shù)字在正確的位置。
更新LED功能可根據(jù)用戶的猜測(cè)切換正確數(shù)量的紅色和綠色LED。啟動(dòng)ani函數(shù)在啟動(dòng)時(shí)顯示“破解代碼”動(dòng)畫。最后,兩個(gè)中斷功能管理來(lái)自編碼器的輸入,一個(gè)中斷功能順時(shí)針旋轉(zhuǎn)使數(shù)字向上遞增,而當(dāng)逆時(shí)針旋轉(zhuǎn)時(shí)使數(shù)字向下遞增。
步驟4:玩破解代碼游戲


學(xué)習(xí)如何玩游戲的最佳方法是在開(kāi)始時(shí)觀看視頻,其中有兩個(gè)在即將結(jié)束時(shí)正在玩游戲的示例。
保險(xiǎn)箱最初是解鎖的,可讓您在其中放入一些物品。然后,您按下轉(zhuǎn)盤以鎖定保險(xiǎn)箱并生成新密碼。
一旦選擇了全部四個(gè)數(shù)字,就可以使用撥盤輸入猜出的代碼以遞增數(shù)字,然后按下?lián)鼙P以轉(zhuǎn)到下一個(gè)數(shù)字或確認(rèn)代碼。然后,前面的LED會(huì)亮起,以告訴我們我們的猜測(cè)是正確的。
您可以使用此反饋進(jìn)行下一個(gè)猜測(cè),直到您能夠猜出正確的代碼并再次打開(kāi)保險(xiǎn)柜為止。輸入正確的密碼后,保險(xiǎn)箱將解鎖,并顯示您破解密碼的嘗試次數(shù)。
注:本文經(jīng)翻譯并轉(zhuǎn)載,
可能部分翻譯有誤,請(qǐng)諒解。
來(lái)源:https://www.instructables.com/
