m5.begin()
初期化では、インスタンスGT911 TP = GT911()
を作成して初期化しました。このインスタンスではAPIを使ってタッチインタラクション情報を取得できます。
機能です:
I2Cバスを初期化
原型関数です:
esp_err_t begin(uint8_t pin_sda, uint8_t pin_scl, uint8_t pin_int)
機能です:
画面の新たなタッチデータが待ち受け中かどうか確認
原型関数です:
bool avaliable()
機能です:
画面検出を更新
原型関数です:
void update()
機能です:
画面の回転角度を設定/通常は90°に設定
原型関数です:
void SetRotation(uint16_t rotate)
機能です:
タッチ指のX座標を読み込み
原型関数です:
uint16_t readFingerX(uint8_t num)
機能です:
タッチ指のY座標を読み込み
原型関数です:
uint16_t readFingerY(uint8_t num)
機能です:
タッチ指のID座標を読み込み
原型関数です:
uint16_t readFingerID(uint8_t num)
機能です:
タッチ指の作用領域の矩形サイズを読み込み
原型関数です:
uint16_t readFingerSize(uint8_t num)
機能です:
最後に読み込んだタッチ指の数を取得
原型関数です:
uint8_t getFingerNum(void)
機能です:
指が離れたかどうか検出
原型関数です:
bool isFingerUp(void)
機能です:
現在のタッチ状態をクリア
原型関数です:
void flush(void)
機能です:
タッチ指の情報を読み込み、構造体のインスタンスを返却
原型関数です:
tp_finger_t readFinger(uint8_t num)
结构体实例:
typedef struct{ uint16_t x; uint16_t y; uint16_t id; uint16_t size;}tp_finger_t;
使用例です:
#include <M5EPD.h> M5EPD_Canvas canvas(&M5.EPD); int point[2][2]; void setup(){ M5.begin(); M5.EPD.SetRotation(90); M5.TP.SetRotation(90); M5.EPD.Clear(true); canvas.createCanvas(540, 960); canvas.setTextSize(5); canvas.drawString("Touch The Screen!", 20, 400); canvas.pushCanvas(0,0,UPDATE_MODE_DU4);} void loop(){ if(M5.TP.avaliable()){ if(!M5.TP.isFingerUp()){ M5.TP.update(); canvas.fillCanvas(0); bool is_upadte = false; for(int i=0;i<2; i++){ tp_finger_t FingerItem = M5.TP.readFinger(i); if((point[i][0]!=FingerItem.x)||(point[i][1]!=FingerItem.y)){ is_upadte = true; point[i][0] = FingerItem.x; point[i][1] = FingerItem.y; canvas.fillRect(FingerItem.x-50, FingerItem.y-50, 100, 100, 15); Serial.printf("Finger ID:%d-->X: %d*C Y: %d Size: %d\r\n", FingerItem.id, FingerItem.x, FingerItem.y , FingerItem.size); } } if(is_upadte) { canvas.pushCanvas(0,0,UPDATE_MODE_DU4); } } }}