sTodo-m5paper-client/libraries/M5GFX/examples/Basic/TouchTest/TouchTest.ino
2025-06-30 20:47:33 +02:00

73 lines
1.6 KiB
C++

#include <M5GFX.h>
M5GFX display;
void setup(void)
{
display.init();
display.setFont(&fonts::Font4);
if (!display.touch())
{
display.setTextDatum(textdatum_t::middle_center);
display.drawString("Touch not found.", display.width() / 2, display.height() / 2);
}
display.setEpdMode(epd_mode_t::epd_fastest);
display.startWrite();
}
void loop(void)
{
static bool drawed = false;
lgfx::touch_point_t tp[3];
int nums = display.getTouchRaw(tp, 3);
if (nums)
{
for (int i = 0; i < nums; ++i)
{
display.setCursor(16, 16 + i * 24);
display.printf("Raw X:%03d Y:%03d", tp[i].x, tp[i].y);
}
display.convertRawXY(tp, nums);
for (int i = 0; i < nums; ++i)
{
display.setCursor(16, 128 + i * 24);
display.printf("Convert X:%03d Y:%03d", tp[i].x, tp[i].y);
}
display.display();
display.setColor(display.isEPD() ? TFT_BLACK : TFT_WHITE);
for (int i = 0; i < nums; ++i)
{
int s = tp[i].size + 3;
switch (tp[i].id)
{
case 0:
display.fillCircle(tp[i].x, tp[i].y, s);
break;
case 1:
display.drawLine(tp[i].x-s, tp[i].y-s, tp[i].x+s, tp[i].y+s);
display.drawLine(tp[i].x-s, tp[i].y+s, tp[i].x+s, tp[i].y-s);
break;
default:
display.fillTriangle(tp[i].x-s, tp[i].y +s, tp[i].x+s, tp[i].y+s, tp[i].x, tp[i].y-s);
break;
}
display.display();
}
drawed = true;
}
else if (drawed)
{
drawed = false;
display.waitDisplay();
display.clear();
display.display();
}
vTaskDelay(1);
}