Arduino入門
Core2のボタン入力に関するAPIとサンプルプログラム。
M5.update()
関数を含め、可能な限りブロッキングを減らす必要があります。そうしないと、ボタンの状態変化をタイムリーに取得できない可能性があります。#include "M5Unified.h"
#include "M5GFX.h"
static int32_t w;
static int32_t h;
static bool drawed = false;
void setup()
{
auto cfg = M5.config();
M5.begin(cfg);
w = M5.Lcd.width();
h = M5.Lcd.height();
M5.Lcd.fillScreen(WHITE);
M5.Display.setRotation(1);
M5.Display.setTextDatum(top_center);
M5.Display.drawString("Button Released", w / 2, 0, &fonts::FreeMonoBold12pt7b);
}
void loop()
{
M5.update();
if(M5.BtnA.isPressed() || M5.BtnB.isPressed() || M5.BtnC.isPressed()){
M5.Display.drawString("Button Detail:", w / 2, 0, &fonts::FreeMonoBold12pt7b);
if (M5.BtnA.isPressed()) {
M5.Display.drawString("ButtonA Pressed", w / 2, 30, &fonts::FreeMonoBold12pt7b);
}
else if (M5.BtnB.isPressed()) {
M5.Display.drawString("ButtonB Pressed", w / 2, 60, &fonts::FreeMonoBold12pt7b);
}
else if (M5.BtnC.isPressed()) {
M5.Display.drawString("ButtonC Pressed", w / 2, 90, &fonts::FreeMonoBold12pt7b);
}
drawed = true;
}
else if (drawed){
drawed = false;
M5.Display.clear(WHITE);
M5.Display.drawString("Button Released", w / 2, 0, &fonts::FreeMonoBold12pt7b);
}
vTaskDelay(1);
}
このプログラムは、ボタンが押されたときに画面上に具体的なボタンの状態を表示します。
Core2 ボタン部分はM5UnifiedライブラリのButton_Class
を使用しています。ボタン関連のAPIについては以下のドキュメントを参照してください: