ジェスチャー判定精度を高めるため、実験データ取得とその判定プログラムを何度も書き換えました。比較的精度がよいもの2つを掲載します。
ブレッドボードだとジャンパー線がジェスチャーの邪魔になるので回路を万能基板にはんだ付けしました。
実施条件は、
FIFO_LEVEL=16, PGAIN=4x, GGAIN=8x, PULSE=16times, PULSE_LENGTH=8us,
LED_BOOST=100%, LED_DRIVE=100mA, GEXPERS=7th, GWAIT=2.8ms
ですが、実際に手に取って使ったことがある人以外には無意味でしょう^^;
(つまり持っている人向けの記事ですね)
まず、手をセンサーUP方向に動かしたときのデータ2つを紹介します。
簡単に判別可能なデータその1
片方のプログラムは右(RIGHT)と誤判定してしまった難しいデータその2
その1データのとき両プログラムともUP判定を返しました。
その2データのとき Direction1 関数は、RIGHT判定(=誤判定)を返しました。理由は、LEFTとRIGHTの微分値が最初に閾値を下回り(データ立ち下がり開始)、UPが候補から外れてしまったことにあります。
これを避けるために Direction2 関数は、微分値が閾値内に入っている区間で、各方向のデータを積分することにしました。一番面積が小さいものを移動方向と判定します。
難しいデータその2のときでも Direction2 関数は正しくUP判定を返しました。
プログラムはここから↓(本当はコピペできるようにしたいのですがブログだとコードがうまく整形されないのでグラフィックです)



