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

AD628可以通過(guò)在參考引腳上設(shè)置電壓來(lái)提高輸出的偏置電壓?jiǎn)幔?/a>
DLPC3005是通過(guò)什么來(lái)響應(yīng)這個(gè)曝光時(shí)間的指令的?
ADS7841的采樣頻率的設(shè)置,是不是通過(guò)設(shè)置CS高低電平的時(shí)間來(lái)計(jì)算?
ADS1259 START conversion delay的設(shè)置只是根據(jù)自己的外部電路來(lái)選擇的嗎?
摩爾斯微電子任命安迪·麥克法蘭為營(yíng)銷副總裁

ADS127L11是否可以通過(guò)外部時(shí)鐘頻率來(lái)設(shè)置輸出速率?
什么是EPS?通過(guò)馬達(dá)來(lái)輔助轉(zhuǎn)向操作的系統(tǒng)

摩爾斯微電子榮獲2024年WBA行業(yè)大獎(jiǎng)最佳Wi-Fi創(chuàng)新獎(jiǎng)等多項(xiàng)殊榮
呼吸燈的概念和實(shí)現(xiàn)原理

摩爾斯微電子推出社區(qū)論壇與開(kāi)源GitHub資源庫(kù),新資源的上線將加速全球工程師與開(kāi)發(fā)者的Wi-Fi開(kāi)發(fā)進(jìn)程
arduino(1)--ESP8266配置
【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】通過(guò)按鍵控制LED
Renesa RA如何使用SPI來(lái)實(shí)現(xiàn)高速比特流的發(fā)送

評(píng)論