等待- Webduino Blockly 教學
文章推薦指數: 80 %
不論是哪種程式語言,「等待」都是相當重要的功能,透過等待的方式,可以讓一連串程式延遲進行,也可以搭配迴圈進行一連串同步的動作,在一些較為複雜的程式運算裡, ...
等待
不論是哪種程式語言,「等待」都是相當重要的功能,透過等待的方式,可以讓一連串程式延遲進行,也可以搭配迴圈進行一連串同步的動作,在一些較為複雜的程式運算裡,更是時常見到「等待」的身影。
打開WebduinoBlockly編輯器(https://blockly.webduino.io),展開左側目錄「進階功能」,點選「等待」,可以看到對應的等待積木。
同步與非同步
等待的積木有分兩種,分別是同步與非同步的積木(非同步的積木會標註非同步),但究竟什麼是同步?什麼又是非同步呢?所謂的「同步」,就是不同流程工作前進的步伐一致,為了要協調彼此的步伐,會有「等待其他工作完成」的情況發生,因此「等待」也就成為同步程式設計的一個重要特質,同步的程式也常出現在像Arduino使用C或C++的情況。
「非同步」剛好和同步相反,各個程式流程間並不會互相等待,非同步的程式常見於各種網頁的語法,雖然隨著網頁技術的演進,網頁也逐漸能使用同步的程式,但在目前的過渡階段,仍然會有兩者混用的情況發生。
非同步等待
非同步等待積木可以指定等待的秒數,在秒數到達後就會執行對應的內容。
如果只有一個非同步等待的積木,出來的結果和同步等待是類似的,舉例來說,一開始先使用顯示文字的積木顯示AAA,然後使用非同步等待積木,等待一秒後顯示BBB,程式執行後,就會先顯示AAA,經過一秒之後就顯示BBB。
但如果有兩個以上的非同步等待積木,將它們都設定為等待一秒,執行後會發現結果不會依序顯示,而是等待一秒之後同時執行,又因為「同時」的緣故,結果就會變成按照程式的排列順序來執行,也就會變成AAA顯示完之後,等待一秒出現的結果是CCC。
(並非BBB沒有執行,而是執行的速度太快所以看不到)
想要使用非同步等待的積木,要做到同步等待的效果,可將非同步等待一層層的擺放在執行的順序內,就可以一秒一秒等待下去進行。
回顧過去的變數、流程和邏輯的教學文章,透過變數、流程、邏輯的互相組合,就能夠做出一個每0.2秒自動加總,直到數字為10才停止的程式。
範例解答:https://goo.gl/kKsFqb
非同步重複執行
非同步重複執行,表示指定一個間隔時間,內部的流程就會不斷間隔著執行下去。
舉例來說,可以用a與b兩個變數,讓a一開始等於0,b等於1,透過非同步重複執行每隔0.2秒讓a加b,當變數a大於等於10就讓變數b變成-1,當變數a小於等於0就讓b變成1,如此一來就會在0到10的數字區間不斷遞增與遞減。
範例解答:https://goo.gl/tJcyNn
等待
雖然目前瀏覽器尚未全面支援同步等待的功能,但在WebduinoBlockly仍然透過背後的程式,讓這個等待的積木,是以同步的方式進行操作。
以剛剛提到非同步等待的例子來說,使用同步等待的積木,就會比較直覺的先顯示AAA,等待一秒後顯示BBB,再等待一秒後顯示CCC。
把同步等待積木搭配無窮迴圈,就能做出每多少秒自動累加數字並顯示的效果,設定迴圈的「直到」,讓迴圈在數字累加到10的時候停止。
範例解答:https://goo.gl/N9d3z1
如果要做到非同步重複執行的動作,同樣只要使用無窮迴圈和同步等待,當變數a大於等於10的時候讓b等於-1,在變數a小於等於0的時候讓變數b等於1,就能夠在0到10的數字不斷遞增與遞減。
注意!使用無窮迴圈一定要搭配「同步等待」功能或停止無窮迴圈的判斷條件,否則迴圈停不下來,可能就會發生瀏覽器資源耗盡當掉的狀況。
範例解答:https://goo.gl/swwnwD
聯絡我們
如果對於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相關問題
其它問題
延伸文章資訊
- 1迴圈- Webduino Blockly 教學
在程式領域裡,迴圈是常常使用的基本功能之一,迴圈表現的是重複執行的過程,可以將需要重複執行的程式碼放在迴圈內,就能指定次數,或是無窮盡的執行下去。
- 2大樂透自動選號- Webduino Blockly 教學
... 使用Webduino Blockly 實作大樂透自動選號程式,讓電腦為你報個名牌吧!( 自動選號為邏輯機率產生,是否中獎與教學網站無關). 本篇範例會使用:變數、文字、迴圈、 ...
- 3請問,為何相同的程式,在一般Blockly編輯環境中可以作用
想請問一下社團的各位大大,小弟想要利用讀取GOOGLE EXCELL上的資料來控制,但是他只會讀取一次,如果用WHILE迴圈,整個網頁會崩潰,是否有能可以幫忙解答一下,感恩.
- 4Blockly-玩拼圖學程式-迴圈篇for 和while 全功略,快速上手
什麼是迴圈? 簡單的來說就是一件事情,要不斷的一直重複做,例如:網頁上想要顯示每排5張圖片,然後要顯示10行.
- 5教學單元一:結構化程式設計
2.經由積木程式Blockly實作結構化程式的基本結構。 教學目標, 1.能夠瞭解結構化程式設計的觀念。 2.能夠瞭解程式設計的三種基本結構: 循序、選擇、重複(迴圈)。