こちらの記事の修正記事となります。
変更したフローとコード、結果のみ記載します。
#フロー図
前回、数値を測定するたびに記録していたことから行のズレが発生していたため、開脚と閉脚それぞれの数値を記録した後、まとめてスプレッドシートに記載する形式に変更
#サンプルコード
詳細はこちら展開ください
let mode = 0 //モードの記録
const Obniz = require("obniz");
let today = new Date();//日付取得
console.log(today);
let year = today.getFullYear();
let month = today.getMonth()+1;
let date = today.getDate();
let dist_close = 0;//閉脚前屈記録
let dist_open = 0;//開脚前屈記録
// Steinを利用するための準備
const SteinStore = require('stein-js-client');
const store = new SteinStore('SteinのURL');
const obniz = new Obniz("xxxx-xxxx");
obniz.onconnect = async function () {
const hcsr04 = obniz.wired('HC-SR04', { gnd: 3, echo: 2, trigger: 1, vcc: 0 });
// ディスプレイ
obniz.display.clear(); // クリア
obniz.display.print('input');
// スイッチの反応を常時監視
obniz.switch.onchange = async function (state) {
if (mode === 0) {//シートへの入力
if (state === 'push') {
console.log('pushed0');
if (dist_open === 0 || dist_close === 0) {
console.log('measure the disntances')
obniz.display.clear();
obniz.display.print('measure the distances');
} else {
console.log('input completed');
obniz.display.clear();// 一度消してから距離+mmの単位を表示
obniz.display.print('input completed');
await store.append("シート1", [
{
date: year + '年' + month + '月' + date + '日',
close: dist_close + 'mm',
open: dist_open + 'mm',
}
]);
}
} else if (state === 'left') {
console.log('close');
obniz.display.clear(); // クリア
obniz.display.print('close');
mode = 1;
} else if (state === 'right') {
console.log('open');
obniz.display.clear(); // クリア
obniz.display.print('open');
mode = 2;
}
} else if (mode === 1) {//閉脚前屈
if (state === 'push') {
console.log('pushed1');
dist_close = await hcsr04.measureWait();
dist_close = Math.floor(dist_close);//丸め
console.log(dist_close + ' mm'); // obnizディスプレイに表示
obniz.display.clear();// 一度消してから距離+mmの単位を表示
obniz.display.print(dist_close + ' mm');
} else if (state === 'left') {
console.log('input');//入力モードに戻す
obniz.display.clear(); // クリア
obniz.display.print('input');
mode = 0;
} else if (state === 'right') {
console.log('open');
obniz.display.clear(); // クリア
obniz.display.print('open');
mode = 2;
}
} else if (mode === 2) {//開脚前屈
if (state === 'push') {
console.log('pushed2');
dist_open = await hcsr04.measureWait();
dist_open = Math.floor(dist_open);//丸め
console.log(dist_open + ' mm'); // obnizディスプレイに表示
obniz.display.clear();// 一度消してから距離+mmの単位を表示
obniz.display.print(dist_open + ' mm');
} else if (state === 'left') {
console.log('close');
obniz.display.clear(); // クリア
obniz.display.print('close');
mode = 1;
} else if (state === 'right') {//入力モードに戻す
console.log('input');
obniz.display.clear(); // クリア
obniz.display.print('input');
mode = 0;
}
}
}
}
#今後の活用
実用に耐えうるレベルとなったので、実生活に取り入れていけそうです。
- レコーディングによる継続的なストレッチ
- 現在実施しているストレッチの効果測定
この2点を今後個人的に実行し、技術記事ではないためおそらくnote等になりますが、別途報告記事としてアップします。