😽

Obnizで距離を測る(HC-SR04)

2020/12/05に公開

やること

Obnizと超音波距離センサー(HC-SR04)で距離を測るJavaScriptのメモ

参考情報

obniz Parts Library HC-SR04

構成

参考情報で紹介したサイトと同じように、超音波距離センサー(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