「 極限猶可突破,至臻亦不可止」
大家好,我叫李翔,是一個中國人。前段時間一則新聞吸引了我:我國太空站拒絕了美國的「好友申請」,原來是他們項目的科學價值和技術層面均沒有達到標準。現在想起這個新聞我都覺得神氣極了!我多次在電視轉播中看過火箭發射的過程,每一次都讓我覺得心潮澎湃,尤其是進入倒計時階段,我感覺自己的心已經被發射到了太空中。不知道其他的小夥伴有同樣的感受嗎?
今天,由我來教大家如何製作一臺火箭發射倒計時器。我想要做的功能是:當按鈕被按下後,開始10秒鐘的倒計時,同時使用數碼管顯示時間。計時結束後,紅燈亮,蜂鳴器響,這個狀態保持5秒,用來模擬火箭發射的過程。
因此,我們需要準備的器材有:一個蜂鳴器,一個LED小燈(建議用紅色小燈),一個按鈕,一個數碼管,三條3P導線,一條4P導線和一個Arduino UNO控制器。(註:全程不能讓器材見水,保持工作檯面的乾淨)
接下來開始連線,把按鈕連到2號管腳,把小燈連到3號管腳,把蜂鳴器連到5管腳,把數碼管的SCL(時鐘線)連到A4號管腳,把SDA(數據線)連到A4號管腳,再把VCC和GND對應一連就好了。(這一步需要注意的是:電源線,地線,信號線不能夠插錯)
緊接著就可以開始編寫程序了。我們使用的軟體是Mixly 1.1.5。
步驟一:(誰也不知道你用倒計時器幹什麼)
插好線後,上傳程序(見圖1-1),一切在我預料當中。開個玩笑,本程序主要作用是先測試數碼管顯示倒計時。測試時我發現一個問題:顯示完10以後,居然顯示90、80、70一直到00。我尋思這不對啊,經過365天的苦苦冥想,最終在小楊老師的指點下,我終於知道了為什麼。數碼管在顯示數字時存在一個刷新,也就是後一個數字替換掉前一個。當10到9時,兩位數變為了一位數,9隻能夠替換掉前一位的十位,而個位保留了下來。所以出現了之前的怪現象,我真的感覺是恍然大悟!所以我們在顯示數字時,需要做一個判斷,當是一位數時,前面給補一位0。
圖1-1
之後,我們就可以看他一直在「麻木」地重複10秒倒計時了!
步驟二(你不按我就不計)
所需硬體:上一步的基礎上加一個按鈕,一條3P導線。
下載如下程序(見圖2-1)當我們按下按鈕時,他才開始「帥氣」地倒計時!
這一步的主要特色是,把按鈕的輸入作為中斷,這樣的好處是減少CPU的負擔,提高了工作效率。大多數小夥伴應該還不知道什麼是「中斷」吧,我給大家舉一個簡單的慄子:例如媽媽需要一邊洗衣服一邊燒水,媽媽肯定是在一直洗衣服,然後聽到壺響了,趕緊放下衣服起身去關火。壺響了這個信號就是中斷,如果沒有這個提示,媽媽則需要過一會去看一眼,過一會再看一眼,這樣嚴重拖慢了工作的效率。計算機執行程序亦是如此。(大家趕緊學起來了,這都是小楊老師教的哦)
當然本人編的程序不止一個特色!(畢竟我是王婆)再一個就是中斷函數中變量的使用,通過「非」的邏輯運算,實現了0,1,0,1的不斷切換。這樣我就可以隨時啟停倒計時啦!(程序見圖2-1)圖2-1
既然蜂鳴器和小燈強烈要求上場,那就上吧。
圖2-2
步驟三(火箭咋沒了?——火箭發射器)
所需硬體:在上一步的基礎上加入蜂鳴器,小燈,兩條3P導線。
編程完成後,開始玩火箭發射器————的倒計時器,保證遊戲體驗100%,不添加任何添加劑。(程序見圖3-1)
相信看到這,大夥應該是意猶未盡吧,我知道你們在等著看特色。必須安排一個特色,本步的特色就是再對上一步的變量加以利用,在計時結束後呢,使得變量再一次賦值為0,這樣倒計數就不會再一次自動開始,因為每次程序開始需要變量變為1時,才會執行如果裡面的程序。不然還要按鈕有什麼用,要我這個按按鈕的人有什麼用。
圖3-1
按下按鈕後開始倒計時,10秒後蜂鳴器叫,小燈亮。謝謝大家能堅持聽我囉嗦到現在!最後給大家看看演示的視頻,各位叔叔阿姨,哥哥姐姐記得給我點讚哦!
作者:李翔
特別鳴謝:小楊老師(烤肉老師)