一、硬件介绍
M5STACK Tab5,其主控采用基于 RISC‑V 架构的 ESP32‑P4 SoC,并配备 16MB Flash 与 32MB PSRAM,无线模块则选用 ESP32-C6-MINI-1U,支持 Wi-Fi 6等;


二、功能实现
实现一个简易的屏幕检测功能界面,可以观察当前屏幕有无坏点、亮斑、漏光等情况;
一共有8项测试界面,通过触摸屏幕切换到下一项目的检测;
界面效果如下:


三、代码编写
开发环境【Arduino IDE】;
#include <M5GFX.h>
M5GFX display;
// 当前测试页面
int testStep = 0;
// 总共8项测试
const int totalSteps = 8;
void setup() {
display.begin();
display.setBrightness(255); // 屏幕亮度设置 (最高亮度)
}
void loop() {
// 绘制当前项界面
drawTestPattern(testStep);
// 屏幕触摸
int32_t x, y;
while (display.getTouch(&x, &y) == 0) {
delay(50);
}
while (display.getTouch(&x, &y) != 0) {
delay(50);
}
// 切换下一项
testStep++;
if (testStep >= totalSteps) {
testStep = 0;
}
}
/*
0: 纯白
1: 灰色
2: 黑色
3: 红色
4: 绿色
5: 蓝色
6: 几何形状
7: 色阶过渡
*/
void drawTestPattern(int step) {
int w = display.width();
int h = display.height();
switch (step) {
case 0:
display.fillScreen(TFT_WHITE);
break;
case 1:
display.fillScreen(display.color888(128, 128, 128));
break;
case 2:
display.fillScreen(TFT_BLACK);
break;
case 3:
display.fillScreen(TFT_RED);
break;
case 4:
display.fillScreen(TFT_GREEN);
break;
case 5:
display.fillScreen(TFT_BLUE);
break;
case 6:
display.fillScreen(TFT_BLACK);
display.drawRect(0, 0, w, h, TFT_WHITE);
display.drawLine(0, 0, w, h, TFT_WHITE);
display.drawLine(0, h, w, 0, TFT_WHITE);
display.drawCircle(w/2, h/2, h/4, TFT_RED);
break;
case 7:
for (int i = 0; i < w; i++) {
uint8_t colorVal = map(i, 0, w, 0, 255);
display.drawFastVLine(i, 0, h, display.color888(colorVal, colorVal, colorVal));
}
break;
}
}四、效果检测
通过一轮的检测,发现屏幕右侧【靠近USB口处】,有一个明显的亮斑;
不知是不是发过来的时候,受到外力挤压导致的?…
可能拍摄效果不是很明显,实际肉眼观看还是挺明显的,特别是在纯色背景下;


20

