みかづきブログ・カスタム

基本的にはちょちょいのほいです。

M5Stack Core2 v1.1のタッチパネルに押された回数をカウントするボタンを表示する 🔘

引き続き、M5Stack Core2を使ってチャーハンを輝かせるべく、プログラムを書いていきます。
加速度センサ値の読み取り、LED(NeoPixel)の制御、音源の再生ときたので、あとは組み合わせればほぼほぼOKなのですが、ゆくゆく必要になるであろう、ボタンの制御を今回は実装していこうと思います。

前回までのあらすじ

加速度センサ編

blog.kimizuka.org

NeoPixel編

blog.kimizuka.org

音源再生編

blog.kimizuka.org

M5Stack Core2にはタッチディスプレイが付いているので、ここにボタンを表示することにします。
ひとまず、押すたびに押した回数を再描画するボタンを作ってみましょう。

ソースコード

#include <M5Core2.h>

ButtonColors offColor = {BLACK, WHITE, WHITE};
ButtonColors onColor  = {BLACK, RED, RED};

int count = 0;
char buffer[10];

Button button(80, 65, 160, 90, false, "", offColor, onColor);

void setup() {
  M5.begin();
  button.addHandler(handleButtonTouch, E_TOUCH);
  button.addHandler(handleButtonRelease, E_RELEASE);
  sprintf(buffer, "%d", count);
  button.setLabel(buffer);
  M5.Buttons.draw();
}

void loop() {
  M5.update();
}

void handleButtonTouch(Event & e) {
  count += 1;
}

void handleButtonRelease(Event & e) {
  sprintf(buffer, "%d", count);
  button.setLabel(buffer);
  M5.Buttons.draw();
}

ボタンに表示される文字の差し替え方が全然わからなかったので、ソースコードを読みながらなんとか実装しました。

github.com

DEMO

押すたびに数字が増えます。

リポジトリ

github.com

いよいよ、次回はこれまでのプログラムを組み合わせて、傾けるとLEDが輝き、スピーカーから音が出る仕組み(更にタッチパネルでON・OFFできる)を作っていこうと思います。