Button2でチャタリング除去,(ダブルクリック等の)スイッチ処理


某箇所で紹介されていた

というのがありまして,いろいろなArduinoで使えるようなので試してみました。

手っ取り早く,micro:bitに2個のスイッチがありますので,これを使いました。

準備

  • micro:bit 用の環境を揃える

  • Button2をインストールします。

    • https://github.com/LennartHennigs/Button2 にうつり,[Clone or download] で zip をダウンロード, Arduino IDE スケッチ - ライブラリをインクルード - .ZIP形式のライブラリをインストールします。

試してみる

  • Arduino IDE で,スケッチ例 - Button2 - MultiHandler を選びます。

  • ボタン定義部分を以下のように書き換えます。

変更前
#define BUTTON_A_PIN  2

/////////////////////////////////////////////////////////////////

Button2 buttonA = Button2(BUTTON_A_PIN);
変更後
// #define BUTTON_A_PIN  2

/////////////////////////////////////////////////////////////////

Button2 buttonA = Button2(PIN_BUTTON_A);
  • 実行結果

1回押し,2回押し,3回押し,長押ししてみました。

良いようです。他のスケッチ例も動きました。

チャタリングの処理,2回押し等は,結構面倒なのですが,Button2を使うことで簡単に実装できますね。

いわゆるオフトリガー(=はなしたら反応する)なので,オントリガーを必要とする場合はダメですが...

micro:bitの上記スケッチで,3692バイトでした。

参考URL

https://github.com/LennartHennigs/Button2
https://ht-deko.com/arduino/microbit.html