まずは完成形
CdSセル(照度センサ)で暗くなると、ゆうやけこやけが流れます。
この曲聞くと切なくなるな。。
#protoout#obniz
— @Jis (@PmanRabbit) October 18, 2020
夕暮れ時に「ゆうやけこやけ」を圧電スピーカーから流してみたよ。 pic.twitter.com/km2YmlAKAi
使った部品
・Obniz Board 1Y
・圧電スピーカー(PKM13EPYH4000-A0)
・CdSセル(MI527/MI5527)
・カーボン抵抗 1/2W330Ω(CFS50J330RB)
・ミニブレッドボード(BB-601)
・ブレッドボード・ジャンパーワイヤ(オス-オス)(BBJ-20)
接続図
コード
.js
constObniz=require('obniz');constobniz=newObniz('0000-0000');// Obniz_ID// 任意の秒数待つことができる関数// 参考: https://qiita.com/suin/items/99aa8641d06b5f819656constsleep=(msec)=>newPromise(res=>setTimeout(res,msec));// 音階constKey={"ド":261.626,"レ":293.665,"ミ":329.628,"ファ":349.228,"ソ":391.995,"ラ":440.000,"シ":493.883,"ド2":523.251,"レ2":587.330}obniz.onconnect=asyncfunction(){// ディスプレイ表示obniz.display.clear();obniz.display.print('TEST');// スピーカーconstspeaker=obniz.wired('Speaker',{signal:0,gnd:1});// 照度センサobniz.io9.output(true);// io9電圧を5Vに(電源+)obniz.io11.output(false);// io11電圧を0Vに(電源−)// setIntervalで一定間隔で処理setInterval(asyncfunction(){// io10をアナログピンに(照度センサーの値を取得)varvoltage=awaitobniz.ad10.getWait();console.log(`changed to ${voltage} v`);if(voltage<0.3){// 暗くなったら「ゆうやけこやけ」を流すspeaker.play(Key["ソ"]);awaitsleep(1000);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ラ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ミ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ド"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ド"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["レ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ミ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["レ"]);awaitsleep(1500);speaker.stop();awaitsleep(500);speaker.play(Key["ミ"]);awaitsleep(1000);speaker.stop();awaitsleep(100);speaker.play(Key["ミ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ラ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ド2"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ド2"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ラ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ラ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ソ"]);awaitsleep(500);speaker.stop();awaitsleep(100);speaker.play(Key["ド2"]);awaitsleep(1500);speaker.stop();awaitsleep(500);}},20000);// 20秒(約1曲分は待つ)}
やってみた感想
圧電スピーカーは周波数で音階を決められるので、曲を流すのは割と簡単でした。
参考:音階周波数
今回、圧電スピーカーで曲を流してみたかっただけですが、なかなか面白かった。ハマりそうです。。スピーカーを複数繋げれば、和音も表現できそうで曲の幅が広がりそうで、時間があったらやってみたい。