★本系列文章已集結成冊,和系列文不同的是:
- 本書使用大量的圖解來說明LED系列、多種感測器等原理。
- 補足系列文程式碼的解說,增加逐行程式碼的詳細解說!
- 全彩的書籍,用圖解的方式,讓讀者來理解Johnny-Five各種API的功能與效果,讓你不會只讀文字看到想睡覺而學不起來。
歡迎大家做出自己想要的玩具,為了樂趣而學習,讓學習變成你的樂趣!ヽ(・×・´)ゞ
讓Arduino也能用JavaScript創造出屬於自己的作品!★購書連結-天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345328《IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)》
博客來、金石堂、momo、誠品、PChome、讀冊,均有販售喔!─=≡Σ((( つ•̀ω•́)つ
ISBN:9789864345328
今天要來簡介REPL怎麼用在Arduino上~ ٩(。・ω・。)و
REPL 全名為「 Read-Eval-Print Loop 」讀取-求值-輸出 循環,是一種簡單的交互式的編輯環境 ;藉由用戶輸入事件、表達式或是運算式,再由電腦進行處理運算,接著輸出給用戶,如此循環下去。
REPL很常見在前端開發者開發環境中,像瀏覽器的開發者工具的Console、使用終端機Terminal開啟Node,這些都是REPL~
例如以下:
瀏覽器的開發者工具
Chrome中,開發者模式的Console drawer
macOS中的終端機Terminal 或 Win 的提示命令字元
使用Terminal開啟Node JS的REPL模式
所以我們可以很方便的使用JavaScript在這些工具上debug或者開發等動作ヽ(・×・´)ゞ
Johnny-five也提供了REPL的API,說明要怎麼在Arduino上調用REPL
Component Classes-Board #REPL:
http://johnny-five.io/api/board/#repl
我們要使用Johnny-five提供的REPL範例程式,來示範Arduino會怎樣動作(๑•̀ㅂ•́)و✧
程式碼如下
Examples-Board-REPL: http://johnny-five.io/examples/repl/
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
console.log("Ready event. Repl instance auto-initialized!");
var led = new five.Led(13);
this.repl.inject({
// 寫在這邊的函式可以透過REPL來操控
// 範例為操控LED的亮(on)與滅(off)
on: function() {
led.on();
},
off: function() {
led.off();
}
});
});
當板子on ready後,REPL初始化也隨之啟動
範例程式中,第9行呼叫了 Johnny-Five 內建的方法 repl.inject
在大誇號裡面可以自訂函式,可以看到範例中有簡單的LED亮和滅的功能 ~
我在範例中增加上一篇的介紹的blink功能來實際操作給大家看( • ̀ω•́ )
在terminal輸入 node repl.js
電腦便會透過傳輸線上傳程式到Arduino上。
terminal輸入 node repl.js
執行Node JS → 電腦開始找連接埠 → 連接上 Arduino 開發版 → 執行REPL模式 → REPL Connected後,REPL會隨之初始化~
接下來我們試著操控LED燈即時的亮、滅、閃爍,在REPL模式中分別執行function on()
、off()
、blink()
來看實作結果!
REPL模式下呼叫函式
on();
REPL模式下呼叫函式
off();
REPL模式下呼叫函式
blink();
這就是Johnny-five提供REPL的方法
「讀取函式 → 運算資料 → 輸出到Arduino運行結果 → 再繼續等待下一個循環動作」
讓我們可以簡易的查看實現的結果~ d(・∀・)b
本文到這邊先下台一鞠躬了~
有錯敬請留言改正,感謝您的閱讀啦<(_ _)>
昨天寫完文章後就去掛病號了....Orz
同步連載於blogger-King 學習前端之人生
著作權為 Ying-chi Tzeng所有,轉載請告知,感謝您^^
這篇好用心,還有 Arduino 即時運行畫面的 gif XD
XDDDD
之後還有大量動圖動ㄘ動~~~( 錄到死