加载条本身自带动画效果,可以判断单片机是否卡死
特别优化性能,单色屏幕可以流畅播放!
核心代码:
void load_bar()
{
u8g2.clearBuffer();
unsigned long time;
time = millis();
for (int W = 0; W <= 128;) // W:加载条进度(长度),修改W起始值改变加载条水平方向位置
{
for (int mode = 0; mode < 4; mode++)
{
u8g2.clearBuffer();
for (int H = 48; H < 64; H++) // H:加载条高度,修改H起始值改变加载条竖直方向位置
{
switch (mode)
{
case 0:
for (int j = 0; j < W; j += 4)
{
u8g2.drawPixel(j, H);
u8g2.drawPixel(j + 1, H);
}
mode = 1;
break;
case 1:
for (int j = 0; j < W; j += 4)
{
u8g2.drawPixel(j + 1, H);
u8g2.drawPixel(j + 2, H);
}
mode = 2;
break;
case 2:
for (int j = 0; j < W; j += 4)
{
u8g2.drawPixel(j + 2, H);
u8g2.drawPixel(j + 3, H);
}
mode = 3;
break;
case 3:
for (int j = 0; j < W; j += 4)
{
u8g2.drawPixel(j, H);
u8g2.drawPixel(j + 3, H);
}
mode = 0;
break;
}
}
// u8g2.drawStr(0, 48, "Loading..."); // 在指定位置显示字符串
u8g2.sendBuffer();
delay(10);
}
if ((millis() - time) > (DURATION / 4))
{
time = millis();
W += 32;
}
}
}
效果演示:
效果演示