按鈕開關- Webduino 實戰智慧插座教學

文章推薦指數: 80 %
投票人數:10人

知道原理之後,這邊要來玩點比較有Wi-Fi 控制的應用:「兩塊裝置隔空控制」。

接線圖如下,一塊裝置接插座,另外一塊裝置接按鈕開關. 智慧插座與按鈕開關接線圖. 按鈕開關 「開關」是每天的日常生活中都會接觸到的零件,而「按下開關就開燈」也是每天都會發生的事情,所以這篇教學的內容要描述的絕對不會只有這樣,而是更進一步是透過Wi-Fi來開關燈,甚至觸發網頁裡的事件。

認識開關 首先來認識一下開關,開關在一個電路裡扮演著控制「通路」與「斷路」的重要角色。

如果加入「訊號」,開關就可以控制訊號的「高電位」或是「低電位」了,但有趣的是電路裡面必須要安插一個「電阻」,電阻的作用除了保護電路不被燒毀,更具備了「上拉」或是「下拉」的功能,如果接GND的一側用電阻連接,稱作下拉電阻,如果接在正電的一側稱之上拉電阻,當然兩者傳送的訊號就不同,如果我們的開關是使用下拉電阻,在按下開關的時候傳送高電位訊號,反之就是在放開開關的時候,傳送高電位訊號。

參考:維基百科上拉電阻 如果沒有學過任何的電子學,可能不知道電阻是什麼,要談到電阻就必須要先提到「歐姆定律」,歐姆定律就是「電壓=電流x電阻」。

如果今天一個電路裡沒有電阻,在固定電壓下,相對的電流就會趨近於無限大,進而導致電路某個部份燒壞,這也是為什麼使用開關必須要用電阻的原因,因為在按下開關的剎那,如果沒有電阻,就會發生短路的狀況。

下面這支影片,如果直接把口香糖的錫箔紙接在電池的兩端,立馬就燒起來。

接線之前先認識一下按鈕開關,按鈕開關有四支腳,兩支兩支連通,按下開關的當下四支腳互通。

透過麵包板串接按鈕開關,按鈕開關的一側接3.3V或VCC,另外一側接訊號線,和訊號線相通的另一支腳接電阻然後連接GND。

完成後,透過WebduinoBlockly(https://blockly.webduino.io)測試,首先打開內嵌的網頁,選擇「顯示文字」,放入開發板的積木,輸入裝置的deviceID,放入按鈕開關的積木,腳位設定為10號腳,再放入當按鈕開關「按下」、「放開」與「長按」的積木,如果做出對應的動作,就透過「顯示文字」顯示文字。

確認開發板上線,點選「執行」,按壓按鈕開關,就會看到文字產生對應的變化。

相關教學:按鈕開關 範例解答(體驗版):https://goo.gl/1cDKM4 Webduino程式用法 按鈕開關的宣告使用getButton(board,pin),pin是數位腳,例如接在10號腳就改為10。

button=getButton(board,10); 偵測的方式使用.on(event,callback),event有三種,pressed表示按下開關,released表示放開開關,longPress則是長按。

button.on("pressed",function(){ }); button.on("released",function(){ }); button.on("longPress",function(){ }); 網頁控制 知道原理之後,這邊要來玩點比較有Wi-Fi控制的應用:「兩塊裝置隔空控制」。

接線圖如下,一塊裝置接插座,另外一塊裝置接按鈕開關 HTML的部分先在自己的網頁內引入「webduino-min.js」還有「webduino-blockly.js」這兩個JavaScript,這樣才有操控開發板以及按鈕開關的API可以使用,在body的區域放入一個h2來顯示一些文字訊息,然後放入兩張燈泡一明一暗的圖片,讓偵測到訊號的時候,網頁上的燈泡也會發生反應。

Webduino CSS的部分就只是寫個簡單的控制燈泡圖片有沒有出現而已。

img{ display:none; } .show{ display:block; } JavaScript的部分,除了一般宣告基礎的變數還有按鈕為button和LED為led外,就是多了一個a=0和b=-1,a的目的是在於確認「兩塊開發板都上線了」,只要每一塊開發板上線就會加1,直到變成2才會開始動作,這樣也可以確保動作是同步的,而b的目的在於確認燈泡是亮還是暗。

$(function(){ varbutton, led, $show=$('#show'), $on=$('#on'), $off=$('#off'), a=0, b=-1; //設定第一塊裝置接智慧插座燈泡 boardReady('裝置1',function(board){ board.systemReset(); board.samplingInterval=250; led=getLed(board,10);//設定LED為10號腳 a=a+1; if(a===2){ allReady();//確認兩塊板子都上線了就執行 } }); //設定第二塊裝置接按鈕開關 boardReady('裝置2',function(board){ board.systemReset(); board.samplingInterval=250; button=getButton(board,10);//設定按鈕開關為10號腳 a=a+1; if(a===2){ allReady();//確認兩塊板子都上線了就執行 } }); //確認兩塊板子都上線了要執行的動作 functionallReady(){ button.on("pressed",function(){ b=b*-1; if(b>0){ $show.text('開燈啦!'); led.on(); $on.addClass('show'); $off.removeClass('show'); }else{ $show.text('關起來了'); led.off(); $on.removeClass('show'); $off.addClass('show'); } }); } }); 完整程式碼:http://bin.webduino.io/bale/1/edit?html,js,output 打開網頁執行後,可以看到點壓按鈕開關,就會觸發燈泡與網頁對應的動作。

小結 開關的應用非常常見,接下來會介紹透過開關,做一個耳熟能詳的玩具:電流急急棒! 參考資料 Webduino按鈕開關:https://webduino.io/tutorials/tutorial-09-button-led.html Github連結:https://github.com/webduinoio/webduino-js/blob/master/src/module/Button.js 聯絡我們 如果對於Webduino產品有興趣,歡迎透過下列方式購買: 個人線上購買:https://store.webduino.io/(支援信用卡、超商取貨付款) 企業&學校採購:來信[email protected]或來電07-3388511。

如果對於這篇教學有任何問題或建議,歡迎透過下列方式聯繫我們: Email:[email protected](如對於產品有使用上的問題,建議透過Email附上照片或影片聯繫) Facebook粉絲團:https://www.facebook.com/webduino/ Facebook技術討論社團:https://www.facebook.com/groups/webduino/ Webduino基礎教學 Webduino開發板 馬克一號(介紹) 馬克一號(初始化設定) WebduinoFly(介紹) WebduinoFly(初始化設定) WebduinoSmart(介紹) WebduinoSmart(初始化設定) 開發板擴充設定 Arduino韌體下載與燒錄 使用WebSocket操控 WebduinoBlockly 認識WebduinoBlockly WebduinoBlockly基本操作 WebduinoBlockly特殊功能 連動多塊開發板 腳位偵測設定 發光元件 LED 三色LED LED點矩陣 輸入輸出 繼電器 蜂鳴器 按鈕開關 震動開關 搖桿 紅外線發射接收 環境偵測 超音波偵測 溫濕度偵測 人體紅外線偵測 聲音偵測 光敏電阻 可變電阻 土壤濕度偵測 三軸加速度計 無線感應 RFID 玩具及馬達 伺服馬達 Webduino綜合應用 元件應用 LED(兩顆交互閃爍) LED(霹靂燈) LED(語音聲控) LED(人臉追蹤) LED(Google表單操控) 三色LED(調色盤) 蜂鳴器(多人協奏) 蜂鳴器(會說話的鬧鐘) 傳感器應用 超音波(改變圖片大小) 超音波(控制LED) 超音波(控制三色LED) 溫濕度(Firebase紀錄) RFID(控制Youtube) 可變電阻(改變Youtube音量) 聲音偵測(吹點矩陣蠟燭) 玩具改造 Smart自走車(組裝步驟) Smart自走車(網頁遙控器操控) Smart自走車(超音波避障) Smart自走車(溫濕度感測車) Smart智慧路燈(組裝步驟) Smart智慧路燈(接線教學) Smart飛天車(組裝步驟) Smart飛天車(接線教學) 馬克一號自走車(鍵盤操控) 馬克一號自走車(行動裝置操控) 馬克一號自走車(循跡功能) WABot機器人(初始化設定) WABot機器人(基礎操控) 百元玩具車大改造 智慧生活 智慧植栽(水泵) 智慧插座(組裝與操控) 智慧追蹤(伺服馬達+攝影機) Webduino雲端平台 基本介紹 註冊與登入 Blockly程式積木 Device裝置管理(裝置認證) Device裝置管理(雲端更新) 兌換券(領取與添加新功能) 發光元件 LCD螢幕 七段顯示器 輸入輸出 MP3播放器 環境偵測 PM2.5細懸浮微粒偵測 顏色感測器 電子羅盤 光度計 溫濕度計 資料庫 Google試算表(設定) Google試算表(儲存) Google試算表(讀取) 綜合應用 記錄PM2.5(Google試算表) 玩具改造 Smart智慧小屋(組裝步驟) Blockly教學 基本功能 變數 流程 文字 數學式 列表 邏輯 迴圈 進階功能 控制台 等待 數值轉換 鍵盤行為 語音聲控 語音朗讀 行動裝置 網頁互動區 文字、點擊、圖片 顏色、按鈕、拉霸 遙控器 Youtube 影像追蹤 創意應用 抽籤並朗讀姓名 大樂透自動選號 隨機組合朗讀語句 語音朗讀逐字稿 小時鐘 語音報時 九九乘法你問我答 BlocklyGames 迷宮 鳥 烏龜 影片 池塘導師 Dr.Smart教學 開發板元件 三色LED 三色LED(色彩輪播) 光敏電阻 光敏電阻(色彩變化) 按鈕開關 按鈕開關(控制顏色) 按鈕開關(控制Youtube) 元件及傳感器 LED 蜂鳴器 震動開關 LED點矩陣 超音波偵測 溫濕度偵測 綜合應用 蜂鳴器(多人協奏) 超音波(倒車雷達) 超音波(控制Youtube) LED點矩陣(顯示距離) LED點矩陣(顯示溫度) 按鈕開關(控制蜂鳴器) 實戰智慧插座 基本操控 組裝智慧插座 網頁操控智慧插座 傳感器應用 超音波偵測距離 光線偵測 人體紅外線偵測 聲音偵測 電視機遙控器 按鈕開關 電流急急棒 土壤濕度偵測 RFID感應 進階應用 語音辨識 人臉、顏色追蹤 手機陀螺儀 聊天室(原理) 聊天室(前後端實作) Google試算表(原理) Google試算表(前後端實作) Google地圖(原理) Google地圖(前後端實作) Youtube互動 Opendata實作 Node-Red(基礎操作) Node-Red(Twitter) Node-Red(E-mail) 日幣匯率(Node-Red爬蟲) 日幣匯率(Node-js爬蟲) 常見問題 Webduino相關 關於Webduino 購買Webduino產品 技術支援與合作 Webduino開發板 關於Webduino開發板 連線相關&初始化設定問題 Web:Bit相關問題 WebduinoSmart相關問題 其它問題


請為這篇文章評分?