きっかけは特茶 準備編1
所属している会社では3月1日から3月31日までの期間で
サントリー特茶のモニター企画が開催される予定
盛岡に住んで早二年となりますが、内勤なので通勤以外では
全く体を動かすことない私は、最近健康が気になり始めました
そこで… この機会にと思い、モニター参加に応募したわけです
ただ参加したのでは面白くない
ただ特茶を毎日飲む ➡ ナンセンス
特茶を毎日飲んで運動をする ➡ 続けられなさそう
特茶 × 手持ち技術 × 運動 ➡ こじ付けだけど面白そう
コレだと思いました(笑)
面白いと思うこと = モチベーションの維持が出来る
だと考えています(すごーく大事だと思います)
運動が続かない問題にobnizでアプローチする
主に筋トレをしようと思っています(しかも腹筋のみです)
が、、タイマーを設置して30秒間を3セットやろうとしても
腹筋中はあと何秒頑張れば良いのかが目で確認出来ず
心が折れて辞めてしまうパターンが常でした
ので、obnizを使ってブザー音で経過秒数を表現することで
モチベーションを維持してみようという試みです
また、必要セット数を一連で流れるようにしてしまえば
「今日はここまででいいか」という妥協も防げる見込みです
ただのブザー音でいいのかどうか
後ほど動画を出しますが、ボタンを押したら秒数毎にブザー音を
鳴らすことは出来ます
出来ますが… ちょっと面白くない気がしたので
メロディーを試しに作ってみました
脇道に逸れたとか書いてますが、逸れていません(汗)
気になった方はタイトルで検索してください
使用したコードについて
前回までと同様にNode-REDを使って動かしています
センサー検知や物理的な何かをトリガーにしたいときはこのノードが便利
動画ではボタンを押したらブザー音が鳴るようになっています
コードの中身👇
var button = obniz.wired("Keyestudio_Button", {signal:9, vcc:10, gnd:11});
var speaker = obniz.wired("Keyestudio_Buzzer", {signal:0, vcc:1, gnd:2});
//予め周波数をセット
var onRem = 146.832;
var onRep = 587.330;
var onMip = 659.255;
var onFam = 174.614;
var onFap = 698.456;
var onDo = 261.626;
var onRam = 220.000;
var onSom = 195.998;
var onMim = 164.814;
await button.stateWait(false); //押されていない場合の処理
await button.stateWait(true); //押された場合の処理
obniz.display.clear();
obniz.display.print("Song of Storms");
msg.payload = "true"; //押されたかどうかをdebugで確認する為のメッセージ
await obniz.wait(2000); //開始前待機
//嵐の歌 シーケンス1
speaker.play(onRem);
await obniz.wait(200);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onRep);
await obniz.wait(600);
speaker.stop();
await obniz.wait(100);
speaker.play(onRem);
await obniz.wait(200);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onRep);
await obniz.wait(600);
speaker.stop();
await obniz.wait(100);
speaker.play(onMip);
await obniz.wait(600);
speaker.stop();
speaker.play(onFap);
await obniz.wait(200);
speaker.stop();
speaker.play(onMip);
await obniz.wait(200);
speaker.stop();
speaker.play(onFap);
await obniz.wait(200);
speaker.stop();
speaker.play(onMip);
await obniz.wait(200);
speaker.stop();
speaker.play(onDo);
await obniz.wait(200);
speaker.stop();
speaker.play(onRam);
await obniz.wait(800);
speaker.stop();
await obniz.wait(100);
//嵐の歌 シーケンス2
speaker.play(onRam);
await obniz.wait(400);
speaker.stop();
speaker.play(onRem);
await obniz.wait(400);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onSom);
await obniz.wait(200);
speaker.stop();
speaker.play(onRam);
await obniz.wait(800);
speaker.stop();
await obniz.wait(400);
speaker.play(onRam);
await obniz.wait(400);
speaker.stop();
speaker.play(onRem);
await obniz.wait(400);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onSom);
await obniz.wait(200);
speaker.stop();
speaker.play(onMim);
await obniz.wait(800);
speaker.stop();
await obniz.wait(400);
//嵐の歌 シーケンス3
speaker.play(onRem);
await obniz.wait(200);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onRep);
await obniz.wait(600);
speaker.stop();
await obniz.wait(100);
speaker.play(onRem);
await obniz.wait(200);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onRep);
await obniz.wait(600);
speaker.stop();
await obniz.wait(100);
speaker.play(onMip);
await obniz.wait(600);
speaker.stop();
speaker.play(onFap);
await obniz.wait(200);
speaker.stop();
speaker.play(onMip);
await obniz.wait(200);
speaker.stop();
speaker.play(onFap);
await obniz.wait(200);
speaker.stop();
speaker.play(onMip);
await obniz.wait(200);
speaker.stop();
speaker.play(onDo);
await obniz.wait(200);
speaker.stop();
speaker.play(onRam);
await obniz.wait(800);
speaker.stop();
await obniz.wait(200);
//嵐の歌 シーケンス4
speaker.play(onRam);
await obniz.wait(400);
speaker.stop();
speaker.play(onRem);
await obniz.wait(400);
speaker.stop();
speaker.play(onFam);
await obniz.wait(200);
speaker.stop();
speaker.play(onSom);
await obniz.wait(200);
speaker.stop();
speaker.play(onRam);
await obniz.wait(800);
speaker.stop();
await obniz.wait(100);
speaker.play(onRam);
await obniz.wait(400);
speaker.stop();
speaker.play(onRem);
await obniz.wait(1000);
speaker.stop();
return msg;
参考にさせてもらったサイト様
過去記事のご紹介
有言実行(震え声)
この記事が気に入ったらサポートをしてみませんか?