Compare commits
No commits in common. "ea3541008f780b1a70e578d2914bfe2518c94c1a" and "88655e73e8951cb1fd4da2bfd8e4555fb9163c64" have entirely different histories.
ea3541008f
...
88655e73e8
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@ -42,10 +42,6 @@
|
||||
"vector": "c",
|
||||
"freertos.h": "c",
|
||||
"task.h": "c",
|
||||
"led_strip.h": "c",
|
||||
"esp_event.h": "c",
|
||||
"string.h": "c",
|
||||
"i2c.h": "c",
|
||||
"esp_log.h": "c"
|
||||
"led_strip.h": "c"
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
idf_component_register(SRCS "ambient_light.c" "temperature.c" "embedded_display.c" "ui.c" "mqtt.c" "main.c" "wifi.c" "light.c" "mqtt.c"
|
||||
idf_component_register(SRCS "ui.c" "mqtt.c" "main.c" "wifi.c" "light.c" "mqtt.c"
|
||||
INCLUDE_DIRS ".")
|
@ -64,7 +64,7 @@ menu "MQTT Configuration"
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Encoder Configuration"
|
||||
menu "GPIO Configuration"
|
||||
config ENCODER_0_CLK_PIN
|
||||
int "encoder 0 click GPIO"
|
||||
range 1 32
|
||||
@ -104,24 +104,3 @@ menu "Encoder Configuration"
|
||||
Encoder 1 switch pin
|
||||
|
||||
endmenu
|
||||
|
||||
menu "I2C Configuration"
|
||||
config I2C_SCL
|
||||
int "I2C SCL GPIO"
|
||||
range 1 32
|
||||
default 8
|
||||
help
|
||||
I2C SCL GPIO
|
||||
config I2C_SDA
|
||||
int "I2C SDA GPIO"
|
||||
range 1 32
|
||||
default 10
|
||||
help
|
||||
I2C SDA GPIO
|
||||
config I2C_NUM
|
||||
int "I2C NUM"
|
||||
range 0 1
|
||||
default 0
|
||||
help
|
||||
I2C NUM
|
||||
endmenu
|
@ -1,203 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "driver/i2c.h"
|
||||
#include "embedded_display.c"
|
||||
|
||||
#include "esp_log.h"
|
||||
|
||||
#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/
|
||||
#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */
|
||||
#define ACK_VAL 0x0 /*!< I2C ack value */
|
||||
#define NACK_VAL 0x1 /*!< I2C nack value */
|
||||
|
||||
#define I2C_MASTER_NUM CONFIG_I2C_NUM
|
||||
|
||||
#define APDS_9930_ADDRESS 0x39
|
||||
|
||||
#define APDS_9930_CMD_REPEATED 0x80 // 命令重复地址
|
||||
#define APDS_9930_CMD_AUTO_INCREMENT 0x90 // 命令自动递增地址
|
||||
|
||||
// ----------------------------------- 描述 默认值
|
||||
#define APDS_9930_REG_ENABLE 0x00 // 状态和中断的启用 0x00
|
||||
#define APDS_9930_REG_ATIME 0x01 // ALS ADC 时间 0xff
|
||||
#define APDS_9930_REG_PTIME 0x02 // Proximity ADC 时间 0xff
|
||||
#define APDS_9930_REG_WTIME 0x03 // Wait 时间 0xff
|
||||
#define APDS_9930_REG_PPULSE 0x0e // Proximity 脉冲计数 0x00
|
||||
#define APDS_9930_REG_CONTROL 0x0f // 增益控制 0x00
|
||||
#define APDS_9930_REG_Ch0DATAL 0x14 // Ch0 ADC Low data 0x00
|
||||
#define APDS_9930_REG_Ch0DATAH 0x15 // Ch0 ADC High data 0x00
|
||||
#define APDS_9930_REG_Ch1DATAL 0x16 // Ch1 ADC Low data 0x00
|
||||
#define APDS_9930_REG_Ch1DATAH 0x17 // Ch1 ADC High data 0x00
|
||||
#define APDS_9930_REG_PDATAL 0x18 // Proximity ADC Low data 0x00
|
||||
#define APDS_9930_REG_PDATAH 0x19 // Proximity ADC High data 0x00
|
||||
#define APDS_9930_REG_OFFSET 0x1e // Proximity 偏移 --
|
||||
|
||||
#define APDS_9930_ATIME_VALUE 0xff // 2.7 ms – minimum ALS integration time
|
||||
#define APDS_9930_WTIME_VALUE 0xff // 2.7 ms – minimum Wait time
|
||||
#define APDS_9930_PTIME_VALUE 0xff // 2.7 ms – minimum Prox integration time
|
||||
#define APDS_9930_PPULSE_VALUE 0x08 // Minimum prox pulse count
|
||||
#define APDS_9930_CONTROL_VALUE \
|
||||
0b00101010 // LED 100mA, Proximity Diode Ch1,
|
||||
// Proximity 4X, ALS 16 X
|
||||
#define APDS_9930_ENABLE_VALUE 0b01000111
|
||||
#define APDS_9930_OFFSET_VALUE 0x8f
|
||||
|
||||
#define AMBIENT_LIGHT_TAG "ambient-light"
|
||||
|
||||
esp_err_t apds_9930_write(uint8_t command, uint8_t data) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_WRITE,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, command, ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, data, ACK_CHECK_EN);
|
||||
i2c_master_stop(cmd);
|
||||
esp_err_t error =
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "write failed. %d", error);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
esp_err_t apds_9930_write_word(uint8_t command, uint8_t data_l,
|
||||
uint8_t data_h) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_WRITE,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, command, ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, data_l, ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, data_h, ACK_CHECK_EN);
|
||||
i2c_master_stop(cmd);
|
||||
esp_err_t error =
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "write failed. %d", error);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
esp_err_t apds_9930_read(uint8_t command, uint8_t* data) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_WRITE,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, command, ACK_CHECK_EN);
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_READ,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_read_byte(cmd, data, NACK_VAL);
|
||||
i2c_master_stop(cmd);
|
||||
esp_err_t error =
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "write failed. %d", error);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
esp_err_t apds_9930_read_word(uint8_t command, uint8_t* data_l,
|
||||
uint8_t* data_h) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_WRITE,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, command, ACK_CHECK_EN);
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, APDS_9930_ADDRESS << 1 | I2C_MASTER_READ,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_read_byte(cmd, data_l, ACK_VAL);
|
||||
i2c_master_read_byte(cmd, data_h, NACK_VAL);
|
||||
i2c_master_stop(cmd);
|
||||
esp_err_t error =
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "write failed. %d", error);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
void ambient_light_fetch(void* arg) {
|
||||
esp_err_t error;
|
||||
uint16_t als_ch0_raw;
|
||||
uint16_t als_ch1_raw;
|
||||
uint16_t proximity_raw;
|
||||
char als_ch0_str[10];
|
||||
char als_ch1_str[10];
|
||||
char proximity_str[10];
|
||||
uint8_t als_ch0_buffer[] = {0, 0};
|
||||
uint8_t als_ch1_buffer[] = {0, 0};
|
||||
uint8_t proximity_buffer[] = {0, 0};
|
||||
uint8_t enable_value;
|
||||
display_fill_rect(0, 2, 128, 8, 0x00);
|
||||
for (;;) {
|
||||
// Proximity
|
||||
error =
|
||||
apds_9930_read_word(APDS_9930_CMD_AUTO_INCREMENT | APDS_9930_REG_PDATAL,
|
||||
&(proximity_buffer[1]), &(proximity_buffer[0]));
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "read failed. %x", error);
|
||||
} else {
|
||||
proximity_raw = proximity_buffer[0] << 8 | proximity_buffer[1];
|
||||
sprintf(proximity_str, "Prox: % 4d ", proximity_raw);
|
||||
display_print8_str(8, 2, proximity_str);
|
||||
ESP_LOGD(AMBIENT_LIGHT_TAG, "Prox: %d %x, %x %x", proximity_raw,
|
||||
proximity_raw, proximity_buffer[0], proximity_buffer[1]);
|
||||
}
|
||||
// als ch0
|
||||
error = apds_9930_read_word(
|
||||
APDS_9930_CMD_AUTO_INCREMENT | APDS_9930_REG_Ch0DATAL,
|
||||
&(als_ch0_buffer[1]), &(als_ch0_buffer[0]));
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "read failed. %x", error);
|
||||
} else {
|
||||
als_ch0_raw = als_ch0_buffer[0] << 8 | als_ch0_buffer[1];
|
||||
sprintf(als_ch0_str, "Ch0: % 5d ", als_ch0_raw);
|
||||
display_print8_str(8, 4, als_ch0_str);
|
||||
ESP_LOGD(AMBIENT_LIGHT_TAG, "ALS Ch0: %d, %x", als_ch0_raw,
|
||||
als_ch0_raw);
|
||||
}
|
||||
// als ch1
|
||||
error = apds_9930_read_word(
|
||||
APDS_9930_CMD_AUTO_INCREMENT | APDS_9930_REG_Ch1DATAL,
|
||||
&(als_ch1_buffer[1]), &(als_ch1_buffer[0]));
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(AMBIENT_LIGHT_TAG, "read failed. %x", error);
|
||||
} else {
|
||||
als_ch1_raw = als_ch1_buffer[0] << 8 | als_ch1_buffer[1];
|
||||
sprintf(als_ch1_str, "Ch1: % 5d ", als_ch1_raw);
|
||||
display_print8_str(8, 6, als_ch1_str);
|
||||
ESP_LOGD(AMBIENT_LIGHT_TAG, "ALS Ch1: %d, %x", als_ch1_raw,
|
||||
als_ch1_raw);
|
||||
}
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
}
|
||||
display_fill_rect(0, 2, 128, 8, 0x00);
|
||||
}
|
||||
|
||||
void ambient_light_auto_fetch() {
|
||||
xTaskCreate(ambient_light_fetch, "ui_input_event", 2048, NULL, 10, NULL);
|
||||
}
|
||||
|
||||
void ambient_light_init() {
|
||||
// esp_log_level_set(AMBIENT_LIGHT_TAG, ESP_LOG_DEBUG);
|
||||
ESP_ERROR_CHECK(apds_9930_write(APDS_9930_CMD_REPEATED | APDS_9930_REG_ATIME,
|
||||
APDS_9930_ATIME_VALUE));
|
||||
ESP_ERROR_CHECK(apds_9930_write(APDS_9930_CMD_REPEATED | APDS_9930_REG_PTIME,
|
||||
APDS_9930_PTIME_VALUE));
|
||||
ESP_ERROR_CHECK(apds_9930_write(APDS_9930_CMD_REPEATED | APDS_9930_REG_PPULSE,
|
||||
APDS_9930_PPULSE_VALUE));
|
||||
ESP_ERROR_CHECK(apds_9930_write(
|
||||
APDS_9930_CMD_REPEATED | APDS_9930_REG_CONTROL, APDS_9930_CONTROL_VALUE));
|
||||
ESP_ERROR_CHECK(apds_9930_write(APDS_9930_CMD_REPEATED | APDS_9930_REG_OFFSET,
|
||||
APDS_9930_OFFSET_VALUE));
|
||||
ESP_ERROR_CHECK(apds_9930_write(APDS_9930_CMD_REPEATED | APDS_9930_REG_ENABLE,
|
||||
APDS_9930_ENABLE_VALUE));
|
||||
}
|
614
main/codetab.h
614
main/codetab.h
@ -1,614 +0,0 @@
|
||||
/************************************************************************************
|
||||
* Copyright (c), 2013, HelTec Automatic Technology co.,LTD.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Http: www.heltec.cn
|
||||
* Email: cn.heltec@gmail.com
|
||||
* WebShop: shop105719768.taobao.com
|
||||
*
|
||||
* File name: codetab.h
|
||||
* Project : OLED
|
||||
* Processor: STC89C52
|
||||
* Compiler : Keil C51 Compiler
|
||||
*
|
||||
* Author : 小林
|
||||
* Version: 1.00
|
||||
* Date : 2013.8.8
|
||||
* Email : hello14blog@gmail.com
|
||||
* Modification: none
|
||||
*
|
||||
* Description:
|
||||
* 1. 128*64点整OLED模块功能演示程序的字表,仅适用heltec.taobao.com所售产品;
|
||||
* 2. 字表由打包资料中的“取字软件”计算得出;
|
||||
* 3. 取字方式 -- 共阴、列行式、逆向输出
|
||||
*
|
||||
* Others: none;
|
||||
*
|
||||
* Function List:
|
||||
*
|
||||
* 1. void delay(unsigned int z) -- 主函数中用于调整显示效果的延时函数,STC89C52
|
||||
*12MHZ z=1时大约延时1ms,其他频率需要自己计算
|
||||
* 2. void main(void) -- 主函数
|
||||
*
|
||||
* History: none;
|
||||
*
|
||||
*************************************************************************************/
|
||||
|
||||
// #include "reg52.h"
|
||||
/***************************16*16的点阵字体取模方式:共阴——列行式——逆向输出*********/
|
||||
uint8_t F16x16[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",0*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",0*/
|
||||
|
||||
0x00, 0x02, 0x02, 0xFA, 0xFA, 0xAA, 0xAA, 0xFF, 0xFF, 0xAA, 0xAA,
|
||||
0xFA, 0xFA, 0x02, 0x02, 0x00, 0x00, 0x42, 0x72, 0x72, 0x3A, 0x7A,
|
||||
0x42, 0x4B, 0x5B, 0x52, 0x62, 0x62, 0x13, 0x77, 0x66, 0x00, /*"惠",1*/
|
||||
|
||||
0x20, 0x3C, 0x1C, 0xFF, 0xFF, 0xB0, 0xB4, 0x24, 0x24, 0x3F, 0x3F,
|
||||
0xE4, 0xE4, 0x24, 0x24, 0x20, 0x02, 0x02, 0x03, 0xFF, 0xFF, 0x00,
|
||||
0x01, 0x05, 0x1D, 0x59, 0xC1, 0xFF, 0x7F, 0x01, 0x01, 0x01, /*"特",2*/
|
||||
|
||||
0x00, 0x00, 0x00, 0xF8, 0xF8, 0x48, 0x4C, 0x4F, 0x4B, 0x4A, 0x48,
|
||||
0x48, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xFF, 0xFF, 0x00, 0x00, /*"自",3*/
|
||||
|
||||
0x20, 0x24, 0x24, 0xE4, 0xE4, 0x24, 0x24, 0x24, 0x30, 0x10, 0xFF,
|
||||
0xFF, 0x10, 0xF0, 0xF0, 0x00, 0x08, 0x1C, 0x1F, 0x0B, 0x0C, 0x0D,
|
||||
0x4F, 0x6E, 0x34, 0x1C, 0x0F, 0x23, 0x60, 0x7F, 0x3F, 0x00, /*"动",4*/
|
||||
|
||||
0x80, 0xC0, 0x60, 0xF8, 0xFF, 0x07, 0x02, 0x00, 0xFF, 0xFF, 0xE0,
|
||||
0x70, 0x3C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x04,
|
||||
0x06, 0x03, 0x3F, 0x7F, 0x40, 0x40, 0x40, 0x78, 0x78, 0x00, /*"化",5*/
|
||||
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",6*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",6*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",7*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, /*" ",7*/
|
||||
|
||||
0x10, 0x21, 0x86, 0x70, 0x00, 0x7E, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A,
|
||||
0x7E, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x01, 0x40, 0x7F, 0x41,
|
||||
0x41, 0x7F, 0x41, 0x41, 0x7F, 0x41, 0x41, 0x7F, 0x40, 0x00, /*"温",8*/
|
||||
0x00, 0x00, 0xFC, 0x04, 0x24, 0x24, 0xFC, 0xA5, 0xA6, 0xA4, 0xFC,
|
||||
0x24, 0x24, 0x24, 0x04, 0x00, 0x80, 0x60, 0x1F, 0x80, 0x80, 0x42,
|
||||
0x46, 0x2A, 0x12, 0x12, 0x2A, 0x26, 0x42, 0xC0, 0x40, 0x00, /*"度",9*/
|
||||
0x08, 0x08, 0x08, 0xFF, 0x88, 0x48, 0x00, 0x98, 0x48, 0x28, 0x0A,
|
||||
0x2C, 0x48, 0xD8, 0x08, 0x00, 0x02, 0x42, 0x81, 0x7F, 0x00, 0x00,
|
||||
0x40, 0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x40, 0x00, /*"控",10*/
|
||||
0x00, 0x50, 0x4F, 0x4A, 0x48, 0xFF, 0x48, 0x48, 0x48, 0x00, 0xFC,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x01, 0x01, 0xFF,
|
||||
0x21, 0x61, 0x3F, 0x00, 0x0F, 0x40, 0x80, 0x7F, 0x00, 0x00, /*"制",11*/
|
||||
0x00, 0x90, 0x8C, 0xA4, 0xA4, 0xA4, 0xA5, 0xA6, 0xA4, 0xA4, 0xA4,
|
||||
0xA4, 0x94, 0x8C, 0x04, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x07,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x70, 0x00, 0x00, /*"完",12*/
|
||||
0x00, 0x04, 0x74, 0xD4, 0xFF, 0xD4, 0x74, 0x04, 0x10, 0x0C, 0xB7,
|
||||
0x44, 0xB4, 0x0C, 0x04, 0x00, 0x00, 0x42, 0x43, 0x7A, 0x43, 0x42,
|
||||
0x43, 0x7E, 0x4B, 0x4B, 0x4A, 0x4A, 0x42, 0x43, 0x01, 0x00, /*"整",13*/
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xF9, 0x4A, 0x4C, 0x48, 0x48,
|
||||
0xC8, 0x08, 0x08, 0x08, 0x00, 0x40, 0x40, 0x20, 0x10, 0x0C, 0x03,
|
||||
0x00, 0x00, 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, /*"方",14*/
|
||||
0x00, 0x20, 0x2C, 0x24, 0x64, 0x74, 0xAD, 0xA6, 0xE4, 0x34, 0x24,
|
||||
0x24, 0x2C, 0x24, 0x00, 0x00, 0x00, 0x24, 0x24, 0x25, 0x15, 0x15,
|
||||
0x0D, 0xFE, 0x04, 0x0D, 0x17, 0x14, 0x24, 0x64, 0x24, 0x00, /*"案",15*/
|
||||
|
||||
0x00, 0x00, 0x00, 0xF8, 0x48, 0x48, 0x4C, 0x4B, 0x4A, 0x48, 0x48,
|
||||
0x48, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x44, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xFF, 0x00, 0x00, 0x00, /*"自",16*/
|
||||
0x20, 0x24, 0x24, 0xE4, 0x24, 0x24, 0x24, 0x20, 0x10, 0x10, 0xFF,
|
||||
0x10, 0x10, 0xF0, 0x00, 0x00, 0x08, 0x1C, 0x0B, 0x08, 0x0C, 0x05,
|
||||
0x4E, 0x24, 0x10, 0x0C, 0x03, 0x20, 0x40, 0x3F, 0x00, 0x00, /*"动",17*/
|
||||
0x08, 0x08, 0x08, 0xFF, 0x88, 0x48, 0x00, 0x98, 0x48, 0x28, 0x0A,
|
||||
0x2C, 0x48, 0xD8, 0x08, 0x00, 0x02, 0x42, 0x81, 0x7F, 0x00, 0x00,
|
||||
0x40, 0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x40, 0x00, /*"控",18*/
|
||||
0x00, 0x50, 0x4F, 0x4A, 0x48, 0xFF, 0x48, 0x48, 0x48, 0x00, 0xFC,
|
||||
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x01, 0x01, 0xFF,
|
||||
0x21, 0x61, 0x3F, 0x00, 0x0F, 0x40, 0x80, 0x7F, 0x00, 0x00, /*"制",19*/
|
||||
0x08, 0x07, 0xFA, 0xAA, 0xAE, 0xAA, 0xAA, 0xA8, 0xAC, 0xAB, 0xAA,
|
||||
0xFE, 0x0A, 0x02, 0x02, 0x00, 0x08, 0x08, 0x8B, 0x6A, 0x1E, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0xFE, 0x0A, 0x0B, 0x08, 0x08, 0x08, 0x00, /*"算",20*/
|
||||
0x10, 0x60, 0x01, 0xC6, 0x30, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x10,
|
||||
0x10, 0x10, 0x10, 0x00, 0x00, 0x04, 0x04, 0xFE, 0x01, 0x00, 0x41,
|
||||
0x61, 0x51, 0x4D, 0x43, 0x41, 0x41, 0x51, 0xE1, 0x01, 0x00, /*"法",21*/
|
||||
0x40, 0x41, 0xCE, 0x04, 0x00, 0x80, 0x40, 0xBE, 0x82, 0x82, 0x82,
|
||||
0xBE, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7F, 0x20, 0x90, 0x80,
|
||||
0x40, 0x43, 0x2C, 0x10, 0x10, 0x2C, 0x43, 0xC0, 0x40, 0x00, /*"设",22*/
|
||||
0x20, 0x21, 0x2E, 0xE4, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0xFF,
|
||||
0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x20, 0x10,
|
||||
0x08, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, /*"计",23*/
|
||||
|
||||
0x00, 0x00, 0xF8, 0x48, 0x48, 0x48, 0x48, 0xFF, 0x48, 0x48, 0x48,
|
||||
0x48, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x04, 0x04, 0x04,
|
||||
0x04, 0x3F, 0x44, 0x44, 0x44, 0x44, 0x4F, 0x40, 0x70, 0x00, /*"电",24*/
|
||||
0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0xE2, 0x12, 0x0A, 0x06,
|
||||
0x02, 0x00, 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x41,
|
||||
0x81, 0x7F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*"子",25*/
|
||||
0x00, 0x20, 0x20, 0x22, 0x22, 0xE2, 0x22, 0x22, 0x22, 0xE2, 0x22,
|
||||
0x22, 0x22, 0x20, 0x20, 0x00, 0x00, 0x40, 0x20, 0x10, 0x0C, 0x03,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x40, 0x70, 0x00, /*"元",26*/
|
||||
0x40, 0x20, 0xF8, 0x0F, 0x82, 0x60, 0x1E, 0x14, 0x10, 0xFF, 0x10,
|
||||
0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, /*"件",27*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x7E, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48,
|
||||
0x48, 0x48, 0xCC, 0x08, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x24, 0x46, 0x44, 0x20, 0x1F, 0x00, 0x00, /*"与",28*/
|
||||
0x84, 0x94, 0x94, 0xFF, 0x94, 0x94, 0x80, 0x24, 0x24, 0x24, 0xFC,
|
||||
0x12, 0x13, 0x12, 0x00, 0x00, 0x20, 0x18, 0x06, 0xFF, 0x02, 0x1C,
|
||||
0x0A, 0x02, 0x02, 0x02, 0x3F, 0x41, 0x41, 0x41, 0x71, 0x00, /*"耗",29*/
|
||||
0x10, 0x10, 0xD0, 0xFE, 0x50, 0x90, 0x00, 0x10, 0x10, 0x10, 0xD0,
|
||||
0xFE, 0x10, 0x10, 0x10, 0x00, 0x08, 0x06, 0x01, 0xFF, 0x00, 0x01,
|
||||
0x10, 0x08, 0x04, 0x43, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, /*"材",30*/
|
||||
0x90, 0x88, 0xA7, 0xA2, 0xA6, 0xBA, 0xA2, 0xF8, 0xA7, 0xA2, 0xA6,
|
||||
0xBA, 0xA2, 0x82, 0x80, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x0C,
|
||||
0x34, 0x04, 0x44, 0x84, 0x7F, 0x04, 0x04, 0x04, 0x00, 0x00, /*"等",31*/
|
||||
};
|
||||
|
||||
/************************************6*8的点阵************************************/
|
||||
const uint8_t F6x8[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
|
||||
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
|
||||
0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
|
||||
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
|
||||
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
|
||||
0x00, 0x62, 0x64, 0x08, 0x13, 0x23, // %
|
||||
0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
|
||||
0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
|
||||
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
|
||||
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
|
||||
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
|
||||
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
|
||||
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
|
||||
0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
|
||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
|
||||
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
|
||||
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
|
||||
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
|
||||
0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
|
||||
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
|
||||
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
|
||||
0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
|
||||
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
|
||||
0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
|
||||
0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
|
||||
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
|
||||
0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
|
||||
0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
|
||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
|
||||
0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
|
||||
0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
|
||||
0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
|
||||
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
|
||||
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
|
||||
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
|
||||
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
|
||||
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
|
||||
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
|
||||
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
|
||||
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
|
||||
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
|
||||
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
|
||||
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
|
||||
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
|
||||
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
|
||||
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
|
||||
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
|
||||
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
|
||||
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
|
||||
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
|
||||
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
|
||||
0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
|
||||
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
|
||||
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
|
||||
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
|
||||
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
|
||||
0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
|
||||
0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
|
||||
0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
|
||||
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [
|
||||
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
|
||||
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
|
||||
0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
|
||||
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
|
||||
0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
|
||||
0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // a
|
||||
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38, // b
|
||||
0x00, 0x38, 0x44, 0x44, 0x44, 0x20, // c
|
||||
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F, // d
|
||||
0x00, 0x38, 0x54, 0x54, 0x54, 0x18, // e
|
||||
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02, // f
|
||||
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
|
||||
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, // h
|
||||
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, // i
|
||||
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // j
|
||||
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
|
||||
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, // l
|
||||
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // m
|
||||
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, // n
|
||||
0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // o
|
||||
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
|
||||
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, // q
|
||||
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, // r
|
||||
0x00, 0x48, 0x54, 0x54, 0x54, 0x20, // s
|
||||
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t
|
||||
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
|
||||
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
|
||||
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
|
||||
0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x
|
||||
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
|
||||
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, // horiz lines
|
||||
};
|
||||
/****************************************8*16的点阵************************************/
|
||||
const uint8_t F8X16[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
|
||||
0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 1
|
||||
0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 2
|
||||
0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00,
|
||||
0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, // # 3
|
||||
0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00,
|
||||
0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 4
|
||||
0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00,
|
||||
0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 5
|
||||
0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00,
|
||||
0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 6
|
||||
0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 7
|
||||
0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00,
|
||||
0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 8
|
||||
0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 9
|
||||
0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00,
|
||||
0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 10
|
||||
0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 11
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 12
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 13
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 14
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04,
|
||||
0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 15
|
||||
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||
0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, // 0 16
|
||||
0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // 1 17
|
||||
0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00,
|
||||
0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, // 2 18
|
||||
0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00,
|
||||
0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // 3 19
|
||||
0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00,
|
||||
0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, // 4 20
|
||||
0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00,
|
||||
0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, // 5 21
|
||||
0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00,
|
||||
0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // 6 22
|
||||
0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
|
||||
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // 7 23
|
||||
0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00,
|
||||
0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, // 8 24
|
||||
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||
0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, // 9 25
|
||||
0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 26
|
||||
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 27
|
||||
0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00,
|
||||
0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 28
|
||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 29
|
||||
0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
|
||||
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 30
|
||||
0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 31
|
||||
0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00,
|
||||
0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 32
|
||||
0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00,
|
||||
0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, // A 33
|
||||
0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // B 34
|
||||
0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00,
|
||||
0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // C 35
|
||||
0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // D 36
|
||||
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, // E 37
|
||||
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, // F 38
|
||||
0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00,
|
||||
0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, // G 39
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
|
||||
0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, // H 40
|
||||
0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00,
|
||||
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // I 41
|
||||
0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00,
|
||||
0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, // J 42
|
||||
0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, // K 43
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, // L 44
|
||||
0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00,
|
||||
0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, // M 45
|
||||
0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08,
|
||||
0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, // N 46
|
||||
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||
0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // O 47
|
||||
0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00,
|
||||
0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, // P 48
|
||||
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
|
||||
0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, // Q 49
|
||||
0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, // R 50
|
||||
0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00,
|
||||
0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, // S 51
|
||||
0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00,
|
||||
0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // T 52
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
|
||||
0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // U 53
|
||||
0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08,
|
||||
0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, // V 54
|
||||
0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00,
|
||||
0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, // W 55
|
||||
0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08,
|
||||
0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, // X 56
|
||||
0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00,
|
||||
0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // Y 57
|
||||
0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
|
||||
0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, // Z 58
|
||||
0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 59
|
||||
0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 60
|
||||
0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 61
|
||||
0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 62
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 63
|
||||
0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 64
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, // a 65
|
||||
0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // b 66
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, // c 67
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00,
|
||||
0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, // d 68
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, // e 69
|
||||
0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18,
|
||||
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // f 70
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, // g 71
|
||||
0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // h 72
|
||||
0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // i 73
|
||||
0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00,
|
||||
0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, // j 74
|
||||
0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||
0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, // k 75
|
||||
0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // l 76
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, // m 77
|
||||
0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // n 78
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
|
||||
0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // o 79
|
||||
0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, // p 80
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, // q 81
|
||||
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||
0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, // r 82
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, // s 83
|
||||
0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, // t 84
|
||||
0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00,
|
||||
0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, // u 85
|
||||
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
|
||||
0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, // v 86
|
||||
0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80,
|
||||
0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, // w 87
|
||||
0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, // x 88
|
||||
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
|
||||
0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, // y 89
|
||||
0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
|
||||
0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, // z 90
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 91
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 92
|
||||
0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 93
|
||||
0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
|
||||
};
|
||||
|
||||
uint8_t BMP1[] = {
|
||||
0x00, 0x03, 0x05, 0x09, 0x11, 0xFF, 0x11, 0x89, 0x05, 0xC3, 0x00, 0xE0,
|
||||
0x00, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
|
||||
0x28, 0xFF, 0x11, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x38, 0x44, 0x82, 0x92,
|
||||
0x92, 0x74, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C,
|
||||
0x44, 0xC7, 0x01, 0x7D, 0x7D, 0x7D, 0x7D, 0x01, 0x7D, 0x7D, 0x7D, 0x7D,
|
||||
0x01, 0x7D, 0x7D, 0x7D, 0x7D, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x6D, 0x6D, 0x6D, 0x6D,
|
||||
0x6D, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x40, 0x40,
|
||||
0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xDB, 0xDB,
|
||||
0xDB, 0xDB, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x00, 0x00, 0xDB,
|
||||
0xDB, 0xDB, 0xDB, 0xDB, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x00,
|
||||
0x00, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0x00, 0x00, 0xD8, 0xD8, 0xD8, 0xD8,
|
||||
0xD8, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0,
|
||||
0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00,
|
||||
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06,
|
||||
0xE6, 0x66, 0x20, 0x00, 0x06, 0x06, 0x86, 0x06, 0x06, 0x00, 0x00, 0x06,
|
||||
0x06, 0x06, 0x06, 0x86, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,
|
||||
0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x80, 0x80, 0x86, 0x86, 0x06, 0x86,
|
||||
0x86, 0xC0, 0xC0, 0x86, 0x86, 0x86, 0x06, 0x06, 0xD0, 0x30, 0x76, 0x06,
|
||||
0x06, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1C,
|
||||
0x00, 0xFE, 0x00, 0x01, 0x02, 0x00, 0xC4, 0x18, 0x20, 0x02, 0x9E, 0x63,
|
||||
0xB2, 0x0E, 0x00, 0xFF, 0x81, 0x81, 0xFF, 0x00, 0x00, 0x80, 0x40, 0x30,
|
||||
0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x23, 0xEA, 0xAA, 0xBF, 0xAA,
|
||||
0xEA, 0x03, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
|
||||
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x81,
|
||||
0x80, 0x80, 0x81, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x01, 0x01, 0x01,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,
|
||||
0x09, 0x0C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0,
|
||||
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
|
||||
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x1E, 0x21, 0x40,
|
||||
0x40, 0x50, 0x21, 0x5E, 0x00, 0x1E, 0x21, 0x40, 0x40, 0x50, 0x21, 0x5E,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC1, 0xC1, 0xFF,
|
||||
0xFF, 0xC1, 0xC1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xFC, 0xF3, 0xEF, 0xF3, 0xFC,
|
||||
0x80, 0xFF, 0x80, 0xEE, 0xEE, 0xEE, 0xF5, 0xFB, 0xFF, 0x9C, 0xBE, 0xB6,
|
||||
0xB6, 0x88, 0xFF, 0x00,
|
||||
};
|
||||
|
||||
uint8_t BMP2[] = {
|
||||
0x00, 0x03, 0x05, 0x09, 0x11, 0xFF, 0x11, 0x89, 0x05, 0xC3, 0x00, 0xE0,
|
||||
0x00, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
|
||||
0x28, 0xFF, 0x11, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x38, 0x44, 0x82, 0x92,
|
||||
0x92, 0x74, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C,
|
||||
0x44, 0xFF, 0x01, 0x7D, 0x7D, 0x7D, 0x7D, 0x01, 0x7D, 0x7D, 0x7D, 0x7D,
|
||||
0x01, 0x7D, 0x7D, 0x7D, 0x7D, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0xF8, 0x18, 0x60, 0x80,
|
||||
0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x20, 0x20,
|
||||
0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x08, 0x08, 0x08,
|
||||
0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x88, 0x68, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0x06, 0x18, 0x06, 0x01,
|
||||
0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7F, 0x40, 0x40, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1F, 0x20, 0x40, 0x40, 0x40, 0x40, 0x20, 0x1F, 0x00,
|
||||
0x00, 0x00, 0x40, 0x40, 0x7F, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x20,
|
||||
0x20, 0xC0, 0x00, 0x00, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0x00, 0x00, 0x00,
|
||||
0x40, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x20, 0x20, 0xE0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0x20, 0x20, 0x20, 0xE0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x40, 0x20, 0x20, 0x20, 0xC0, 0x00, 0x00, 0x40, 0x20, 0x20,
|
||||
0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0A, 0x0A, 0x09, 0x0C, 0x00, 0x00,
|
||||
0x0F, 0x08, 0x08, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00,
|
||||
0x00, 0x00, 0x0C, 0x08, 0x09, 0x09, 0x0E, 0x00, 0x00, 0x0C, 0x00, 0x00,
|
||||
0x0F, 0x09, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x0A,
|
||||
0x0A, 0x09, 0x0C, 0x00, 0x00, 0x0C, 0x0A, 0x0A, 0x09, 0x0C, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x03, 0x0C,
|
||||
0x30, 0x0C, 0x03, 0x7F, 0x00, 0x00, 0x38, 0x54, 0x54, 0x58, 0x00, 0x00,
|
||||
0x7C, 0x04, 0x04, 0x78, 0x00, 0x00, 0x3C, 0x40, 0x40, 0x7C, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xAA, 0xAA, 0xAA,
|
||||
0x28, 0x08, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x03, 0x0C, 0x30, 0x0C, 0x03, 0x7F,
|
||||
0x00, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x00, 0x7F, 0x02, 0x04,
|
||||
0x08, 0x10, 0x7F, 0x00};
|
@ -1,104 +0,0 @@
|
||||
#pragma once
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "codetab.h"
|
||||
#include "driver/i2c.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#define Brightness 0xCF
|
||||
#define X_WIDTH 128
|
||||
#define Y_WIDTH 64
|
||||
|
||||
#define I2C_ADDRESS 0x78
|
||||
#define I2C_MASTER_NUM CONFIG_I2C_NUM
|
||||
|
||||
void i2cWriteByte(uint8_t reg, uint8_t data) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, I2C_ADDRESS | I2C_MASTER_WRITE, true);
|
||||
i2c_master_write_byte(cmd, reg, true);
|
||||
i2c_master_write_byte(cmd, data, true);
|
||||
i2c_master_stop(cmd);
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
}
|
||||
|
||||
void i2cWriteCommand(uint8_t data) { i2cWriteByte(0x00, data); }
|
||||
|
||||
void i2cWriteData(uint8_t data) { i2cWriteByte(0x40, data); }
|
||||
|
||||
void display_fill(uint8_t bmpData) {
|
||||
for (int y = 0; y < 8; y++) {
|
||||
i2cWriteCommand(0xB0 + y);
|
||||
i2cWriteCommand(0x01);
|
||||
i2cWriteCommand(0x10);
|
||||
for (int x = 0; x < X_WIDTH; x++) {
|
||||
i2cWriteData(bmpData);
|
||||
}
|
||||
}
|
||||
}
|
||||
void display_fill_rect(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1,
|
||||
uint8_t bmpData) {
|
||||
for (int y = y0; y < y1; y++) {
|
||||
i2cWriteCommand(0xB0 + y);
|
||||
i2cWriteCommand(0x01);
|
||||
i2cWriteCommand(0x10);
|
||||
for (int x = x0; x < x1; x++) {
|
||||
i2cWriteData(bmpData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void display_set_pos(uint8_t x, uint8_t y) {
|
||||
i2cWriteCommand(0xB0 + y);
|
||||
i2cWriteCommand(((x & 0xF0) >> 4) | 0x10);
|
||||
i2cWriteCommand((x & 0x0F) | 0x01);
|
||||
}
|
||||
|
||||
void display_print8_str(uint8_t x, uint8_t y, char str[]) {
|
||||
uint8_t c;
|
||||
for (uint8_t ch, ci = 0; ch = str[ci], ch != '\0'; ci++, x += 8) {
|
||||
c = ch - 0x20;
|
||||
display_set_pos(x, y);
|
||||
for (uint8_t cx = 0; cx < 8; cx++) {
|
||||
i2cWriteData(F8X16[c * 16 + cx]);
|
||||
}
|
||||
display_set_pos(x, y + 1);
|
||||
for (uint8_t cx = 0; cx < 8; cx++) {
|
||||
i2cWriteData(F8X16[c * 16 + cx + 8]);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
void init_display() {
|
||||
i2cWriteCommand(0xAE); // display off
|
||||
i2cWriteCommand(0x00); // set lower column address
|
||||
i2cWriteCommand(0x10); // set higher column address
|
||||
i2cWriteCommand(0x40); // set start line address
|
||||
i2cWriteCommand(0x81); // set contrast control register
|
||||
i2cWriteCommand(0xCF); // set contrast
|
||||
i2cWriteCommand(0xA1); // set segment re-map
|
||||
i2cWriteCommand(0xC8); // set COM output scan direction
|
||||
i2cWriteCommand(0xA6); // set normal display
|
||||
i2cWriteCommand(0xA8); // set multiplex ratio(1 to 64)
|
||||
i2cWriteCommand(0x3F); // 1/64 duty
|
||||
i2cWriteCommand(0xD3); // set display offset
|
||||
i2cWriteCommand(0x00); // not offset
|
||||
i2cWriteCommand(0xD5); // set display clock divide ratio/oscillator frequency
|
||||
i2cWriteCommand(0x80); // set divide ratio
|
||||
i2cWriteCommand(0xD9); // set pre-charge period
|
||||
i2cWriteCommand(0xF1); // set pre-charge voltage
|
||||
i2cWriteCommand(0xDA); // set com pins hardware configuration
|
||||
i2cWriteCommand(0x12);
|
||||
i2cWriteCommand(0xDB); // set vcomh
|
||||
i2cWriteCommand(0x40); // 0.77*vcc
|
||||
i2cWriteCommand(0x20); // set memory addressing mode
|
||||
i2cWriteCommand(0x02); // set page addressing mode
|
||||
i2cWriteCommand(0x8D); // set charge pump enable/disable
|
||||
i2cWriteCommand(0x14); // set(0x10) disable
|
||||
i2cWriteCommand(0xAF); // display on
|
||||
|
||||
display_fill(0x00);
|
||||
display_set_pos(0, 0);
|
||||
}
|
39
main/main.c
39
main/main.c
@ -1,5 +1,3 @@
|
||||
#include "ambient_light.c"
|
||||
#include "driver/i2c.h"
|
||||
#include "esp_log.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
@ -8,47 +6,10 @@
|
||||
#include "sdkconfig.h"
|
||||
#include "wifi.c"
|
||||
|
||||
#define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
|
||||
#define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
|
||||
#define I2C_MASTER_SDA_IO CONFIG_I2C_SDA
|
||||
#define I2C_MASTER_SCL_IO CONFIG_I2C_SCL
|
||||
|
||||
#define I2C_MASTER_FREQ_HZ 400000 /*!< I2C master clock frequency */
|
||||
#define I2C_MASTER_NUM CONFIG_I2C_NUM
|
||||
|
||||
#include "embedded_display.c"
|
||||
#include "temperature.c"
|
||||
|
||||
void init_i2c() {
|
||||
int i2c_master_port = I2C_MASTER_NUM;
|
||||
|
||||
i2c_config_t conf = {
|
||||
.mode = I2C_MODE_MASTER,
|
||||
.sda_io_num = I2C_MASTER_SDA_IO,
|
||||
.scl_io_num = I2C_MASTER_SCL_IO,
|
||||
.sda_pullup_en = GPIO_PULLUP_ENABLE,
|
||||
.scl_pullup_en = GPIO_PULLUP_ENABLE,
|
||||
.master.clk_speed = I2C_MASTER_FREQ_HZ,
|
||||
};
|
||||
i2c_param_config(i2c_master_port, &conf);
|
||||
ESP_LOGI("I2C", "Enabling I2C");
|
||||
ESP_ERROR_CHECK(i2c_driver_install(i2c_master_port, conf.mode,
|
||||
I2C_MASTER_RX_BUF_DISABLE,
|
||||
I2C_MASTER_TX_BUF_DISABLE, 0));
|
||||
|
||||
ESP_LOGI("SCR", "I2C initialized successfully");
|
||||
}
|
||||
|
||||
static const char *TAG = "DisplayAmbientLight";
|
||||
|
||||
void app_main(void) {
|
||||
light_init_strip();
|
||||
init_i2c();
|
||||
init_display();
|
||||
display_print8_str(0, 0, "Ambient Light");
|
||||
ambient_light_init();
|
||||
ambient_light_auto_fetch();
|
||||
auto_fetch_temperature();
|
||||
init_ui();
|
||||
xTaskCreate(publish_ui_input, "ui_input_event", 2048, NULL, 10, NULL);
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
|
@ -1,74 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "driver/i2c.h"
|
||||
#include "embedded_display.c"
|
||||
#include "esp_log.h"
|
||||
|
||||
#define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/
|
||||
#define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */
|
||||
#define ACK_VAL 0x0 /*!< I2C ack value */
|
||||
#define NACK_VAL 0x1 /*!< I2C nack value */
|
||||
|
||||
#define I2C_MASTER_NUM CONFIG_I2C_NUM
|
||||
|
||||
#define GX21M15_ADDRESS 0x90
|
||||
#define GX21M15_TEMP_POINTER_VALUE 0b00 // 温度寄存器
|
||||
#define GX21M15_CONF_POINTER_VALUE 0b01 // 配置寄存器
|
||||
#define GX21M15_THYST_POINTER_VALUE 0b10 // 回滞寄存器
|
||||
#define GX21M15_TOS_POINTER_VALUE 0b11 // 过温关断寄存器
|
||||
|
||||
#define DEFAULT_TEMPERATURE -999 // 过温关断寄存器
|
||||
|
||||
#define TEMPERATURE_TAG "temperature"
|
||||
void fetch_temperature(void* arg) {
|
||||
esp_err_t error;
|
||||
float temperature = DEFAULT_TEMPERATURE;
|
||||
char temperature_str[10];
|
||||
uint8_t temperature_buffer[] = {0, 0};
|
||||
display_fill_rect(0, 0, 128, 2, 0x00);
|
||||
for (;;) {
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, GX21M15_ADDRESS | I2C_MASTER_WRITE,
|
||||
ACK_CHECK_EN);
|
||||
i2c_master_write_byte(cmd, 0, ACK_CHECK_EN);
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, GX21M15_ADDRESS | I2C_MASTER_READ, ACK_VAL);
|
||||
i2c_master_read_byte(cmd, &(temperature_buffer[0]), ACK_VAL);
|
||||
i2c_master_read_byte(cmd, &(temperature_buffer[1]), NACK_VAL);
|
||||
i2c_master_stop(cmd);
|
||||
error =
|
||||
i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
|
||||
i2c_cmd_link_delete(cmd);
|
||||
if (error != ESP_OK) {
|
||||
ESP_LOGW(TEMPERATURE_TAG, "read failed. %x", error);
|
||||
} else {
|
||||
if (temperature_buffer[0] == 0xff) {
|
||||
if (temperature == DEFAULT_TEMPERATURE) {
|
||||
sprintf(temperature_str, "Temp: Loading");
|
||||
} else {
|
||||
sprintf(temperature_str, "Temp: %.3f.", temperature);
|
||||
}
|
||||
} else {
|
||||
if (temperature_buffer[0] >> 7) {
|
||||
temperature = -(((((~temperature_buffer[0]) & 0x7f) << 3) |
|
||||
((~temperature_buffer[1] >> 5) & 0x07)) +
|
||||
1) *
|
||||
0.125;
|
||||
} else {
|
||||
temperature =
|
||||
(temperature_buffer[0] << 3 | temperature_buffer[1] >> 5) * 0.125;
|
||||
}
|
||||
sprintf(temperature_str, "Temp: %2.3f", temperature);
|
||||
}
|
||||
display_print8_str(8, 0, temperature_str);
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(500));
|
||||
}
|
||||
display_fill_rect(0, 0, 128, 2, 0x00);
|
||||
}
|
||||
|
||||
void auto_fetch_temperature() {
|
||||
xTaskCreate(fetch_temperature, "ui_input_event", 2048, NULL, 10, NULL);
|
||||
}
|
50
main/ui.c
50
main/ui.c
@ -33,24 +33,28 @@ typedef struct s_ui_input {
|
||||
uint16_t value;
|
||||
} s_ui_input_t;
|
||||
|
||||
static xQueueHandle encoder_event_queue = NULL;
|
||||
static xQueueHandle ui_input_event = NULL;
|
||||
|
||||
static int8_t rising_edge_rotation_direction = NOT_ROTATING;
|
||||
static int8_t falling_edge_rotation_direction = NOT_ROTATING;
|
||||
static uint8_t display_0_brightness = 20;
|
||||
static uint8_t display_1_brightness = 20;
|
||||
|
||||
static s_ui_input_t current_ui_input = {};
|
||||
|
||||
uint8_t input_key;
|
||||
uint8_t clk_pin = ENCODER_0_CLK_PIN;
|
||||
uint8_t dt_level;
|
||||
uint8_t dt_pin = ENCODER_0_DT_PIN;
|
||||
uint8_t* value = &display_0_brightness;
|
||||
|
||||
static void IRAM_ATTR gpio_isr_handler(void* arg) {
|
||||
uint8_t input_key = (uint8_t)arg;
|
||||
xQueueSendFromISR(encoder_event_queue, &input_key, NULL);
|
||||
}
|
||||
|
||||
static int8_t rising_edge_rotation_direction = NOT_ROTATING;
|
||||
static int8_t falling_edge_rotation_direction = NOT_ROTATING;
|
||||
static int8_t display_0_brightness = 20;
|
||||
static int8_t display_1_brightness = 20;
|
||||
|
||||
static s_ui_input_t current_ui_input = {};
|
||||
|
||||
static void encoder_value_change(void* arg) {
|
||||
uint8_t input_key;
|
||||
uint8_t clk_pin = ENCODER_0_CLK_PIN;
|
||||
uint8_t dt_pin = ENCODER_0_DT_PIN;
|
||||
uint8_t* value = &display_0_brightness;
|
||||
for (;;) {
|
||||
if (xQueueReceive(encoder_event_queue, &input_key, portMAX_DELAY)) {
|
||||
switch (input_key) {
|
||||
case UI_INPUT_DISPLAY_0_BRIGHTNESS:
|
||||
clk_pin = ENCODER_0_CLK_PIN;
|
||||
@ -65,47 +69,51 @@ static void IRAM_ATTR gpio_isr_handler(void* arg) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
dt_level = gpio_get_level(dt_pin);
|
||||
if (gpio_get_level(clk_pin)) {
|
||||
rising_edge_rotation_direction = dt_level == 0;
|
||||
rising_edge_rotation_direction = gpio_get_level(dt_pin) == 0;
|
||||
// printf("R %d\t", rising_edge_rotation_direction);
|
||||
if (falling_edge_rotation_direction == rising_edge_rotation_direction) {
|
||||
if (rising_edge_rotation_direction) {
|
||||
gpio_set_level(GPIO_OUTPUT_IO_0, 1);
|
||||
gpio_set_level(GPIO_OUTPUT_IO_1, 0);
|
||||
*value += 1;
|
||||
printf("CW\tvalue: %d\n", *value);
|
||||
} else {
|
||||
gpio_set_level(GPIO_OUTPUT_IO_0, 0);
|
||||
gpio_set_level(GPIO_OUTPUT_IO_1, 1);
|
||||
*value -= 1;
|
||||
printf("CCW\tvalue: %d\n", *value);
|
||||
}
|
||||
falling_edge_rotation_direction = NOT_ROTATING;
|
||||
|
||||
current_ui_input.key = input_key;
|
||||
current_ui_input.value = *value;
|
||||
xQueueSendFromISR(ui_input_event, ¤t_ui_input, NULL);
|
||||
xQueueSend(ui_input_event, ¤t_ui_input, NULL);
|
||||
} else {
|
||||
if (falling_edge_rotation_direction != NOT_ROTATING) {
|
||||
rising_edge_rotation_direction = NOT_ROTATING;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
falling_edge_rotation_direction = dt_level;
|
||||
falling_edge_rotation_direction = gpio_get_level(dt_pin);
|
||||
// printf("F %d\t", falling_edge_rotation_direction);
|
||||
if (rising_edge_rotation_direction == falling_edge_rotation_direction) {
|
||||
if (falling_edge_rotation_direction) {
|
||||
gpio_set_level(GPIO_OUTPUT_IO_0, 1);
|
||||
gpio_set_level(GPIO_OUTPUT_IO_1, 0);
|
||||
*value += 1;
|
||||
printf("CW\tvalue: %d\n", *value);
|
||||
} else {
|
||||
gpio_set_level(GPIO_OUTPUT_IO_0, 0);
|
||||
gpio_set_level(GPIO_OUTPUT_IO_1, 1);
|
||||
*value -= 1;
|
||||
printf("CCW\tvalue: %d\n", *value);
|
||||
}
|
||||
rising_edge_rotation_direction = NOT_ROTATING;
|
||||
|
||||
current_ui_input.key = input_key;
|
||||
current_ui_input.value = *value;
|
||||
xQueueSendFromISR(ui_input_event, ¤t_ui_input, NULL);
|
||||
xQueueSend(ui_input_event, ¤t_ui_input, NULL);
|
||||
|
||||
} else {
|
||||
if (rising_edge_rotation_direction != NOT_ROTATING) {
|
||||
@ -114,6 +122,8 @@ static void IRAM_ATTR gpio_isr_handler(void* arg) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void init_ui(void) {
|
||||
// zero-initialize the config structure.
|
||||
@ -142,7 +152,11 @@ void init_ui(void) {
|
||||
io_conf.pin_bit_mask = ENCODER_0_DT_PIN_MASK | ENCODER_1_DT_PIN_MASK;
|
||||
gpio_config(&io_conf);
|
||||
|
||||
// create a queue to handle gpio event from isr
|
||||
encoder_event_queue = xQueueCreate(10, sizeof(uint8_t));
|
||||
// start encoder task
|
||||
xTaskCreate(encoder_value_change, "encoder_value_change", 2048, NULL, 10,
|
||||
NULL);
|
||||
ui_input_event = xQueueCreate(10, sizeof(s_ui_input_t));
|
||||
|
||||
// install gpio isr service
|
||||
|
Loading…
Reference in New Issue
Block a user