以前下記ボードで三種のライブラリで試験しましたが、その中のbb_captouchを
使いました。
下記ブログ内記事を参照して下さい。
1.タッチの仕様
①静電容量方式
②インターフェースは、「I2C」でアドレスは、「0x14」
➂解像度 1280 x 720
2.参考資料等
①「M5Stack Tab5」について回路図等詳しくは、下記ブログ内記事を参照して下さい。
3.開発環境 2025/07/30時点
①Windows11 X64 Pro 24H2
②Arduino IDE 2.3.6
➂ESP32ボードバージョンV3.3.0
④M5STACK Tab5 ボードバージョンV3.2.2
⑤M5GFX ライブラリv0.2.9
⑥bb_captouch ライブラリv1.3.1 「ライブラリマネージャーでインストールします。」
4.スケッチ及びコンパイル時の設定
①ボード設定「M5Stack -> M5Tab5」
②コンパイル時設定

➂LCD表示用のライブラリは、「M5GFX」を使用していますが、書式として
「Arduino_GFX_Library」に準拠するように変更しています。
6:#include <M5GFX.h>
7:
8:M5GFX tft;
9:LGFX_Device* gfx = &tft; // ← これで gfx->begin() の形式が使える
④スケッチ例「tab5_BBCapTouch_test.ino」
//tab5_BBCapTouch_test.ino
//V2025/07/30 M5Stack Tab5 1280x720 by JK1VCk
//blog URL:https://gijin77.blog.jp/archives/45237682.html
//***************************************************************************
#include <M5GFX.h>
M5GFX tft;
LGFX_Device* gfx = &tft; // ← これで gfx->begin() の形式が使える
#define GFX_BL 22 // LCD バックライト
//***************************************************************************
#include <bb_captouch.h>
#include <Wire.h>
//GT911 I2C adress 0x14
//PI4IOE5V6408 P5 TOUCH_RST
//https://docs.m5stack.com/ja/core/Tab5 //GPIO割当
#define TOUCH_SDA 31
#define TOUCH_SCL 32
#define TOUCH_INT 23
#define TOUCH_RST -1
BBCapTouch bbct;
//***************************************************************************
int32_t w, h, n, n1, cx, cy, cx1, cy1, cn, cn1; //画面サイズ等の各種データ
//***************************************************************************
void setup(){
Serial.begin(115200);
while (!Serial);
Serial.println("\n\nM5Stack Tab5 BBCapTouch test start\n");
if (!gfx->begin()) {
Serial.println("gfx->begin() failed!");
} else {
Serial.println("gfx->begin() OK!!");
}
gfx->setRotation(3);
w = gfx->width();
h = gfx->height();
n = min(w, h);
n1 = n - 1;
cx = w / 2;
cy = h / 2;
cx1 = cx - 1;
cy1 = cy - 1;
cn = min(cx1, cy1);
cn1 = cn - 1;
pinMode(GFX_BL, OUTPUT);
digitalWrite(GFX_BL, HIGH); //バックライトON
// Init touch device *********************
bbct.init(TOUCH_SDA, TOUCH_SCL, TOUCH_RST, TOUCH_INT);
int iType = bbct.sensorType();
Serial.printf("iType=%d \n",iType);
gfx->fillScreen(BLACK);
gfx->setTextSize(6);
gfx->setTextColor(GREEN);
gfx->setCursor(0,0);
gfx->println("touch test Start By JK1VCK");
}
void loop() {
bool touched;
uint16_t touchX, touchY,cox,coy;
w=gfx->width();
h=gfx->height();
int r=gfx->getRotation();
TOUCHINFO ti;
if (bbct.getSamples(&ti)) {
ti.x[0] = map(ti.x[0], 0, 1280, 0, w - 1); // X軸を0〜1280にマッピング
ti.y[0] = map(ti.y[0], 0, 720, 0, h - 1); // y軸を0〜720にマッピング
cox=ti.x[0];
coy=ti.y[0];
switch (r) {
case 1:
touchY=h-cox;touchX=coy;break;
case 2:
touchX=w-cox;touchY=h-coy;break;
case 3:
touchY=cox;touchX=w-coy;break;
default:
touchX=cox;touchY=coy;break;
}
Serial.printf("x=%d,y=%d \r\n",touchX,touchY);
gfx->fillRect(touchX,touchY,5,5, RED);
if(touchX>1200){ //画面右端タッチにて画面クリア
gfx->fillScreen(BLACK);
}
}
delay(10);
}
5.実際の実行の様子
①タッチされたところに点を表示するプログラムとなっております。
②試しに「へへののもへじ」をタッチしてみました。

以上


















