#この記事でやった事
*M5 Stackのボタン押下誤検出が生じていたので、その対策
*M5 UI Flowで現象確認から防止策まで
#怪現象の発生
前回 [M5StackからLINE Notify発信] (https://qiita.com/mokatsumo/items/ff173012c9cfeaa9c784)、を書きましたがこの時、しばらく放置しているとボタンを押していないのにLINEに通知が届く怪現象が発生していました。
色々試してみると、ボタンAだけこの現象が発生するようでした。
ノイズ等を拾いやすいのかAだけが瞬時押された状態になってそれを検出してしまうようです。
#現象の確認
ON状態になる時間が十分短ければ、実際のボタン押下と見分けられるはずです。下記コードでONの時間を簡易に確認してみました 。
各ボタンを押した回数と、最新の「押した時間の長さ(ms)」を表示します。
ボタンを押すとこうなります。左からボタン名、回数、時間(ms)です。
短く押してもだいたい50msくらいにはなるようです。
回数クリアして1時間放置してみると、
Aボタンに2回の検出がありました。時間は0ms以下、ごく短いようです。
10ms以下は誤検出として無視できそうですね。
#対策案
下記のように10ms以下を無視するようにして、再度放置してみました。
1時間経っても誤検出はなく、問題なさそうです。
#その後
最終的にはシンプルに10ms待ってからボタン再判定を入れる事でノイズ回避することにしました。1日放置しても誤検出ありません。
#さらにその後(2021.9.12)
M5 UIのファームウェア側で対策されたのか、Ver1.8.3アップデート以降は特に対策無しでも誤検出自体発生していません。よかったです。