ESP32-S3版本的月薪喵特效视频来了!!!

最近抖音很火的月薪喵,很多小伙伴也想使用单片机尝试运行一下。这里我就更新一篇文章带大家入个门,使用ESP32-S3来完成这个月薪喵特效图显示的功能。
这两个月抖音月薪喵 相关话题播放量几十亿,二创跳舞视频、特效模板刷屏。微信 / QQ:聊天群高频出现,成了 “打工人通用表情包”。

下面就以0基础的方式展示ESP32如何加一个OLED显示屏来完成这个功能。

当前的环境采用的Arduino-IDE来开发ESP32,之前我也单独写过一篇教程,使用ESP32-IDF+VSCODE来开发ESP32,但是很多0基础的同学总是搭建不好这个环境,感觉复杂不好入门。那么今天这个方式开发ESP32算是最简单了。Arduino-IDE安装没有什么坑,下载安装包直接安装,也支持中文界面。ESP32的库我也已经下载了,放在网盘里了。直接下载解压到Arduino-IDE的安装目录下,就可以直接开发ESP32了,非常的简单方便。特别适合没有基础的同学入门。

这网盘里我提供了开发环境的搭建教程,离线文档,完整源码,接线说明,只要你有ESP32-S3,安装好环境,直接下载即可。
链接:https://pan.quark.cn/s/8ef75b40c6ab

一、Arduino-IDE软件下载

2.1 下载安装Arduino-IDE软件

链接:https://arduino-ide.org/

image-20260612155043163

2.2 ESP32官网说明

官网:https://www.espressif.com/en/sdks/esp-arduino

入门教程:https://docs.espressif.com/projects/arduino-esp32/en/latest/getting_started.html

image-20260612161740581

image-20260612161859569

2.3 安装指南

链接:https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html

image-20260612161937390

  • 稳定版发布链接:

    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    
  • 开发版本链接:

    https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
    

如果使用以上链接遇到连接和下载速度问题。可以使用 Jihulab 镜像网站:

  • 稳定版发布链接:

    https://jihulab.com/esp-mirror/espressif/arduino-esp32/-/raw/gh-pages/package_esp32_index_cn.json
    
  • 开发版本链接:

    https://jihulab.com/esp-mirror/espressif/arduino-esp32/-/raw/gh-pages/package_esp32_dev_index_cn.json
    

二、安装 ESP32 开发板支持包

2.1 添加ESP32开发板

Arduino IDE 默认不支持 ESP32,需要手动添加:

  1. 打开 Arduino IDE → 菜单栏 文件首选项

  2. 附加开发板管理器网址 中添加: (注意!! 如果有多个网址,需要使用逗号隔开)

    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    

image-20260612162250982

2.2 下载ESP32的固件

  1. 工具开发板开发板管理器

  2. 搜索 ESP32 → 找到 esp32 by Espressif Systems → 安装(建议安装 2.0.x 以上版本,对 S3 支持更好)

image-20260612160158549

2.4 下载报错解决办法

如果下载的时候报错了。

image-20260612164304924

可以手动复制出来下载地址下载: 将报错的提示栏的地址分别下载即可。

https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20260121/xtensa-esp-elf-14.2.0_20260121-x86_64-w64-mingw32.zip



https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20260121/riscv32-esp-elf-14.2.0_20260121-x86_64-w64-mingw32.zip



https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v16.3_20250913/riscv32-esp-elf-gdb-16.3_20250913-x86_64-w64-mingw32.zip


https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20251215/openocd-esp32-win64-0.12.0-esp32-20251215.zip

https://github.com/espressif/esptool/releases/download/v5.3.0/esptool-v5.3.0-windows-amd64.zip

https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-win32.zip

https://github.com/earlephilhower/mklittlefs/releases/download/4.0.2/x86_64-w64-mingw32-mklittlefs-db0513a.zip

https://github.com/espressif/arduino-esp32/releases/download/3.3.10/esp32-libs-3.3.10.zip

https://release-assets.githubusercontent.com/github-production-release-asset/70127218/bbbb8147-bd85-4035-8700-1ec93f1cebe7?sp=r&sv=2018-11-09&sr=b&spr=https&se=2026-06-12T09%3A45%3A57Z&rscd=attachment%3B+filename%3Desp32c3-libs-3.3.10.zip&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2026-06-12T08%3A45%3A52Z&ske=2026-06-12T09%3A45%3A57Z&sks=b&skv=2018-11-09&sig=cP%2BflbZ%2FVVhkOvJuv2DNYPAO8dxOd1k9%2Fq3an3eI9Vk%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc4MTI1NjYxNywibmJmIjoxNzgxMjU0ODE3LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.2cDSk3O6eSwcNGmRcsv4nfW6miHd71QyqZccjwbVpI8&response-content-disposition=attachment%3B%20filename%3Desp32c3-libs-3.3.10.zip


https://release-assets.githubusercontent.com/github-production-release-asset/70127218/9c17643e-3673-4ccb-9f0f-89a11883d1ec?sp=r&sv=2018-11-09&sr=b&spr=https&se=2026-06-12T09%3A45%3A45Z&rscd=attachment%3B+filename%3Desp32c5-libs-3.3.10.zip&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2026-06-12T08%3A45%3A43Z&ske=2026-06-12T09%3A45%3A45Z&sks=b&skv=2018-11-09&sig=zPeIpUf%2F0H3R9T0dFQkQLMBJbvN%2F0j9E6OqKs3OAt98%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc4MTI1NjY5MiwibmJmIjoxNzgxMjU0ODkyLCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.smHz9DFEH2hebiY7JA59o7w7n19KrwUwzSzFEkgcDFk&response-content-disposition=attachment%3B%20filename%3Desp32c5-libs-3.3.10.zip&response-content-type=application%2Foctet-stream


然后将下载下来的的包放到这里:C:\Users\Lenovo\AppData\Local\Arduino15\staging\packages

image-20260612164605940

然后重新进入到开发板管理页面:

image-20260612164656723

全部安装完成:

Downloading packages
esp32:esp-x32@2601
esp32:xtensa-esp-elf-gdb@16.3_20250913
esp32:esp-rv32@2601
esp32:riscv32-esp-elf-gdb@16.3_20250913
esp32:openocd-esp32@v0.12.0-esp32-20251215
esp32:esptool_py@5.3.0
esp32:mkspiffs@0.2.3
esp32:mklittlefs@4.0.2-db0513a
arduino:dfu-util@0.11.0-arduino5
esp32:esp32-libs@3.3.10
esp32:esp32c3-libs@3.3.10
esp32:esp32c5-libs@3.3.10
esp32:esp32c6-libs@3.3.10
esp32:esp32h2-libs@3.3.10
esp32:esp32p4-libs@3.3.10
esp32:esp32p4_es-libs@3.3.10
esp32:esp32s2-libs@3.3.10
esp32:esp32s3-libs@3.3.10
esp32:esp32@3.3.10
Installing esp32:esp-x32@2601
esp32:esp-x32@2601 installed
Installing esp32:xtensa-esp-elf-gdb@16.3_20250913
esp32:xtensa-esp-elf-gdb@16.3_20250913 installed
Installing esp32:esp-rv32@2601
esp32:esp-rv32@2601 installed
Installing esp32:riscv32-esp-elf-gdb@16.3_20250913
esp32:riscv32-esp-elf-gdb@16.3_20250913 installed
Installing esp32:openocd-esp32@v0.12.0-esp32-20251215
esp32:openocd-esp32@v0.12.0-esp32-20251215 installed
Installing esp32:esptool_py@5.3.0
esp32:esptool_py@5.3.0 installed
Installing esp32:mkspiffs@0.2.3
esp32:mkspiffs@0.2.3 installed
Installing esp32:mklittlefs@4.0.2-db0513a
esp32:mklittlefs@4.0.2-db0513a installed
Installing arduino:dfu-util@0.11.0-arduino5
arduino:dfu-util@0.11.0-arduino5 installed
Installing esp32:esp32-libs@3.3.10
esp32:esp32-libs@3.3.10 installed
Installing esp32:esp32c3-libs@3.3.10
esp32:esp32c3-libs@3.3.10 installed
Installing esp32:esp32c5-libs@3.3.10
esp32:esp32c5-libs@3.3.10 installed
Installing esp32:esp32c6-libs@3.3.10
esp32:esp32c6-libs@3.3.10 installed
Installing esp32:esp32h2-libs@3.3.10
esp32:esp32h2-libs@3.3.10 installed
Installing esp32:esp32p4-libs@3.3.10
esp32:esp32p4-libs@3.3.10 installed
Installing esp32:esp32p4_es-libs@3.3.10
esp32:esp32p4_es-libs@3.3.10 installed
Installing esp32:esp32s2-libs@3.3.10
esp32:esp32s2-libs@3.3.10 installed
Installing esp32:esp32s3-libs@3.3.10
esp32:esp32s3-libs@3.3.10 installed
Installing platform esp32:esp32@3.3.10
Platform esp32:esp32@3.3.10 installed

image-20260612171331814

可以选择开发板:

image-20260612175958461


三、编写LED灯测试代码

3.1 流水灯代码

// ESP32-S3 流水灯
// LED 连接引脚
int ledPins[] = {4, 5, 6};  // GPIO4, GPIO5, GPIO6
int ledCount = 3;            // LED 数量

void setup() {
  // 初始化所有 LED 引脚为输出模式
  for (int i = 0; i < ledCount; i++) {
    pinMode(ledPins[i], OUTPUT);
    digitalWrite(ledPins[i], LOW);  // 初始状态:熄灭
  }
}

void loop() {
  // 从左到右依次点亮(4 → 5 → 6)
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], HIGH);  // 点亮当前 LED
    delay(200);                       // 等待 200 毫秒
    digitalWrite(ledPins[i], LOW);   // 熄灭当前 LED
  }
  
  // 从右到左依次点亮(6 → 5 → 4)
  for (int i = ledCount - 1; i >= 0; i--) {
    digitalWrite(ledPins[i], HIGH);
    delay(200);
    digitalWrite(ledPins[i], LOW);
  }
}

3.2 上传代码

  1. USB 数据线(需支持数据传输)连接电脑与 S3 开发板
  2. 工具端口 选择对应 COM 口
  3. 点击 上传(箭头图标)
  4. S3 开发板 无需手动进入下载模式,IDE 会自动复位。

image-20260612180533967

image-20260612175855663

3.3 运行效果

image-20260612180517790

四、其他测试

4.1 OLED显示屏测试代码

动态时钟代码,时间会实时走时,并且支持按键调节。

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED显示屏配置
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C
#define SDA_PIN 18
#define SCL_PIN 17

// 按键配置(按下低电平)
#define KEY1 8
#define KEY2 9
#define KEY3 10

// LED配置(低电平亮)
#define LED1 4
#define LED2 5
#define LED3 6

// 蜂鸣器配置(高电平响)
#define BUZZER 1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// 时间变量
int hour = 18;
int minute = 22;
int second = 0;

// 上次更新时间
unsigned long lastTick = 0;

// 按键状态
bool lastKey1State = HIGH;
bool lastKey2State = HIGH;
bool lastKey3State = HIGH;

// 调节模式
bool adjustMode = false;
int adjustTarget = 0; // 0:无, 1:小时, 2:分钟

// 闪烁控制
unsigned long lastBlink = 0;
bool showAdjusting = true;

void setup() {
  Serial.begin(115200);
  
  // 初始化引脚
  pinMode(KEY1, INPUT_PULLUP);
  pinMode(KEY2, INPUT_PULLUP);
  pinMode(KEY3, INPUT_PULLUP);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  
  // 初始状态:关闭LED和蜂鸣器
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  digitalWrite(BUZZER, LOW);
  
  // 初始化I2C
  Wire.begin(SDA_PIN, SCL_PIN);
  
  // 初始化OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println(F("SSD1306初始化失败"));
    for(;;);
  }
  
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  
  // 开机蜂鸣提示
  beep(100);
  delay(100);
  beep(100);
  
  displayTime();
}

void loop() {
  unsigned long now = millis();
  
  // 时间更新(每秒一次)
  if(now - lastTick >= 1000 && !adjustMode) {
    lastTick = now;
    second++;
    if(second >= 60) {
      second = 0;
      minute++;
      if(minute >= 60) {
        minute = 0;
        hour++;
        if(hour >= 24) {
          hour = 0;
        }
      }
    }
    displayTime();
  }
  
  // 按键扫描
  scanKeys();
  
  // 调节模式下的闪烁效果
  if(adjustMode && (now - lastBlink >= 500)) {
    lastBlink = now;
    showAdjusting = !showAdjusting;
    displayTime();
  }
}

// 按键扫描函数
void scanKeys() {
  bool key1State = digitalRead(KEY1);
  bool key2State = digitalRead(KEY2);
  bool key3State = digitalRead(KEY3);
  
  // K1 - 进入/退出调节模式 / 切换到小时调节
  if(key1State == LOW && lastKey1State == HIGH) {
    beep(50);
    if(!adjustMode) {
      // 进入调节模式
      adjustMode = true;
      adjustTarget = 1;  // 先调节小时
      showAdjusting = true;
      digitalWrite(LED1, LOW);  // LED1亮指示调节模式
    } else {
      // 切换调节目标:小时 -> 分钟 -> 退出
      if(adjustTarget == 1) {
        adjustTarget = 2;
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, LOW);
      } else if(adjustTarget == 2) {
        adjustTarget = 0;
        adjustMode = false;
        digitalWrite(LED2, HIGH);
        digitalWrite(LED1, HIGH);
        // 退出时根据秒数决定是否进位
        if(second >= 30) {
          minute++;
          if(minute >= 60) {
            minute = 0;
            hour++;
            if(hour >= 24) hour = 0;
          }
        }
        second = 0;
        lastTick = millis();  // 重置计时
      }
    }
    displayTime();
  }
  
  // K2 - 增加时间(调节模式下)
  if(key2State == LOW && lastKey2State == HIGH && adjustMode) {
    beep(50);
    if(adjustTarget == 1) {
      hour++;
      if(hour >= 24) hour = 0;
    } else if(adjustTarget == 2) {
      minute++;
      if(minute >= 60) minute = 0;
    }
    displayTime();
  }
  
  // K3 - 减少时间(调节模式下)
  if(key3State == LOW && lastKey3State == HIGH && adjustMode) {
    beep(50);
    if(adjustTarget == 1) {
      hour--;
      if(hour < 0) hour = 23;
    } else if(adjustTarget == 2) {
      minute--;
      if(minute < 0) minute = 59;
    }
    displayTime();
  }
  
  // 保存按键状态
  lastKey1State = key1State;
  lastKey2State = key2State;
  lastKey3State = key3State;
}

// 显示时间
void displayTime() {
  display.clearDisplay();
  
  // 设置字体大小(最大化占满屏幕)
  display.setTextSize(4);
  
  // 构建时间字符串
  char timeStr[6];
  
  if(adjustMode && adjustTarget == 1 && !showAdjusting) {
    // 调节小时时,小时闪烁(显示"--")
    sprintf(timeStr, "--:%02d", minute);
  } 
  else if(adjustMode && adjustTarget == 2 && !showAdjusting) {
    // 调节分钟时,分钟闪烁(显示"--")
    sprintf(timeStr, "%02d:--", hour);
  }
  else {
    sprintf(timeStr, "%02d:%02d", hour, minute);
  }
  
  // 计算文字尺寸并居中
  int16_t x, y;
  uint16_t textWidth, textHeight;
  display.getTextBounds(timeStr, 0, 0, &x, &y, &textWidth, &textHeight);
  
  int16_t centerX = (SCREEN_WIDTH - textWidth) / 2;
  int16_t centerY = (SCREEN_HEIGHT - textHeight) / 2;
  
  display.setCursor(centerX, centerY);
  display.print(timeStr);
  
  // 调节模式下显示提示图标(小圆点或小字)
  if(adjustMode) {
    display.setTextSize(1);
    if(adjustTarget == 1) {
      display.setCursor(2, 2);
      display.print("H");
    } else if(adjustTarget == 2) {
      display.setCursor(2, 2);
      display.print("M");
    }
  }
  
  display.display();
}

// 蜂鸣器发声函数
void beep(int duration) {
  digitalWrite(BUZZER, HIGH);
  delay(duration);
  digitalWrite(BUZZER, LOW);
}

image-20260613094553883

image-20260613164008831

image-20260613164026863

4.2 连接华为云-MQTT上传测试

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <PubSubClient.h>

// ==================== OLED配置 ====================
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C
#define SDA_PIN 18
#define SCL_PIN 17

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// ==================== LED配置 ====================
#define LED1 4
#define LED2 5
#define LED3 6

// ==================== WiFi配置 ====================
#define CONNECT_WIFI "abc"
#define CONNECT_PASS "1126626497"

// ==================== MQTT配置(华为云IoTDA)====================
#define MQTT_SERVER "0942f78f41.st1.iotda-device.cn-north-4.myhuaweicloud.com"
#define MQTT_PORT 1883

#define MQTT_ClientID "699fb6167f2e6c302f57c687_dev1_0_0_2026022603"
#define MQTT_UserName "699fb6167f2e6c302f57c687_dev1"
#define MQTT_PassWord "a1b46c94ef623595a5650a81d0647600d3c39f55282865194b852c9142fa2514"

#define SET_TOPIC "$oc/devices/699fb6167f2e6c302f57c687_dev1/sys/messages/down"
#define POST_TOPIC "$oc/devices/699fb6167f2e6c302f57c687_dev1/sys/properties/report"

// ==================== 模拟传感器数据 ====================
int DHT11_T = 28;
int DHT11_H = 65;
float BH1750 = 125.5;
float MQ135 = 85.3;
int Status = 1;
int LD2402 = 1;
int LED_SW = 1;
int Brightness = 80;
int run_mode = 0;

// ==================== 全局变量 ====================
WiFiClient espClient;
PubSubClient client(espClient);

unsigned long lastUploadTime = 0;
const unsigned long uploadInterval = 1000;  // 1秒上传一次

// 连接状态
bool wifiConnected = false;
bool mqttConnected = false;

// ==================== 函数声明 ====================
void displayMessage(String line1, String line2 = "", String line3 = "", String line4 = "");
void updateDisplay();
void blinkLED(int pin, int duration);
void connectWiFi();
void connectMQTT();
void publishData();
void callback(char* topic, byte* payload, unsigned int length);

// ==================== OLED显示函数 ====================
void displayMessage(String line1, String line2, String line3, String line4) {
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);
  
  display.setCursor(0, 0);
  display.println(line1);
  display.setCursor(0, 16);
  display.println(line2);
  display.setCursor(0, 32);
  display.println(line3);
  display.setCursor(0, 48);
  display.println(line4);
  
  display.display();
}

void updateDisplay() {
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  
  // 第一行:WiFi状态
  display.setTextSize(1);
  display.setCursor(0, 0);
  if(wifiConnected) {
    display.print("WiFi: OK");
  } else {
    display.print("WiFi: Connecting...");
  }
  
  // 第二行:MQTT状态
  display.setCursor(0, 16);
  if(mqttConnected) {
    display.print("MQTT: Connected");
  } else {
    display.print("MQTT: Disconnected");
  }
  
  // 第三行:上传次数或数据
  display.setCursor(0, 32);
  display.print("Uploading...");
  
  // 第四行:显示温度湿度示例
  display.setCursor(0, 48);
  display.print("T:");
  display.print(DHT11_T);
  display.print("C H:");
  display.print(DHT11_H);
  display.print("%");
  
  display.display();
}

// ==================== LED闪烁函数 ====================
void blinkLED(int pin, int duration) {
  digitalWrite(pin, LOW);   // 低电平亮
  delay(duration);
  digitalWrite(pin, HIGH);  // 关闭
}

// ==================== WiFi连接 ====================
void connectWiFi() {
  displayMessage("Connecting WiFi...", "SSID: " + String(CONNECT_WIFI), "", "");
  
  WiFi.begin(CONNECT_WIFI, CONNECT_PASS);
  
  int attempts = 0;
  while(WiFi.status() != WL_CONNECTED && attempts < 40) {  // 最多等待20秒
    delay(500);
    attempts++;
    displayMessage("Connecting WiFi...", "SSID: " + String(CONNECT_WIFI), "Attempt: " + String(attempts), "");
  }
  
  if(WiFi.status() == WL_CONNECTED) {
    wifiConnected = true;
    displayMessage("WiFi Connected!", "IP: " + WiFi.localIP().toString(), "", "");
    delay(1500);
  } else {
    wifiConnected = false;
    displayMessage("WiFi Failed!", "Please check network", "", "");
    delay(3000);
  }
}

// ==================== MQTT连接 ====================
void connectMQTT() {
  client.setServer(MQTT_SERVER, MQTT_PORT);
  client.setCallback(callback);
  
  displayMessage("Connecting MQTT...", "Server: " + String(MQTT_SERVER), "", "");
  
  int attempts = 0;
  while(!client.connected() && attempts < 20) {
    if(client.connect(MQTT_ClientID, MQTT_UserName, MQTT_PassWord)) {
      mqttConnected = true;
      client.subscribe(SET_TOPIC);
      displayMessage("MQTT Connected!", "Subscribed to topic", "", "");
      delay(1500);
    } else {
      attempts++;
      displayMessage("MQTT Failed...", "Retry: " + String(attempts), "Error: " + String(client.state()), "");
      delay(2000);
    }
  }
}

// ==================== MQTT回调函数 ====================
void callback(char* topic, byte* payload, unsigned int length) {
  String message;
  for(int i = 0; i < length; i++) {
    message += (char)payload[i];
  }
  
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  Serial.println(message);
  
  // 可以在这里解析下行指令
  displayMessage("CMD Received", message.substring(0, 20), "", "");
  delay(1000);
  updateDisplay();
}

// ==================== 发布数据 ====================
void publishData() {
  if(!client.connected()) {
    connectMQTT();
  }
  
  char data_buff[512];
  
  // 模拟数据变化(让数据看起来是动态的)
  static int counter = 0;
  counter++;
  
  // 让数据有微小变化,便于观察
  DHT11_T = 28 + (counter % 3);
  DHT11_H = 65 + (counter % 5);
  BH1750 = 125.5 + (counter % 10) * 0.1;
  MQ135 = 85.3 + (counter % 8) * 0.1;
  
  sprintf(data_buff,
    "{\"services\":[{\"service_id\":\"stm32\",\"properties\":{"
    "\"DHT11_T\":%.1f,"
    "\"DHT11_H\":%.1f,"
    "\"BH1750\":%.1f,"
    "\"MQ135\":%.1f,"
    "\"Status\":%d,"
    "\"LD2402\":%d,"
    "\"LED_SW\":%d,"
    "\"Brightness\":%d,"
    "\"run_mode\":%d"
    "}}]}",
    (float)DHT11_T,
    (float)DHT11_H,
    BH1750,
    MQ135,
    Status,
    LD2402,
    LED_SW,
    Brightness,
    run_mode);
  
  bool success = client.publish(POST_TOPIC, data_buff);
  
  if(success) {
    // 上传成功,LED1闪烁一次
    blinkLED(LED1, 100);
    Serial.println("Data published successfully!");
    Serial.println(data_buff);
    
    // 更新显示
    updateDisplay();
  } else {
    Serial.println("Publish failed!");
    displayMessage("Publish Failed!", "Retrying...", "", "");
  }
}

// ==================== 初始化 ====================
void setup() {
  Serial.begin(115200);
  
  // 初始化LED引脚
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  
  // 关闭所有LED(高电平)
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  
  // 初始化OLED
  Wire.begin(SDA_PIN, SCL_PIN);
  if(!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println(F("OLED初始化失败"));
    for(;;);
  }
  
  display.clearDisplay();
  displayMessage("System Starting...", "ESP32-S3", "MQTT IoT", "");
  delay(2000);
  
  // 连接WiFi
  connectWiFi();
  
  // 连接MQTT
  if(wifiConnected) {
    connectMQTT();
  }
  
  // 开机成功闪烁
  blinkLED(LED2, 200);
  blinkLED(LED3, 200);
  
  displayMessage("System Ready!", "Uploading every 1s", "", "");
  delay(1000);
  
  updateDisplay();
}

// ==================== 主循环 ====================
void loop() {
  // 保持MQTT连接
  if(wifiConnected && !client.connected()) {
    connectMQTT();
  }
  
  if(client.connected()) {
    client.loop();
  }
  
  // 每秒上传一次数据
  unsigned long now = millis();
  if(now - lastUploadTime >= uploadInterval) {
    lastUploadTime = now;
    
    if(wifiConnected && client.connected()) {
      publishData();
    } else {
      displayMessage("Connection Lost!", "Reconnecting...", "", "");
      if(WiFi.status() != WL_CONNECTED) {
        connectWiFi();
      }
      if(wifiConnected && !client.connected()) {
        connectMQTT();
      }
    }
  }
}

image-20260613164152317

image-20260613164238857

4.3 恐龙游戏

设计一个完整的恐龙游戏。恐龙需要跳跃躲避障碍物。

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED配置
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C
#define SDA 18
#define SCL 17
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// LED定义 - 低电平亮
#define LED1 4
#define LED2 5
#define LED3 6

// 蜂鸣器 - 高电平响
#define BEEP 1

// 按键定义 - 按下低电平
#define K1 8   // 跳跃
#define K2 9   // 重置/开始
#define K3 10  // 保留/下蹲(可选)

// 游戏参数
#define GROUND_Y 56      // 地面Y坐标
#define DINO_WIDTH 12
#define DINO_HEIGHT 16
#define DINO_X 20        // 恐龙固定X位置

// 恐龙状态
int dinoY = GROUND_Y - DINO_HEIGHT;  // 地面上的Y坐标
float dinoVy = 0;
boolean isJumping = false;
boolean isCrouching = false;  // 可选功能

// 障碍物
struct Obstacle {
  int x;
  int width;
  int height;
  boolean active;
};

Obstacle obstacles[3];  // 最多3个障碍物
int obstacleSpeed = 4;
int obstacleSpawnCounter = 0;
int obstacleSpawnDelay = 60;  // 帧数间隔

// 游戏状态
int score = 0;
int highScore = 0;
boolean gameRunning = false;
boolean gameOver = false;
int frameCount = 0;

// 按键防抖
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 150;

// 跳跃检测
boolean lastK1State = HIGH;
boolean jumpRequested = false;

void setup() {
  Serial.begin(115200);
  
  // 初始化LED
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  digitalWrite(LED1, HIGH);  // 灭
  digitalWrite(LED2, HIGH);
  digitalWrite(LED3, HIGH);
  
  // 蜂鸣器
  pinMode(BEEP, OUTPUT);
  digitalWrite(BEEP, LOW);
  
  // 按键
  pinMode(K1, INPUT_PULLUP);
  pinMode(K2, INPUT_PULLUP);
  pinMode(K3, INPUT_PULLUP);
  
  // OLED初始化
  Wire.begin(SDA, SCL);
  if(!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println("SSD1306分配失败");
    for(;;);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  
  // 初始化障碍物
  for(int i = 0; i < 3; i++) {
    obstacles[i].active = false;
  }
  
  // 显示标题画面
  drawTitleScreen();
}

void loop() {
  handleInput();
  
  if(!gameRunning && !gameOver) {
    // 等待开始
    drawTitleScreen();
    delay(50);
    return;
  }
  
  if(gameOver) {
    drawGameOverScreen();
    delay(50);
    return;
  }
  
  // 游戏运行中
  updateGame();
  drawGame();
  updateLEDs();
  delay(30);  // 约33fps
}

void handleInput() {
  unsigned long currentTime = millis();
  
  // 读取按键状态(按下是LOW)
  int k1State = digitalRead(K1);
  int k2State = digitalRead(K2);
  
  // 跳跃 - 上升沿检测
  if(lastK1State == HIGH && k1State == LOW) {
    if(currentTime - lastDebounceTime > debounceDelay) {
      lastDebounceTime = currentTime;
      if(gameRunning && !isJumping) {
        jumpRequested = true;
        playSound(1000, 50);
      } else if(!gameRunning && gameOver) {
        resetGame();
      } else if(!gameRunning && !gameOver) {
        startGame();
      }
    }
  }
  lastK1State = k1State;
  
  // 重置/开始按钮 K2
  if(k2State == LOW) {
    if(currentTime - lastDebounceTime > debounceDelay) {
      lastDebounceTime = currentTime;
      resetGame();
      startGame();
    }
  }
}

void startGame() {
  gameRunning = true;
  gameOver = false;
  score = 0;
  obstacleSpeed = 4;
  obstacleSpawnDelay = 60;
  
  for(int i = 0; i < 3; i++) {
    obstacles[i].active = false;
  }
  
  dinoY = GROUND_Y - DINO_HEIGHT;
  isJumping = false;
  dinoVy = 0;
  frameCount = 0;
}

void resetGame() {
  gameRunning = false;
  gameOver = false;
  score = 0;
}

void updateGame() {
  // 1. 更新恐龙跳跃物理
  if(jumpRequested && !isJumping) {
    isJumping = true;
    dinoVy = -6.5;  // 向上的初速度
    jumpRequested = false;
  }
  
  if(isJumping) {
    dinoVy += 0.5;  // 重力加速度
    dinoY += dinoVy;
    
    if(dinoY >= GROUND_Y - DINO_HEIGHT) {
      dinoY = GROUND_Y - DINO_HEIGHT;
      isJumping = false;
      dinoVy = 0;
    }
  }
  
  // 2. 生成障碍物
  if(obstacleSpawnCounter <= 0) {
    spawnObstacle();
    obstacleSpawnCounter = random(40, 80);
  } else {
    obstacleSpawnCounter--;
  }
  
  // 3. 更新障碍物位置和碰撞检测
  for(int i = 0; i < 3; i++) {
    if(obstacles[i].active) {
      obstacles[i].x -= obstacleSpeed;
      
      // 超出屏幕则移除
      if(obstacles[i].x + obstacles[i].width < 0) {
        obstacles[i].active = false;
        score++;
      }
      
      // 碰撞检测
      if(checkCollision(obstacles[i])) {
        gameOver = true;
        gameRunning = false;
        if(score > highScore) {
          highScore = score;
        }
        playSound(500, 300);  // 游戏结束声音
        break;
      }
    }
  }
  
  // 4. 动态难度:分数越高越快
  if(score > 200) obstacleSpeed = 8;
  else if(score > 100) obstacleSpeed = 7;
  else if(score > 50) obstacleSpeed = 6;
  else if(score > 20) obstacleSpeed = 5;
  else obstacleSpeed = 4;
  
  // 障碍物生成间隔随分数减少
  int spawnBase = 70 - (score / 10);
  if(spawnBase < 35) spawnBase = 35;
  obstacleSpawnDelay = spawnBase;
  
  frameCount++;
}

boolean checkCollision(Obstacle &obs) {
  // 简易AABB碰撞检测
  int dinoLeft = DINO_X;
  int dinoRight = DINO_X + DINO_WIDTH;
  int dinoTop = dinoY;
  int dinoBottom = dinoY + DINO_HEIGHT;
  
  int obsLeft = obs.x;
  int obsRight = obs.x + obs.width;
  int obsTop = GROUND_Y - obs.height;
  int obsBottom = GROUND_Y;
  
  if(dinoRight > obsLeft && dinoLeft < obsRight &&
     dinoBottom > obsTop && dinoTop < obsBottom) {
    return true;
  }
  return false;
}

void spawnObstacle() {
  for(int i = 0; i < 3; i++) {
    if(!obstacles[i].active) {
      int type = random(0, 3);
      obstacles[i].x = SCREEN_WIDTH;
      
      switch(type) {
        case 0:  // 小仙人掌
          obstacles[i].width = 6;
          obstacles[i].height = 12;
          break;
        case 1:  // 大仙人掌
          obstacles[i].width = 8;
          obstacles[i].height = 16;
          break;
        default:  // 鸟(低)
          obstacles[i].width = 10;
          obstacles[i].height = 8;
          break;
      }
      obstacles[i].active = true;
      break;
    }
  }
}

void drawGame() {
  display.clearDisplay();
  
  // 绘制地面
  display.drawLine(0, GROUND_Y, SCREEN_WIDTH, GROUND_Y, SSD1306_WHITE);
  
  // 绘制恐龙
  drawDino(DINO_X, dinoY);
  
  // 绘制障碍物
  for(int i = 0; i < 3; i++) {
    if(obstacles[i].active) {
      int obsY = GROUND_Y - obstacles[i].height;
      display.fillRect(obstacles[i].x, obsY, 
                       obstacles[i].width, obstacles[i].height, 
                       SSD1306_WHITE);
    }
  }
  
  // 显示分数
  display.setCursor(0, 0);
  display.print("Score: ");
  display.print(score);
  display.setCursor(0, 10);
  display.print("Best: ");
  display.print(highScore);
  
  display.display();
}

void drawDino(int x, int y) {
  // 绘制一个简单的恐龙(站立或跳跃状态)
  if(isJumping) {
    // 跳跃姿态:腿向后
    display.fillRect(x, y, 5, 6, SSD1306_WHITE);  // 身体
    display.fillRect(x+5, y+2, 4, 4, SSD1306_WHITE); // 头
    display.fillRect(x+2, y+6, 2, 4, SSD1306_WHITE);  // 腿
    display.fillRect(x+7, y+6, 2, 4, SSD1306_WHITE);
    // 眼睛
    display.fillRect(x+7, y+3, 1, 1, SSD1306_BLACK);
  } else {
    // 站立姿态
    display.fillRect(x, y, 5, 8, SSD1306_WHITE);  // 身体
    display.fillRect(x+5, y+2, 4, 5, SSD1306_WHITE); // 头
    display.fillRect(x, y+8, 2, 4, SSD1306_WHITE);   // 后腿
    display.fillRect(x+3, y+8, 2, 4, SSD1306_WHITE);  // 前腿
    // 眼睛
    display.fillRect(x+7, y+3, 1, 1, SSD1306_BLACK);
    // 刺
    display.fillRect(x+2, y-2, 2, 2, SSD1306_WHITE);
    display.fillRect(x+4, y-3, 2, 2, SSD1306_WHITE);
  }
}

void drawTitleScreen() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(20, 20);
  display.print("DINO GAME");
  display.setCursor(15, 35);
  display.print("Press K1/K2");
  display.setCursor(25, 45);
  display.print("To Start");
  display.display();
}

void drawGameOverScreen() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(25, 20);
  display.print("GAME OVER");
  display.setCursor(15, 35);
  display.print("Score: ");
  display.print(score);
  display.setCursor(15, 45);
  display.print("High: ");
  display.print(highScore);
  display.setCursor(10, 55);
  display.print("Press K2 to play");
  display.display();
}

void updateLEDs() {
  // LED1: 跳跃时闪烁
  if(isJumping) {
    digitalWrite(LED1, (frameCount % 6 < 3) ? LOW : HIGH);
  } else {
    digitalWrite(LED1, HIGH);
  }
  
  // LED2: 游戏运行时常亮(低电平亮)
  if(gameRunning) {
    digitalWrite(LED2, LOW);
  } else {
    digitalWrite(LED2, HIGH);
  }
  
  // LED3: 分数闪烁效果
  if(gameRunning && score > 0 && (frameCount % 20 < 10)) {
    digitalWrite(LED3, LOW);
  } else {
    digitalWrite(LED3, HIGH);
  }
}

void playSound(int frequency, int duration) {
  // 简单的PWM发声
  unsigned long startTime = millis();
  int period = 1000000 / frequency;
  int halfPeriod = period / 2;
  
  while(millis() - startTime < duration) {
    digitalWrite(BEEP, HIGH);
    delayMicroseconds(halfPeriod);
    digitalWrite(BEEP, LOW);
    delayMicroseconds(halfPeriod);
  }
  digitalWrite(BEEP, LOW);
}
库安装说明

在Arduino IDE中安装以下库:

  1. Adafruit GFX Library - 图形库
  2. Adafruit SSD1306 - OLED驱动

安装方法:工具 → 管理库 → 搜索并安装

功能说明
按键功能
K1 (G8)跳跃 / 开始游戏
K2 (G9)重置 / 开始新游戏
LED功能
LED1 (G4)跳跃时闪烁
LED2 (G5)游戏运行时常亮
LED3 (G6)得分时闪烁效果
蜂鸣器事件
Beep跳跃、游戏结束
游戏玩法
  1. 上电后显示标题界面
  2. 按K1或K2开始游戏
  3. 按K1跳跃避开仙人掌
  4. 每避开一个障碍物得1分
  5. 分数越高速度越快
  6. 碰撞后显示Game Over,按K2重新开始

image-20260613164301233

image-20260613164311199

4.3 显示月薪喵

【1】先找到一个月薪喵的视频

【2】使用FFmpeg将视频转为图片

C:\Users\Lenovo\Desktop\临时开发资料\ArduinoIDE开发ESP32-S3\素材>ffmpeg -i "6月13日.mp4" -vf "scale=128:64:force_original_aspect_ratio=1,pad=128:64:(ow-iw)/2:(oh-ih)/2" %08d.bmp

【3】使用图片取模软件将图片转为.c数组

image-20260613164624490

【4】这是取模完成的数组

image-20260613164647586

image-20260613165020349

image-20260613165041529


const unsigned char gImage_a31[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X08,0X00,0X00,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X3F,0X1F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0XFC,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X03,0XE0,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X1F,0X80,0X01,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X7E,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X01,0XF0,0X00,0X01,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X0F,0XC0,0X00,0X01,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X3E,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X01,0XF8,0X00,0X00,0X00,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XE0,0X00,0X00,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X1F,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X7C,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X1E,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X3E,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X03,0XFE,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X0F,0XC6,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X3F,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X01,0XFC,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X0F,0XF0,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X01,0XFF,0X80,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFC,0X00,0X3F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X99,0XFF,0XE0,0X00,0X1F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XE0,0X00,0X00,0X1F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X1F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XC0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X40,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X78,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X0F,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X07,0XC0,0X07,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0XF0,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0X83,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFC,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X03,0XE0,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0X80,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X0E,0X00,0X03,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3C,0XFF,0X83,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X79,0XFF,0XC3,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XE3,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
const unsigned char gImage_a30[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X07,0XFF,0X80,0X0F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X0F,0XF7,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X19,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X19,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X0E,0X18,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X3F,0X18,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEC,0X00,0X00,0X73,0X10,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X01,0XE3,0X93,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XC3,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XE3,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X1E,0X67,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X18,0X3E,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7C,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X73,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X31,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEE,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFF,0XEF,0XF0,0X19,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XE3,0XFF,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X60,0X0F,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0XF0,0X0E,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XF8,0X06,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0E,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1C,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
const unsigned char gImage_a29[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X1F,0XE0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X01,0XFC,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XC0,0X00,0X07,0XE0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X1C,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X20,0X00,0X1C,0X0F,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF0,0X00,0X3C,0X03,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0X00,0X38,0X01,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X98,0X00,0X78,0X00,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8C,0X00,0X78,0X00,0X71,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8C,0X00,0X71,0X80,0X39,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8E,0X00,0X71,0XF3,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X86,0X00,0X00,0XE7,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0X00,0X00,0X06,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0X80,0X00,0X0E,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0X80,0X00,0X0E,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC0,0X00,0X0C,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XC0,0X00,0X00,0X5F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XC0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X60,0X00,0X03,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X70,0X00,0X07,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X30,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X3C,0X04,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X0F,0XFF,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0X00,0X00,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XE0,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF6,0X7E,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF6,0X1F,0XF0,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X1F,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X01,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X07,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
const unsigned char gImage_a28[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XF8,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3E,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0X80,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X39,0XE0,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X38,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X70,0X1E,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X70,0X07,0XC0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XE3,0X01,0XF8,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X63,0XC3,0X7E,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X03,0XC7,0X0F,0XC0,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X01,0X87,0X03,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X0F,0X00,0X3F,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X0E,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X0E,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X0C,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0X80,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0X80,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0XB0,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X07,0XBE,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X7F,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFC,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X01,0XE0,0X03,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X03,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3A,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3E,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X0F,0XF8,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XF7,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X07,0XF7,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0XFF,0X86,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X87,0XFF,0X0E,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
const unsigned char gImage_a27[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X02,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X0F,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XFF,0XF8,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0X00,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0X00,0X00,0X00,0X06,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X01,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X03,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X73,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0X87,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XC1,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XC3,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X7E,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X18,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0X01,0XFE,0XFF,0XEF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0X00,0XC0,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X01,0XE0,0X1F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};

更多推荐