Obniz 1Yと、距離センサー、Grove_MP3を用いて実装。 距離が5cm以内となったら一回とカウントし、1回、5回、10回、15回、20回と頑張るごとにMP3に入れておいた音声が再生される仕組みです。 コードはこちら。
const Obniz = require('obniz');
const obniz = new Obniz('Obniz_ID'); // Obniz_IDに自分のIDを入れます
obniz.onconnect = async function () {
// 超音波測距センサを利用する
const hcsr04 = obniz.wired('HC-SR04', { gnd: 0, echo: 1, trigger: 2, vcc: 3 });
// MP3プレーヤーを利用
const mp3 = obniz.wired("Grove_MP3", { gnd: 8, vcc: 9, mp3_rx: 10, mp3_tx: 11 });
await mp3.initWait();
mp3.setVolume(30);
let cnt = 0;
// setIntervalで一定間隔で処理
setInterval(async function () {
// 距離を取得
let distance = await hcsr04.measureWait();
// そのままだと小数点以下の桁数がやたら多いので整数に丸めてもよい
//distance = Math.floor(distance);
// 距離が5cm以下かどうかの判定
if (distance < 50) { // 50mm = 5cm 以下の場合
console.log(cnt)
cnt++
console.log(cnt)
if(cnt===1){
//MP3フォルダ内の「0001」から始まるMP3ファイルを再生
mp3.play(1);
console.log("カウント1")
}else {
}
if(cnt===5){
//MP3フォルダ内の「0002」から始まるMP3ファイルを再生
mp3.play(2);
console.log("カウント5")
}else {
}
if(cnt===10){
//MP3フォルダ内の「0003」から始まるMP3ファイルを再生
mp3.play(3);
console.log("カウント10")
}else {
}
if(cnt===15){
//MP3フォルダ内の「0004」から始まるMP3ファイルを再生
mp3.play(4);
console.log("カウント15")
}else {
}
if(cnt===20){
//MP3フォルダ内の「0005」から始まるMP3ファイルを再生
mp3.play(5);
console.log("カウント20")
}else {
}
}
}, 1000); // 1000ミリ秒 = 1秒おきに実行
}
横に子どもさんがいて声を出しているのかと思っていたら、
mp3ということでビックリ( ゚Д゚)!!
励ましてくれる人を自分ナイズできるって、とても素敵なアイデアだと思いました!
これならやる気を持って継続できそうですね。面白いです。
仕組みはシンプルな気がしますが、「孫の応援」ってのが良いですよね。なんか、ちょっと頑張ろうかなって思いますね、僕なら(あっ、まだ孫のいる年齢ではないですがw)。
YouTubeで紹介させていただきました!
https://youtu.be/1muffVY0SdM