見出し画像

きっかけは特茶 準備編1

所属している会社では3月1日から3月31日までの期間で

サントリー特茶のモニター企画が開催される予定

盛岡に住んで早二年となりますが、内勤なので通勤以外では

全く体を動かすことない私は、最近健康が気になり始めました

そこで… この機会にと思い、モニター参加に応募したわけです


ただ参加したのでは面白くない


ただ特茶を毎日飲む ➡ ナンセンス

特茶を毎日飲んで運動をする ➡ 続けられなさそう

特茶 × 手持ち技術 × 運動 ➡ こじ付けだけど面白そう

コレだと思いました(笑)

面白いと思うこと = モチベーションの維持が出来る
だと考えています(すごーく大事だと思います)


運動が続かない問題にobnizでアプローチする


主に筋トレをしようと思っています(しかも腹筋のみです)

が、、タイマーを設置して30秒間を3セットやろうとしても

腹筋中はあと何秒頑張れば良いのかが目で確認出来ず

心が折れて辞めてしまうパターンが常でした

ので、obnizを使ってブザー音で経過秒数を表現することで

モチベーションを維持してみようという試みです

また、必要セット数を一連で流れるようにしてしまえば

「今日はここまででいいか」という妥協も防げる見込みです


ただのブザー音でいいのかどうか


後ほど動画を出しますが、ボタンを押したら秒数毎にブザー音を

鳴らすことは出来ます

出来ますが… ちょっと面白くない気がしたので

メロディーを試しに作ってみました

脇道に逸れたとか書いてますが、逸れていません(汗)

気になった方はタイトルで検索してください


使用したコードについて


前回までと同様にNode-REDを使って動かしています

obniz repeat ノード

センサー検知物理的な何かトリガーにしたいときはこのノードが便利

動画ではボタンを押したらブザー音が鳴るようになっています

コードの中身👇

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;


参考にさせてもらったサイト様



過去記事のご紹介



有言実行(震え声)


この記事が気に入ったらサポートをしてみませんか?