2024/06/03 電子書籍「電子書籍出版・技術文書作成を劇的に加速!秀丸エディタ + Markdown + Pandocの驚異」を出版

M5UnifiedのButtonクラス

M5Stack

M5UnifiedのButtonクラスについて説明します。

サポートしているボタン

M5Unifiedでは、以下の の5つボタンをサポートしています。

  • BtnA
  • BtnB
  • BtnC
  • BtnPWR
  • BtnEXT

M5Stackシリーズの各機種でのボタンの配置は、以下の通りです。

CoreS3とToughはBtnPWRのみです。

M5Unifiedハンズオンのスライドから

各モデルで使用できるボタンは以下の通りです。ここからの情報です。

DeviceBtnABtnBBtnCBtnPWRBtnEXT
M5Stack Basic/Gray/FireGPIO39GPIO38GPIO37
M5Stack Core2TouchATouchBTouchC
M5Stick C/CPlusGPIO39GPIO37AXP192
M5Stack CoreInkGPIO37(Up)GPIO38(Press)GPIO39(Down)GPIO27GPIO5 (*1)
M5PaperGPIO37(Up)GPIO38(Press)GPIO39(Down)
M5StationGPIO37GPIO38GPIO39AXP192
M5ToughAXP192
M5Atom/M5StampPicoGPIO39
M5StampC3GPIO3
M5StacmC3UGPIO9
About buttons

サンプルコード

M5Unifiedハンズオンにあるボタンの使用方法についてのサンプルコードです。

  • サンプル Button1.cpp
    • Button1.cppは、ボタンAの操作状態を、画面とシリアルモニタに表示します。
  • サンプル Button2.cpp
    • 次に進む前に戻る・ボリュームを上げる下げる という、つの操作を想定したサンプルです。ボタンAのみで異なる動作を試すことができます。。
      • 1回クリック = 次に進む
      • 2回クリック = 前に戻る
      • 長押し = ボリュームを上げる
      • クリック後すぐ長押し = ボリュームを下げる

メンバー関数

Buttonクラスのメンバー関数の一覧です。

メンバー関数プロトタイプ宣言説明
wasClickedbool wasClicked(void);wasClickedは押して500ミリ秒以内に離した瞬間に true を返します。
wasHoldbool wasHold(void);wasHoldは500ミリ秒間ボタンを押し続けた瞬間に true を返します。
※ 500ミリ秒に達した瞬間のみ true を返し、その後は false を返します。
wasSingleClickedbool wasSingleClicked(void);500ミリ秒以内の短押しを一度だけした後、離した状態のまま500ミリ秒以上経過した瞬間にtrueを返します。
wasDoubleClickedbool wasDoubleClicked(void);500ミリ秒以内の短押しを2回連続した後、離した状態のまま500ミリ秒以上経過した瞬間にtrueを返します。
wasDecideClickCountbool wasDecideClickCount(void);500ミリ秒以内の短押しを1回~数回した後、離した状態のまま500ミリ秒以上経過した瞬間にtrueを返します。
getClickCountstd::uint8_t getClickCount(void);500ミリ秒以内の短押しが何回続いたかを返します。
wasDecideClickCountが true の時に取得すると、確定した回数が得られます。
回数情報は、500ミリ秒以上離した時や、長押しを終えた時に0に戻ります。
isHoldingbool isHolding(void);500ミリ秒以上押し続けた後から離す瞬間までの間 true を返します。
※ 500ミリ秒に達するまでは、false のままとなります。
※クリック回数が1回でも複数回でも反応します。
wasChangePressedbool wasChangePressed(void);キーの状態が変化したかどうかを確認します。
isPressedbool isPressed(void);ボタンを押している時は常に true を返します。
isReleasedbool isReleased(void);ボタンを離している時は常に true を返します。
wasPressedbool wasPressed(void);ボタンを押した瞬間にのみ true を返します。
wasReleasedbool wasReleased(void);ボタンを離した瞬間にのみ true を返します。
wasReleasedAfterHoldbool wasReleasedAfterHold(void);500ミリ秒以上ボタンを押した後、離した瞬間にtrueを返します。
※ 500ミリ秒以内に離した場合は false のままとなります。
wasReleaseForbool wasReleaseFor(std::uint32_t ms);指定されたタイムアウト時間を超えてボタンが押されたかどうかを判断し、ボタンを放した後にtrueを返します。
setDebounceThreshvoid setDebounceThresh(std::uint32_t msec);チャタリング防止用のDebounceの判定の時間(初期値10ms)を変更します。
setHoldThreshvoid setHoldThresh(std::uint32_t msec);ボタンの長押し判定の時間 (初期値500ms) を変更します。
setRawStatevoid setRawState(std::uint32_t msec, bool press);キー状態を設定します。
setStatevoid setState(std::uint32_t msec, button_state_t state);キー状態を設定します。
getStatebutton_state_t getState(void);キー状態を取得します。
lastChangestd::uint32_t lastChange(void);最後にステータスが更新された時刻を取得します。
getDebounceThreshstd::uint32_t getDebounceThresh(void);Debounceの判定の時間 (初期値10ms) を取得します。
getHoldThreshstd::uint32_t getHoldThresh(void);現在のボタンの長押しの時間の設定値(初期値500ms)を取得します。
getUpdateMsecstd::uint32_t getUpdateMsec(void);最後にステータスチェックが実行された時刻を取得します。
Buttonクラスのメンバー関数

以下の、M5Unifiedハンズオンの説明の中にボタンの動作についての詳細な説明がありますので参考にしてください。

  • M5Unifiedハンズオンのスライドです。
M5Unifiedハンズオン
M5Unifiedハンズオン M5Stackシリーズ共通ライブラリ“M5Unified” を試してみよう! 2024/2/10 らびやん
  • 上記スライドに+αの説明があります。
M5Unifiedハンズオン
M5Unifiedハンズオン M5Stackシリーズ共通ライブラリ“M5Unified” を試してみよう! 2024/2/10 らびやん
  • M5UnifiedハンズオンのYouTube動画です。

参考URL

以下、参考となるWebページです。

タイトルとURLをコピーしました