#空前のコアラのマーチブーム到来
ぎょうぎょうしいタイトルから始まってしまいましたが(笑)
空前のコアラのマーチブームが私の中で起きています。
先日、疲れたから、コアラのマーチを食べよう♪と思ったら・・・
コアラのマーチがない・・・!!!
そうです。うちの旦那さんに勝手に食べられました。
もう二度と、勝手に食べられてたまるか!!!
食の恨みと、学んだobnizを組み合わせて、
私のコアラのマーチを守る戦いが始まりました。。。
#完成品(コアラのマーチまもるくん)
こうして、obniz×距離センサー×スピーカーを組み合わせて、
私の**『コアラのマーチまもるくん』**が誕生しました!!
コアラのマーチまもるくんの前に、コアラのマーチを置いて、
これが盗られてしまった(20cm以上離れた)際にブザーが鳴るという仕組みです。
#準備したもの
- obnize Board 1Y
- スピーカー
- 超音波距離センサー
- コアラのマーチの空箱
サンプルコード
実際に書いたコードはこちらです。
const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx'); // Obniz_IDに自分のIDを入れます
obniz.onconnect = async function () {
//超音波距離センサーを利用
var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
//繰り返す
setInterval(function(){
//距離を測る
hcsr04.measure(function( distance ){
console.log("distance " + distance + " mm")
//スピーカーを利用
const speaker = obniz.wired('Speaker', { signal: 0, gnd: 1 });
//もし、距離が20cm以上であれば
if (distance > 200) {
//音が鳴る
speaker.play(1000);
//そうでなければ
} else {
//音が鳴らない
speaker.stop();
}
})
//1秒ごとに
}, 1000);
}
##コードを書く際に頑張ったポイント
###1.繰り返し実行
公式サイトを見て、ループを使うから、以下のコードを活用しました。
ループを使う
setInterval(function(){
// every second
}, 1000)
###2.Ifで分岐する
はじめてIfが使えて嬉しかったです。。。!!
Ifを使った部分
//もし、距離が20cm以上であれば
if (distance > 200) {
//音が鳴る
speaker.play(1000);
//そうでなければ
} else {
//音が鳴らない
speaker.stop();
}
#7秒の儚い命・・・
7回距離を測ると、 No More pwm Available.
とエラーが出てきて、
途中で止まってしまいます😢
こちらに質問を上げさせていただきました。
https://qiita.com/Izumi0711/questions/dbf333411b955403bbfd
ということで、7秒間だけ全力で『コアラのマーチまもるくん』に感謝しながらも、
もっと学んで『コアラのマーチずっとまもるくん』も作ってみたいと思います!