Bathroom Fan BBC micro:bit coding
Micro:bit IO board Coding
如未能下載建議使用firefox browser來開啟網頁
編程說明 :
在 on start 時設下2個 variable , 1個是Speed 用作之後比較速度使用 ,
show number Speed 是用作顯示風扇現時的速度 , 默認為 4 ,
我們稍後可以利用 button B 來改變風扇的速度 ,
另1個是 FanOn , 是一個條件 , 當風扇開啟/關閉時有不同的作用。
這個是 On Button A 的部份 , 我們先處理較容易的 else 部份 。
由於 on start 的時候 , 「 FanOn」是false的 , 所以當coding開始後我們按下 Button A 時 ,
由於 If 不是 FanOn ,編程會直接進入 else 的部份 , 把 FanOn set 成 true 然後 Call Switch On light + FAN 2個 function 。
Switch On light 的Function 比較簡單 , 只是把 P13 = 1 , P14 = 0 , 把燈開啟 ;
Switch On Fan 運用了 SET varibale " Analog" , 設下這個 varibale 的目的是在稍後改變速度時能以這個速度為基礎而進行加速/改變。
這時把 Analog 設為 512 , 是全速一半的速度 ( Speed = 4 ) 。
Analog write Pin P16 to Analog(512), 這跟普通的 digital write pin 略有分別 , Analog Pin 是帶幅度的並有大小只分 , 數值由0到1024 , 512 為 全速一半的速度。
Write Pin P16 而不是 P15 的原因是需逆時針轉動風扇 , 達致抽氣效果。
** Digital write pin to 1 = analog write pin to 1024
當第2次/FanOn狀態時再按下 Button A , 便能觸發 if FanOn then 這系列的編程 ,
目的是把風扇關掉 , 接下來會逐一說明每個function的用處。
在日常情況下 , 我們如廁後會先關燈然後再讓抽氣扇保持運作抽走空氣後再關上 ,
所以在編程上 , 會先 「Switch OFF Light」再進入「Count Down」, 最後才是 「Switch OFF Fan」。
Call Flash Screen 用作顯示現時風扇的速度 , 顯示4次速度後將會進入關關電源的部份。
關燈的部份非常簡單 , 只是把 P13 , P14 都寫成0便可以了 , 關燈後會進入倒數。
Count Down Function 內有1個 for loop , 會視乎風扇速度而進行改變 , 直至倒數到 index 為 0 才會結束這個loop 並進入下一個編程function。
index 會設為 speed 來進行倒數 , 例如 : 風扇的速度為 4 , index 最後便會是 4 。
set Remaining_Seconds 這個是倒數用的 variable 會不斷改變 , 所以設成 speed - index ,
speed 是一個不會改變的varible ( 例如 4 ) , 而 index 每次進行for loop countdown的時候都會 +1 , 直至數值跟 speed 為一樣的時候 , for loop 才會完結 。
例如 speed 是 4 那 index 便為 : index +1 ( 0 , 0+1 , 0+1+1 , 0+1+1+1 , 0+1+1+1+1) ,
Remaining_Seconds 則為 : speed - index ( 4 - 0 , 4 - 1 , 4 - 2 , 4 -3 , 4 - 4 ) 直至完成整個 for loop。
完成 Countdown 倒數反是簡單的 Switch OFF Fan , 把 P15 , P16 都寫成0便可。
Button B 的作用是改變風扇的速度 , 這個編程分為2部份 ,
第1部份是開啟風扇後 , 在默認速度(speed = 4) 逐步增加速度 ,
第2部份是當速度達至最高時 , 再按加快便會變成關上風扇 , 然後速度由 0 開始再加速。
首先我們設下2個 varible 以作加速之用 ,
Analog 已在 「 Switch On Fan 」時設下 , 設下的 「Analog」 為 512 (最快的一半) ,
而 Speed 亦早在 「On start」時設下 , 設下的「Speed」為 4 ( 最快的一半) ,
當每按一下 Button B , Speed 便會 + 1 , Analog 便會 + 100 ( FAN speed)
Speed = 4+1 , 5+1 , 6+1 , 7+1 ; Analog = 512 + 100 , 612 + 100 ....
i.e. Speed = s + 1 , Analog = a + 100
當 Speed 加至最大時 i.e > 8 時 , Speed 跟 Analog 便會重設成 0 , Motor 亦會停止。
當重新開啟風扇時 , Speed 會 = 1 , 這時我們多加一個 else if speed = 1 ,
目的是讓 analog write pin 直接寫成 212 , 不這樣寫的話 analog 會重回 「Set Analog to Analog + 100 」變成 analog + 100 即是 0 + 100 , Fan Speed 會跟第1次開啟風扇時有出入 ,
例如 : 默認速度 Speed = 4 時 , Analog 默認為 512 , 直接 s+4 , a + 400 會變成 Speed = 4 時 , Analog 為 = 400
因此 , 當 Speed = 1 , 我們需把 analog 的速度重新設為 212 能之後的 analog 能跟之前一樣。
show number Speed 的作用為顯示現時的速度。
Micro:bit Motor Driver board coding
如未能下載建議使用firefox browser來開啟網頁