📡
obnizとNode.jsで超音波距離センサ(HC-SR04)を使ってみる
obnizで超音波距離センサを利用する公式サンプルを元にNode.jsから実行してみます。
使うものやソフトウェア
使うものというよりも、使ったものです。
- obniz
- 超音波距離センサ HC-SR04
- Node.js
HC-SR04をobnizに配線
obnizにそれぞれ以下を配線します。
Node.jsのコード
通常通り準備です。
$ mkdir myapp
$ cd myapp
$ npm init -y
obnizのライブラリをインストールします。
$ npm i obniz
app.js
などのファイルを作成しましょう。
公式サンプルっぽい書き方でやってみます。
'use strict';
const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");
obniz.onconnect = async () => {
const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
while(true) {
let avg = 0;
let count = 0;
for (let i=0; i<3; i++) { // measure three time. and calculate average
const val = await hcsr04.measureWait();
if (val) {
count++;
avg += val;
}
}
if (count > 1) {
avg /= count;
}
console.log(avg);
await obniz.wait(100);
}
}
whileループ内でobniz.wait(100)
で0.1秒ごとにセンサーの値を測ってます。
$ node app.js
動かしてみた様子
こんな感じで動作しました。
それ以外の書き方
-
setInterval()
で書いてみる。 (一定時間毎の処理)
'use strict';
const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");
obniz.onconnect = async () => {
const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
const main = () => {
hcsr04.measure(distance => {
console.log("distance " + distance + " mm");
});
}
setInterval(main, 100);
}
-
setTimeout()
と再帰で書いてみる。 (一回実行したあとにxxx秒待って同じ関数を実行)
'use strict';
const Obniz = require("obniz");
const obniz = new Obniz("obnizのデバイスID");
obniz.onconnect = async () => {
const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
const main = () => {
hcsr04.measure(distance => {
console.log("distance " + distance + " mm");
});
setTimeout(main, 100);
}
main();
}
その他の書き方やメソッドなどは公式サンプルを参考にしてみましょう。
Discussion