準備編
Micro:bit
小型スピーカー
DFPlayer
マイクロSDカード
ブレッドボード
ワニ口クリップ- オスジャンパワイヤ
電池
配線する
この図に沿って配線する
配線した状態
マイクロSDカード側の準備
マイクロSDカード内に二桁の数字のフォルダを作成
その中にmp3のファイル名を三桁の数字に変更して保存する
Micro:bitにDFPlayerの拡張ブロックをインストールする
MakeCodeの『拡張機能』から『DFPlayer』で検索すると上記の画面になるので、
選択して拡張ブロックをインストールする
インストールされたブロック
サンプルプログラムを作成
DFPlayerの接続している端子を設定してボリュームを初期化。
起動がわかるようにLEDを点灯。
ボタンAでフォルダから001.mp3のファイルを再生
ボタンBで次の曲を再生
ボタンABでポーズ
スピーカーからノイズ・・・
プログラムを書き込むやスピーカーから「ドドドドドドド」小刻みなノイズが。。
PCとUSB接続していたので外して、外部給電に変更。
単4電池2本だと再生されず、単4電池3本にするとノイズも止まって
きれいに再生された。
エルボーについて考える
エルボーに合わせて合いの手が出るということは、
エルボーが放たれたということを検知しなければならない。
エルボー・バットとは:
自身の片腕を曲げて片肘を突き出し、振り上げたり振り下ろしたりして相手に叩きつける。
キックボクシングの経験から考えるに、
肘の動きとしては、以下のような流れになる。
①肘(実際には腰)を後ろに引く
②肘を上部に引き上げながら
③前方へ振り下ろし
④手首を胸に引き寄せることで肘を最大可動域まで伸ばす
再考
しかしよく考えるとこれは昔通っていたジムで教わった
「相手の眉を切らせて不戦勝」のための裏技エルボーだ、これではない。
正統派なかち上げ式エルボーに変更したい。
①肘(実際には腰)を後ろに引く
②肘を脇に引きつけながら
③前方上部へ突き出し
④手首を胸に引き寄せることで肘を最大可動域まで伸ばす
加速度センサーについて考える
加速度計は加速度をX、Y、Zの三つの値で表す。これらの値は、大きさ(量)と方向の両方を表している。
micro:bitが地面と平行に保たれ、LEDディスプレイが上を向き、エッジコネクタが手前を向いている状態で、X値は左右の加速度を測定する。Yは自分から離れた方向または自分に戻る方向の加速度を測定し、Zは上下の加速度を測定する。
つまり、XとYは2つの水平面の加速度を表し、Zは垂直面の加速度を表す。
Datasheet:加速度センサーから得られる値
micro:bitを平らにすると、XとYの加速度が0に近く、Zの加速度が-1024に近くになるようだ。
これは重力がmicro:bitに対して下向きに作用していることを示すとのこと。ボードを裏返し、LEDが床に最も近くなるようにすると、仕様ではZ値は+1024とプラスの値になる。またmicro:bitを勢いよく振ると、加速度が±2048まで上がるのが分かる。これは、この加速度計が最大値±2048ミリグラムを測定するように設定されているためで、実際の数値はそれよりも高い可能性があるとのこと。
Datasheet:ジェスチャー検出
micro:bitは以下のジェスチャーを認識することができる
上、下、左、右、フェイスアップ、フェイスダウン、自由落下、3g、6g、8g、シェイク
→3g、6g、8gのジェスチャは、デバイスがこれらのレベルのGが加わったときに適用される。
エルボーと加速度
ではエルボーをする際の加速度はどうなるだろうか?
①肘(実際には腰)を後ろに引く →
Y軸がマイナス方向
②肘を脇に引きつけながら →
X軸がゼロに近い
③前方上部へ突き出し →
Y軸がプラス方向&X軸もプラス方向
④手首を胸に引き寄せることで肘を最大可動域まで伸ばす →
X軸が急速にゼロへ&Y軸はプラス方向
エルボーの動きを計測する
エルボーした際の肘の動きの加速度センサーの値をとってみる。micro:bitを2つ使って1つは肘に装着してその加速度センサーの値をもう1つのmicro:bitへ渡してPC上で表示させる。
何度かエルボーした値は以下のようになった。
①肘を引く②肘を横に回す③肘を突き出すの動作時の値を取得した。
■1回目のデータ
①X:648,Y:620,Z:64
②X:940,Y:-4,Z:940
③X:1016,Y:568,Z:416
■2回目のデータ
①620,216,396
②720,604,629
③1132,172,-17
■3回目のデータ
①940,56,144
②1052,288,508
③152,-688,320
値が定まっていない・・・
結局10回以上テストしてみたが数値がバラバラ。。。
テストの条件がよくないのかも。。ちゃんとサポーターとかで固定して同じ条件を出さないとだめか。
あと今のテストプログラムだとAボタンを押したあとに計測しているが、それだと動きの1点の計測になるのでもう少し幅をもたせたいが、ずっと取得するとどの動作がどの数値かが分からないので、そこの工夫が必要。