物理ボタン、タッチボタンを持たない CoreS3 上にタッチボタンを追加し、 M5.BtnX 経由で状態を取得できるようにしたライブラリです。
将来的に M5Unified に同様の機能がつくまでの暫定としてお使いください。
CoreS3 以外では処理をしないので、Basic, Gray, Core2 と共通のソースで作っている方にも有用です。
M5Unified 前提ですので、 M5Core3.h を使用した物には適用できません。
環境によって適切な方法でインストールしてください
- git clone や Zip ダウンロードからの展開
- platformio.ini
lib_deps = https://github.com/GOB52/gob_unifiedButton
- ArduinoIDE ライブラリマネージャからのインストール
#include <M5Unified.h>
#include <gob_unifiedButton.hpp>
goblib::UnifiedButton unfiedButton;
void setup()
{
M5.begin();
unfiedButton.begin(&M5.Display);
}
void loop()
{
M5.update();
unfiedButton.update(); // M5.update() の後に呼ぶ事 (0.1.0 から後呼びに変更されました)
// M5.BtnX 経由で同様に状態取得
if(M5.BtnA.wasHold())
{
// ...
}
else if(M5.BtnA.wasClicked())
{
// ...
}
// ボタンを描画する
unfiedButton.draw();
}
begin で指定、または changeAppearance で変更できます。
引数 goblib::UnifiedButton::appearance_t | 外観 |
---|---|
bottom | 画面下側にボタンを表示 (default) |
top | 画面上側にボタンを表示 |
custom | 独自にボタンをカスタマイズ(下記参照) |
transparent_bottom | bottom と同様の位置に透明ボタンを配置 |
transparent_top | top と同様の位置に透明ボタンを配置 |
transparent_all | 画面全体に透明ボタンを配置(縦3分割) |
goblib::UnifiedButton::appearance_t::custom を指定した後であれば、 getButoonA / getButtonB / getButtonC で LGFX_Button* を取得できます。
void setup()
{
M5.begin();
unfiedButton.begin(&M5.Display, goblib::UnifiedButton::appearance_t::custom);
auto btnA = unfiedButton.getButtonA();
auto btnB = unfiedButton.getButtonB();
auto btnC = unfiedButton.getButtonC();
// 独自形状、色、テキストのボタンを再作成
btnA->initButton(unfiedButton.gfx(), 40, 120, 80, 240 ,TFT_GREEN, TFT_BLUE, TFT_WHITE, "[A]");
...
}