5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

食の恨みは深いぞ。。。obnizで『コアラのマーチまもるくん』をつくってみた

Posted at

#空前のコアラのマーチブーム到来
ぎょうぎょうしいタイトルから始まってしまいましたが(笑)
空前のコアラのマーチブームが私の中で起きています。
先日、疲れたから、コアラのマーチを食べよう♪と思ったら・・・
コアラのマーチがない・・・!!!
そうです。うちの旦那さんに勝手に食べられました。
もう二度と、勝手に食べられてたまるか!!!
食の恨みと、学んだobnizを組み合わせて、
私のコアラのマーチを守る戦いが始まりました。。。

#完成品(コアラのマーチまもるくん)
こうして、obniz×距離センサー×スピーカーを組み合わせて、
私の**『コアラのマーチまもるくん』**が誕生しました!!

コアラのマーチまもるくんの前に、コアラのマーチを置いて、
これが盗られてしまった(20cm以上離れた)際にブザーが鳴るという仕組みです。

#準備したもの

サンプルコード

実際に書いたコードはこちらです。

distance-speaker
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秒間だけ全力で『コアラのマーチまもるくん』に感謝しながらも、
もっと学んで『コアラのマーチずっとまもるくん』も作ってみたいと思います!

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?