😽
Obnizで距離を測る(HC-SR04)
やること
Obnizと超音波距離センサー(HC-SR04)で距離を測るJavaScriptのメモ
参考情報
構成
参考情報で紹介したサイトと同じように、超音波距離センサー(HC-SR04)をobnizに接続しました。
(1)距離を測る
参考情報で紹介したサイトにあるサンプルをほぼ丸々コピーで作りました。計測した距離をブラウザに表示するところの処理を追加しています。
HC-SR04-01.html
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="https://unpkg.com/obniz@3.10.1/obniz.js"></script>
</head>
<body>
<div id="dispArea"></div>
<script>
const OBNIZ_ID = 'xxxx-xxxx'; // お持ちのObniz ID を設定
const obniz = new Obniz(OBNIZ_ID);
obniz.onconnect = async function() {
const hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
hcsr04.measure(function( distance ){
console.log("distance " + distance + " mm");
document.getElementById("dispArea").innerHTML = "<h1>"+ distance +" mm</h1>"
})
}
</script>
</body>
</html>
実行画面
↓のように計測に失敗したときは、リロードするといいことあるかも
(2)連続して距離を測る
参考情報で紹介したサイトにあるサンプルをほぼ丸々コピーで作りました。計測した距離をブラウザに表示するところの処理を追加しています。
HC-SR04-02.html
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="https://unpkg.com/obniz@3.10.1/obniz.js"></script>
</head>
<body>
<div id="dispArea"></div>
<script>
const OBNIZ_ID = 'xxxx-xxxx'; // お持ちのObniz ID を設定
const obniz = new Obniz(OBNIZ_ID);
obniz.onconnect = async function() {
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);
document.getElementById("dispArea").innerHTML = "<h1>"+ avg +" mm</h1>"
await obniz.wait(100);
}
}
</script>
</body>
</html>
実行画面
追記
突然うごかなくなり、コンソールにはheavy output. output voltage is too low when driving high
と表示されていました。このメッセージは電源容量が不足しているときなどに表示されるそうです。対策はわかってない、外部電源を引っ張ってくる?それはどうやって??
Discussion