M5Stack Core2 for AWSのタッチパネルを使ってボタンを作成します。

タッチパネルボタンアプリの作成

タッチパネルボタンアプリ「buttontest.ino」を次のように作成します。

  • 16行目の「addHandler」関数でイベントハンドラーを登録し、25行目の「event_btn_x」関数にボタンを触れると制御が移ります。
  • M5Stack Core2 for AWSにマウントされているNeoPixelのLEDバーは、時計回りに配置されており、片側(”M5”マーキング側)に0から3、もう一方(USBコネクタ側)が5〜8となっており、30-52行目で表示しています。

buttontest.ino

#include <M5Core2.h>
#include <Adafruit_NeoPixel.h>

ButtonColors cl_on  = {CYAN, WHITE, WHITE};// タップした時の色 (背景, 文字列, ボーダー)
ButtonColors cl_off = {DARKCYAN, WHITE, WHITE};// 指を離した時の色 (背景, 文字列, ボーダー)
// ボタン定義名( X軸, Y軸, 横幅, 高さ, 回転, ボタンのラベル, 指を離した時の色指定, タッチした時の色指定)
Button btn_x(80, 50, 150, 50, false , "Push", cl_off, cl_on);

#define PIN 25
#define NUMPIXELS 9 //LEDの数を指定
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //800kHzでNeoPixelを駆動

void setup() {
  pixels.begin(); //NeoPixelの初期化

  // Setup M5
  M5.begin();
  M5.Lcd.fillScreen(BLACK);

  // Setup Buttons
  M5.Buttons.setFont(FSSB12);
  btn_x.setFont(FSSB12);
  btn_x.addHandler(event_btn_x, E_RELEASE);
  M5.Buttons.draw();
}

void loop() {
  M5.update();

  pixels.clear(); // NeoPixelのリセット
  for (int it = 0; it < 9; it++) {
    int jt = it - 1;
    if (jt < 0)
    {
      jt = 8;
    }

    if ((it % 3) == 0)
    {
      pixels.setPixelColor(it, pixels.Color(0, 150, 0));
    }
    else if ((it % 3) == 1)
    {
      pixels.setPixelColor(it, pixels.Color(0, 0, 150));
    }
    else
    {
      pixels.setPixelColor(it, pixels.Color(150, 0, 0));
    }

    pixels.setPixelColor(jt, pixels.Color(0, 0, 0));
    pixels.show();   //LEDに色を反映

    delay(10);
  }
}

void event_btn_x(Event & e) {
  M5.Axp.SetLDOEnable(3, true);
  delay(500);
  M5.Axp.SetLDOEnable(3, false);
}

タッチパネルボタンアプリの実行

タッチパネルボタンアプリ「buttontest.ino」を実行すると、次のように「Push」ボタンが表示され、「Push」ボタンをタッチすると振動モーターが作動します。また両サイドのLEDバーが点滅します。