DiFi第十課按鍵(下)

數位腳D2用來接受數位輸入,接收後顯示的值為0或1,輸入端GND(低電位)時值為0,輸入端3.3V(高電位)時值為1

DiFi學習板已經內建了上拉電阻線路(),所以按鍵未按下(開關未接通)時輸入值為1,按鍵按下(開關接通)時輸入值為0

預設INPUT是低電位,但是DiFi未按下按鍵應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1)。

拿一條麵包線,一端接類比腳A0當作訊號輸入,一端接板子上寫[KEY]的插孔(上圖標h),上圖標示[H]就是 [ 按鍵 ] 

再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d),由數位腳位D7來控制輸出高電位(3.3V)或低電位(0V),燈亮或滅。

一、計數器

按一次按鍵,計數器加1,計算按鍵次數。

做一個計數器變數。

一開始先將變數計數器值設為0

重複執行:判斷按鍵是不是有按下按鍵,讀取數位腳位(2)的值。

如果按鍵按下時(數位腳位2的值=0),就輸出一個0(低電位)給數位腳7,讓LED亮綠色,並將計數器的值加1

程式下載按鍵(計數器).sb2

二、計數器(修正)

上面的程式跟我們的需求是不符的,按一下會跳很多次

因為按下去以後,數位腳2會一直收到低電位直到放開,所以計數器的值就一直加上去了。

要如何修正呢? 

[等待讀取數位腳2=0] ,等待按下按鍵,按下後就亮綠燈。

[等待讀取數位腳2=1],等待放開按鍵,放開後就關燈,並讓計數器的值加1。

程式下載按鍵(計數器)修正.sb2

延伸:

1.增加倒數計時功能,限制時間內的按鍵次數才有效

2.比賽看哪一組在時間內的按鍵按最多

3.將按鍵換成水銀開關,夾在頭上變成搖頭晃腦比賽

三、檯燈開關(兩段式開關)

同一顆按鍵,按第一次燈亮,再按燈滅,再按燈亮,再按燈滅….。

程式下載檯燈開關.sb2

延伸:

1.再接兩條麵包線,讓RGB LED 輪流亮綠、紅、藍三個顏色。

2.增加一條麵包線連接數位腳位8和蜂鳴器,讓按下按鍵時蜂鳴器也會同時響。

四、反應測試

測試你的神經反應:

準備好時,按下按鍵,隨機時間後LED亮,看到亮燈,要立刻按下按鍵。螢幕上顯示你看到亮燈到按下按鍵的反應時間。

按綠旗後的說明

開始先出現主題及說明頁,等待按鍵開始。

如果按下按鍵,數位腳D2收到低電位,小貓出現。

等待放開按鍵,才開始隨機選擇亮燈時間。

計時器歸零,重新計時,並顯示時間,一直到再一次按下按鍵,停止程式。

程式下載反應測試.sb2

延伸:

增加一條麵包線連接數位腳位8和蜂鳴器,準備好時,按下按鍵,隨機時間後LED亮,並且蜂鳴器發出聲音,看到亮燈或聽到聲音,要立刻按下按鍵。螢幕上顯示你看到亮燈或聽到聲音到按下按鍵的反應時間。

五、電子骰子

按下按鍵,LED開始變化不同顏色,鬆開按鍵,停在某一顏色。按鍵按下後鬆開的時間不同,最後停止時的顏色不同。

接線圖: 

拿一條麵包線,一端接數位腳D2當作訊號輸入,一端接板子上寫[KEY]的插孔(上圖標h),上圖標示[H]就是 [ 按鍵 ] 

再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d)。

再拿一條麵包線,一端接數位腳D6,一端接板子上寫[LEDR]的插孔(上圖標e)。

再拿一條麵包線,一端接數位腳D5,一端接板子上寫[LEDB]的插孔(上圖標f)。

[腳位2模式設為INPUT],設定數位腳2為輸入。

原來LED亮著,先用[腳位7數位輸出1]、[腳位6數位輸出1]、[腳位5數位輸出1]讓3個腳位輸出高電位,讓LED熄滅,才能開始進行。

接著不斷的偵測有沒有按下按鍵。

如果有按下按鍵就先關閉上次亮的顏色,然後隨機讓D5、D6、D7其中一個輸出0(低電位),那個顏色就亮起來。

鬆開按鍵時,D2沒有訊號輸入,燈就停止隨機亂閃顏色。

程式下載電子骰子.sb2

延伸:

1.比大小:紅色代表1,綠色代表2,藍色代表3,看看誰骰的比較大。

2.加上[說…..積木],說出燈亮的顏色

3.增加一條麵包線連接數位腳位8和蜂鳴器,按下按鍵時發出聲音,增加聲音效果。

六、顏色猜猜機

設計一個遊戲機器,讓玩家猜顏色。

在螢幕上先出現三個顏色讓玩家選擇(猜),選好後玩家按下DiFi板子上的按鍵,三個顏色的LED燈開始亂數閃爍,鬆開按鍵時,某一個顏色的燈恆亮,如果猜中顏色,就說[猜對了],如果猜錯,就說[猜錯了]。

接線圖: 

拿一條麵包線,一端接數位腳D2當作訊號輸入,一端接板子上寫[KEY]的插孔(上圖標h),上圖標示[H]就是 [ 按鍵 ] 

再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d)。

再拿一條麵包線,一端接數位腳D6,一端接板子上寫[LEDR]的插孔(上圖標e)。

再拿一條麵包線,一端接數位腳D5,一端接板子上寫[LEDB]的插孔(上圖標f)。

螢幕畫面

主程式:

開始先將說明圖片移到定點。

原來LED亮著,先用[腳位7數位輸出1]、[腳位6數位輸出1]、[腳位5數位輸出1]讓3個腳位輸出高電位,讓LED熄滅,才能開始進行。

[腳位2模式設為INPUT],設定數位腳2為輸入。

說出使用方法

等待按下按鍵。

如果按鍵按下時,數位腳位D2得到0,就開始隨機讓D5、D6、D7其中一個輸出低電位,讓LED亮,再暗,再亮另一個顏色………。

直到放開按鍵,數位腳位D2得到1

然後判斷答對了嗎?

使用[說(……)]的擴充積木可以將文字轉換為聲音,讓程式真的說出來。

綠色角色:

程式開始先將顏色圖片移到定點。

當被選中,就將選色變數設為7,做為主程式判斷對錯的依據,並說出選色結果。

如果選的是其他顏色,會收到其他顏色的廣播,就將自己隱藏。

紅色角色:

程式開始先將顏色圖片移到定點。

當被選中,就將選色變數設為6,做為主程式判斷對錯的依據,並說出選色結果。

如果選的是其他顏色,會收到其他顏色的廣播,就將自己隱藏。

藍色角色:

程式開始先將顏色圖片移到定點。

當被選中,就將選色變數設為5,做為主程式判斷對錯的依據,並說出選色結果。

如果選的是其他顏色,會收到其他顏色的廣播,就將自己隱藏。

程式下載:顏色猜猜機.sb2

延伸:

1.增加一條麵包線連接數位腳位8和蜂鳴器,在按鍵時發出特殊聲音,答對或答錯時也可以發出不同的音樂。

2.答對或答錯時更換不同的造型。

注意:

win10或Mac系統,才可以使用[說(……)]的擴充積木可以將文字轉換為聲音,讓程式真的說出來中文,否則只能說英文。

——————————–

註:

讀取資料時,常常因為受到環境雜訊的影響,會發生讀取訊號不穩定的現象(有時讀取到 HIGH 有時卻讀取到 LOW),造成讀取判斷錯誤。為了確保它在穩定的狀態,,必須接個上拉電阻或下拉電阻。

詳細說明請參考:http://blog.ilc.edu.tw/blog/blog/868/post/97509/656348

———————————-

相關連結:

DiFi 課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/100870/660551

WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433 

roc

宜蘭縣國小資訊小站

您可能也會喜歡…