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,需要手动添加:
- 打开 Arduino IDE → 菜单栏
文件→首选项 - 在 附加开发板管理器网址 中添加: (注意!! 如果有多个网址,需要使用逗号隔开)
https://espressif.github.io/arduino-esp32/package_esp32_index.json
2.2 下载ESP32的固件
- 工具 → 开发板 → 开发板管理器
- 搜索
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 上传代码
- 用 USB 数据线(需支持数据传输)连接电脑与 S3 开发板
工具→端口选择对应 COM 口- 点击 上传(箭头图标)
- 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中安装以下库:
- Adafruit GFX Library - 图形库
- Adafruit SSD1306 - OLED驱动
安装方法:工具 → 管理库 → 搜索并安装
功能说明
| 按键 | 功能 |
|---|---|
| K1 (G8) | 跳跃 / 开始游戏 |
| K2 (G9) | 重置 / 开始新游戏 |
| LED | 功能 |
|---|---|
| LED1 (G4) | 跳跃时闪烁 |
| LED2 (G5) | 游戏运行时常亮 |
| LED3 (G6) | 得分时闪烁效果 |
| 蜂鸣器 | 事件 |
|---|---|
| Beep | 跳跃、游戏结束 |
游戏玩法
- 上电后显示标题界面
- 按K1或K2开始游戏
- 按K1跳跃避开仙人掌
- 每避开一个障碍物得1分
- 分数越高速度越快
- 碰撞后显示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,
};
181