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バーが点滅します。
