iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 6
2
IoT

IoT沒那麼難!新手用JavaScript入門做自己的玩具~系列 第 6

[Day 6]-用JavaScript控制Arduino吧!Johnny-Five 之 利用 REPL 模式來開發吧!

IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)

★本系列文章已集結成冊,和系列文不同的是:

  • 本書使用大量的圖解來說明LED系列、多種感測器等原理。
  • 補足系列文程式碼的解說,增加逐行程式碼的詳細解說!
  • 全彩的書籍,用圖解的方式,讓讀者來理解Johnny-Five各種API的功能與效果,讓你不會只讀文字看到想睡覺而學不起來。

歡迎大家做出自己想要的玩具,為了樂趣而學習,讓學習變成你的樂趣!ヽ(・×・´)ゞ
讓Arduino也能用JavaScript創造出屬於自己的作品!

★購書連結-天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345328

《IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)》
博客來、金石堂、momo、誠品、PChome、讀冊,均有販售喔!─=≡Σ((( つ•̀ω•́)つ
ISBN:9789864345328

今天要來簡介REPL怎麼用在Arduino上~ ٩(。・ω・。)و

首先要來介紹REPL是什麼?

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功能來實際操作給大家看( • ̀ω•́ )

首先執行範例檔 repl.js

在terminal輸入 node repl.js 電腦便會透過傳輸線上傳程式到Arduino上。

terminal輸入 node repl.js

執行Node JS → 電腦開始找連接埠 → 連接上 Arduino 開發版 → 執行REPL模式 → REPL Connected後,REPL會隨之初始化~

用 REPL 即時的操控LED燈

接下來我們試著操控LED燈即時的亮、滅、閃爍,在REPL模式中分別執行function on()off()blink() 來看實作結果!

REPL模式下呼叫函式 on();

REPL模式下呼叫函式 off();

REPL模式下呼叫函式 blink();

很方便吧~ヽ(・×・´)ゞ

這就是Johnny-five提供REPL的方法
讀取函式 → 運算資料 → 輸出到Arduino運行結果 → 再繼續等待下一個循環動作
讓我們可以簡易的查看實現的結果~ d(・∀・)b

本文到這邊先下台一鞠躬了~
有錯敬請留言改正,感謝您的閱讀啦<(_ _)>

文後

昨天寫完文章後就去掛病號了....Orz


同步連載於blogger-King 學習前端之人生
著作權為 Ying-chi Tzeng所有,轉載請告知,感謝您^^


上一篇
[Day 5]-用JavaScript控制Arduino吧!- Node.js + Johnny-Five 實作篇
下一篇
[Day 7]-用JavaScript控制Arduino吧!Hello LED World~ Johnny-Five 之 LED Level 1練習!
系列文
IoT沒那麼難!新手用JavaScript入門做自己的玩具~33

1 則留言

0
ayugioh2003
iT邦新手 4 級 ‧ 2019-09-21 17:39:55

這篇好用心,還有 Arduino 即時運行畫面的 gif XD

XDDDD
之後還有大量動圖動ㄘ動~~~( 錄到死

我要留言

立即登入留言