By thediylife in Circuits



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

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



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


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


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


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