m5stackで組込み!!

Arduinoによるm5stack開発のいろいろと...

タッチによる色変え

前回はタッチによる座標を表示しましたが、
今回はタッチしたエリアに色を付けて表現してみました。

m5stack-build.hatenablog.com

サンプルコード

#include <M5Core2.h>

typedef struct TS_TOUCH_GAME {
  unsigned short usCoord_X;
  unsigned short usCoord_Y;
  unsigned short usWidth;
  unsigned short usHeight;
  unsigned short usColor;
} TS_TOUCH_GAME;

const TS_TOUCH_GAME gtTouchTbl[] = {
  {   0,   0, 160, 120, RED   },
  { 160,   0, 160, 120, WHITE },
  {   0, 120, 160, 120, BLUE  },
  { 160, 120, 160, 120, GREEN }
};
const unsigned short gusTblNum = sizeof(gtTouchTbl) / sizeof(TS_TOUCH_GAME);

void setup() {
  // 初期化
  M5.begin();

  return;
}

void loop() {
  unsigned short ausIdx = 0;
  TouchPoint_t atTouchPoint;

  // タッチ中
  if( M5.Touch.ispressed() )
  {
    // タッチしたX座標、Y座標を取得する
    atTouchPoint = M5.Touch.getPressPoint();
  }

  //
  for( ausIdx = 0; ausIdx < gusTblNum; ausIdx++ )
  {
    // 範囲チェック
    if( ((gtTouchTbl[ausIdx].usCoord_X <= atTouchPoint.x) &&
        ((gtTouchTbl[ausIdx].usCoord_X + gtTouchTbl[ausIdx].usWidth) >= atTouchPoint.x)) &&
        ((gtTouchTbl[ausIdx].usCoord_Y <= atTouchPoint.y) &&
        ((gtTouchTbl[ausIdx].usCoord_Y + gtTouchTbl[ausIdx].usHeight) >= atTouchPoint.y)) )
    {
      //四角形塗りつぶし
      M5.Lcd.fillRect( gtTouchTbl[ausIdx].usCoord_X,
                       gtTouchTbl[ausIdx].usCoord_Y,
                       gtTouchTbl[ausIdx].usWidth,
                       gtTouchTbl[ausIdx].usHeight,
                       gtTouchTbl[ausIdx].usColor );
    }
    else
    {
      ;
    }
  }

  // Bボタン
  if( ((130 <= atTouchPoint.x) &&
      ((200) >= atTouchPoint.x)) &&
      ((240 <= atTouchPoint.y) &&
      ((280) >= atTouchPoint.y)) )
  {
    M5.Lcd.fillRect( 0, 0, 320, 240, BLACK );
  }
  return;
}


www.youtube.com

色で表現すると作った感が出てきますね。
ちなみに下部の〇ボタンも物理キーからタッチキーに変わったので座標判定が必要です。
詳しくはまた。