• 方案介绍
  • 相关推荐
申请入驻 产业图谱

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

06/15 14:45
181
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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/

2.2 ESP32官网说明

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

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

2.3 安装指南

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

  • 稳定版发布链接:
    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
    

2.2 下载ESP32的固件

  1. 工具开发板开发板管理器
  2. 搜索 ESP32 → 找到 esp32 by Espressif Systems → 安装(建议安装 2.0.x 以上版本,对 S3 支持更好)

2.4 下载报错解决办法

如果下载的时候报错了。

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

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:UsersLenovoAppDataLocalArduino15stagingpackages

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

全部安装完成:

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

可以选择开发板:


三、编写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 会自动复位。

3.3 运行效果

四、其他测试

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);
}

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();
      }
    }
  }
}

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重新开始

4.3 显示月薪喵

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

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

C:UsersLenovoDesktop临时开发资料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数组

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


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,
};

相关推荐