本文是 Johnny Five 系列的一部分。 請參閱第一篇文章。
在本文中,我將使用 Johnny Five 從電子設備獲取信息。
具體而言,我想使用水位傳感器來判斷咖啡的剩餘量,以便在程序設計師的工作中,當咖啡不足時能重新加滿杯子。
這是傳感器的圖片:
我們將連接一個小電路以獲取此數據,並使用 Johnny Five 將此數據傳送到我們的 Node.js 應用程序中。
該傳感器有 3 根引腳。一個是 GND(0V),一個是 VCC(5V),另一個是類比數據輸出。
將標記為 -
的引腳連接到 GND,+
連接到 5V,並將 S
連接到類比引腳 A0
。
這是電路圖:
現在,我們創建一個名為 sensor.js
的文件,內容如下:
const { Board, Sensor } = require("johnny-five")
const board = new Board()
board.on("ready", () => {
const sensor = new Sensor("A0")
sensor.on("change", function () {
console.log(this.value)
})
})
每當通過傳感器傳來的數據變化時,我們將在控制台上看到打印出來:
我在 sensor
對象上使用了 on()
方法來監視所有更改。
這裡詳細介紹了所有方法,但我對 within()
方法特別感興趣,它允許我定義一個在特定範圍內的值變化時觸發的回調函數:
const { Board, Sensor } = require("johnny-five")
const board = new Board()
board.on("ready", () => {
const sensor = new Sensor("A0")
sensor.within([0, 70], function () {
console.log("Refill your coffee!!")
})
})
如果咖啡剩餘量快不夠時,該程序將多次打印“Refill your coffee!!”,因為傳感器變得更干燥,數據不斷變化。
因此,我們創建了一個 outOfCoffee
變量,用於防彈數據收集。
我們還宣布,在 70 以下表示咖啡不足,而在 150 以上表示咖啡充足:
const { Board, Sensor } = require("johnny-five")
const board = new Board()
board.on("ready", () => {
const sensor = new Sensor("A0")
let outOfCoffee = false
sensor.within([0, 70], () => {
if (!outOfCoffee) {
outOfCoffee = true
console.log("Refill your coffee!!")
}
})
sensor.within([150, 500], () => {
if (outOfCoffee) {
outOfCoffee = false
console.log("Ok, you can go on programming!!")
}
})
})
完成了,現在如果我試圖將傳感器放入或取出咖啡杯中,我會得到一些更有用的警告: