第三章 板載感測器實驗(6、計時器)

鄧小榮啟雅發表於2018-03-04

第三章 板載感測器實驗(6、計時器)

6,計時器

任務1:顯示開機時間。

從“輸入”,拖出“執行時間”:
enter image description here

小強:沒地方放,灰色的!
enter image description here

小明:要放到變數裡! 設定一個變數time:
enter image description here enter image description here
板子會不斷地顯示開機時間。

小強:有兩個一樣的“執行時間”!
enter image description here

是的,一個是毫秒,一個是微秒,翻譯有錯。滑鼠停在程式塊上,有說明,看清楚!

小強:這有什麼用?能不能做成秒錶?

任務2:秒錶。

bit沒有專門的定時器,只有一個記錄開機執行的時間。所以,得動動腦子。
小明: 用按鍵。
當按鍵A按下時,記錄開機執行時間,存放在變數time裡,
當按鍵B按下時,再讀一次開機執行時間,減去上次記錄的時間,就是兩次按鍵事件的時間,存放在變數time2裡。顯示出來:
enter image description here

小強:這是毫秒錶,不是秒錶!
**小明:**time2/1000!
enter image description here

小強:看不到變化,能不能象秒錶一樣,不斷地顯示時間?

小明:加一個無限迴圈,不斷地顯示時間:
enter image description here
小強:顯示停不下來!
小明:再加個開關,當A按下時啟動顯示:
enter image description here
小強:還是不行!只顯示了一次,除非一直按著A不放。
這個辦法確實行不通。想想看,按下A後,執行了什麼?能不能讓板子知道?
小明: 記錄了開機時間。可以讓板子判斷time是否為0,如果不為0,顯示時間差,如果為0,則什麼也不做。
enter image description here
小強:還是不行!按下B後沒停。
是的,因為time一直在增加,大於0。
小明:在按下B事件中將time清0!
enter image description here

小強:終於好了!能不能顯示毫秒,比如9.125秒?
在makecode程式設計環境中,不支援小數,不過還是有辦法的,先做個實驗,顯示9.125:
enter image description here
按下A顯示9,按下B顯示125,這樣,就把整數和小數分開了。 接下來,把它們拼到一起:
enter image description here
小強:組合字串在哪?
小明:在高階,文字里!
表揚小明,你是怎麼做到的?
小明:按顏色找,或者搜尋:
enter image description here

任務3:倒數計時器。

任務描述:當按下A,開始倒數計時,並顯示10,9,8,7,6,5,4,3,2,1,0,10秒後顯示心型圖案。
enter image description here
小強:這是正計時!
好吧,改為顯示:10-time2
enter image description here
小強:為什麼是如果為“time",而不是原來的”time>0“?
這是因為,邏輯判斷只有真和假,就是1和0。
enter image description here
而所有變數預設會初始化為0,切換到程式碼可以看到:
enter image description here

任務4:速度計。

任務描述:按下A開始計時,按下B計算時間差,用距離除以時間差得到速度。
比如距離是10米,速度=10/time2*1000

小強:為什麼要*1000?
小明:因為時間單位是毫秒。
enter image description here
小強:不對,總顯示0?
這個!@#¥%…… 想起來了,time2 是一個很大的數, 10/time2不到1,因為makecode程式設計環境不支援浮點運算,就是不會算小數,所以總為0。
改為:速度=10*1000 /time2:
enter image description here
記住這個技巧。

相關文章