吳俊杰


這個項目源自于我的一個親身經歷,我常常坐飛機,因為路途疲憊,所以在飛機上常常希望能夠睡一會兒,因此就制作了一個能夠在飛機上使用的眼罩鬧鐘,它有半小時叫醒和8小時叫醒兩種模式。然而,伴隨著項目的深入,又有了一個新的需求,即當使用者戴著眼罩睡覺時,如何能夠以比較方便的方式叫醒使用者,又顯得不那么突兀,于是就有了這樣的一個提醒眼罩的設計。
電路連接
提醒眼罩有一個輸入和兩個輸出,輸入為一個按鈕,輸出為兩個紅色的LED燈,在眼罩的安裝環節,這兩個LED分別放在左眼和右眼的位置,以閃爍的方式提醒他人。
伴隨著實驗的深入,我們使用的主控板由原來的只有兩個端口,拓展到本實驗的四個端口,如圖1所示,分別是GV23端口、GV56端口、GVA1A2端口和GVA3A4端口。與之前的規則一樣,對于一般的三針傳感器,有效的端口號為2、5、A1和A3。
按鈕傳感器在眼罩的旁邊,按下以后,LED由原來的熄滅狀態變為閃爍。接著,如圖2所示,將按鈕傳感器接到GV23端口上,將兩個紅色LED接在GVA1A2端口和GVA3A4端口上。
按下按鈕后(如上頁圖3),我們發現兩個LED開始同步閃爍,直到切斷電源才能夠停止,而人眼則會感受到這種閃爍信號,進而起到提醒作用。
情境呈現
我們可以將積木做成一個類似眼鏡的樣子,眼鏡腿的部位可以很好地卡住頭部(如上頁圖4),如果頭比較小,可以改變形狀,讓它可以更好地模擬眼罩的工作效果(如上頁圖5)。
然后用透明膠帶固定主控板,接下來將兩個LED固定在眼睛的位置,LED垂下來方便別人在叫醒正在睡覺的人的時候使用,并將電池固定在一側(如上頁圖6),佩戴的效果如上頁圖7所示。
原理揭秘
用按鈕控制一個LED的閃爍,常見的處理方法是,當按鈕按下端口2的數值為高,邏輯值為真。使用一個“如果”結構,當按鈕按下的時候,A1端口和A2端口接入的LED都開始閃爍(如圖8)。但是,由于按鈕傳感器自身的特點,手按下的時候,輸出電壓為高,邏輯值為真。當松開后,按鈕會自動彈起,輸出電壓為低(GND),邏輯值為假。所以按住不放的時候,我們能夠看到LED閃爍,但是手一旦松開,LED就熄滅了。我們希望按一下松手后,LED也能夠自動閃爍,但是目前的程序還不能夠達到這個效果。為了解決這個問題,我們需要引入一個變量來表示按鈕“是否曾經被按下過”,如圖9所示。
設定變量item,并且將它的初始值設定為0,當按鍵被按下的瞬間通過一個“如果”程序,變量item的數值被改變為1,并且長期保持這個狀態,此時我們就可以通過變量item的數值是否為1來判斷是否該啟動LED閃動的效果了。
成果拓展
按鈕是一種狀態不能夠保持的傳感器,所以我們使用了變量來解決這個問題,但是如果我們將按鈕換成旋鈕,就可以解決這個問題,此時采取第一個程序就可以實現鬧鐘閃爍的效果了。之前的鬧鐘程序就是采用旋鈕控制程序是半小時叫醒還是8小時的時候叫醒,為了不讓測試這個程序的學生等待太久,圖10中采用了10秒叫醒和60秒叫醒兩種鬧鐘模式,不妨試一試,看看具體的效果如何。endprint