Этот пост является частью серии “Джонни Файв”. Смотрите первый пост здесь.
В этом посте я хочу получить информацию с электронного устройства с помощью Johnny Five.
В частности, я хочу использовать датчик уровня воды. Это подскажет мне, достаточно ли у меня кофе или он у меня заканчивается, и мне нужно снова наполнить чашку, чтобы быть работающим программистом.
Это и есть датчик:
Мы собираемся подключить небольшую схему, чтобы получить эти данные, и мы собираемся использовать Джонни Файва, чтобы передать эти данные в наш Node.js приложение.
Датчик имеет 3 контакта. Один – GND (0 В), один – VCC (5 В), а другой – аналоговый вывод данных.
Добавьте вывод, помеченный как - , в GND, + в 5 В и подключите 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)
})
})Всякий раз, когда данные, поступающие через датчик, изменяются, мы увидим, что они выводятся на консоль:
Я использовал метод on() для объекта sensor , чтобы отслеживать все изменения.
Все методы подробно описаны здесь , но меня особенно интересует метод внутри() , который позволяет мне определять обратный вызов, который запускается, когда значение находится в определенном диапазоне:
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!!")
})
})Если у меня начнет заканчиваться кофе, программа напечатает “Пополните свой кофе!! “много раз, потому что значение продолжает меняться, пока датчик становится суше.
Итак, давайте создадим переменную из кофе , которую мы можем использовать для отмены сбора данных.
Мы также заявляем, что до 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!!")
}
})
})Вот и все, теперь, если я попытаюсь переместить датчик в/из чашки кофе, я получу еще несколько полезных предупреждений:
Оригинал: “https://flaviocopes.com/johnny-five-input/”