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