第1步:設(shè)置LED燈
莫爾斯游戲?qū)⑹褂?個燈來指出單詞中需要猜測的4個字母和5個指示燈以指示玩家還沒有去猜測的生命,因此首先,您必須按照通常的方式連接9個LED指示燈在圖片里。
第2步:添加一個臨時光傳感器
我們不能在電子商店里亂扔錢,所以我決定保留這個項目
您需要做的就是將LED燈的正極連接到模擬端口之一(在我的情況下為A0)
第3步:添加字典
首先,讓我們開始吧添加一種字典將字母翻譯為相應(yīng)的摩爾斯電碼。為此,我們只需將數(shù)組乘以26 x 5即可,每個輔助數(shù)組的第一個插槽均具有字母,而接下來的4個插槽均具有相應(yīng)的摩爾斯電碼或如果沒有代碼則留一個空格。因此,例如對于字母s,第一個插槽為“ s”,第二,第三和第四插槽為“?!?。并且最后一個插槽為‘’。
步驟4:默認(rèn)情況下點亮燈
在此步驟中,我們確保一旦程序啟動,指示燈便會亮起,并在用戶正確猜出它們后將其代表的字母改成Morse(此代碼將在步驟6中編寫)。我們還請確保打開的生命燈與播放機剩余的生命燈一樣多。
在此之前,請確保您有一個端口號和整數(shù)設(shè)置為0的數(shù)組,以表示該燈應(yīng)打開,關(guān)閉的時間以及該LED燈當(dāng)前顯示在莫爾斯電燈泡的哪一部分。
第5步:添加輸入
現(xiàn)在,我們將編寫代碼以檢查玩家是否在游戲機上照亮了燈光。 LED燈連接到我們的模擬端口A0,如果要將其轉(zhuǎn)換為正確的字母。
為確保讀數(shù)正確,我們使用LED燈平均每20個讀數(shù)并使用該數(shù)字以跟蹤指示燈是關(guān)閉還是打開。為此,在程序開始時,將NUM_AVG設(shè)置為我們希望它在平均之前檢查光的次數(shù)。此數(shù)字越高,讀數(shù)越準(zhǔn)確,但也可能導(dǎo)致延遲。
msBtnPushed表示打開燈的時間。
lastPressed是一個保持跟蹤的布爾值
步驟6:處理輸入
對于此步驟,我們將看一下是否已經(jīng)經(jīng)過了足夠的時間以假定不再添加莫爾斯電文,并且需要檢查莫爾斯電報是否以信函形式以及是否是正確的信函,該怎么辦。
為此,我們需要將字符串wordToGuess設(shè)置為我們希望玩家猜測的單詞。我個人有一個隨機數(shù)發(fā)生器,可以在一開始將其設(shè)置為一個隨機單詞,但是您也可以將其設(shè)置為單個單詞。
我們還需要確保計數(shù)器每增加一個循環(huán),否則整個程序?qū)o法執(zhí)行任何操作。此外,我添加了delay函數(shù),以確保每毫秒都有一個循環(huán)。
PS:所有Serial.println函數(shù)僅用于測試目的。它們可能在完成后被刪除。
goodTimer和badTimer只是用于計劃使用Piezo元素添加聲音的值。
如果您愿意,還必須在第二張圖片中添加代碼,以播放聲音。
步驟7:將正確猜出的字母拼寫
按照之前的承諾,在這一步中,我們將使代表為此,我編寫了兩個函數(shù):morseThis和nextLetter。
它使用我們先前在timers數(shù)組中設(shè)置的數(shù)字并根據(jù)需要進行更改莫爾斯電碼的哪一部分目前正在閃耀。
如果計時器到達了應(yīng)該打開燈的時間,則只需打開燈,然后運行代碼以設(shè)置新的計時器來重新打開和關(guān)閉燈。
如果計時器到達應(yīng)該熄滅的部分,它會關(guān)閉照明燈,然后設(shè)置代表字母下一部分的代碼。如果沒有下一部分,它將重置為第一部分。
步驟8:查看我們的設(shè)置并重置
當(dāng)然,如果沒有將燈光設(shè)置為輸出和輸入,則程序?qū)⒉粫\行。我還添加了一個隨機數(shù)生成器,以從我放入名為wordsToGuess的數(shù)組中的單詞列表中添加單詞。
此外,我們應(yīng)該添加reset函數(shù)并確保將所有值都重置為default 。
步驟9:一張圖片中的所有變量
最后,您可以使用它來檢查是否具有所有必需的變量設(shè)置正確。
責(zé)任編輯:wv
-
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
107751 -
摩爾斯電碼
+關(guān)注
關(guān)注
0文章
17瀏覽量
10233 -
Arduino
+關(guān)注
關(guān)注
187文章
6458瀏覽量
186504
發(fā)布評論請先 登錄
相關(guān)推薦
評論