intermediate commit
This commit is contained in:
211
include/images.h
Normal file
211
include/images.h
Normal file
@@ -0,0 +1,211 @@
|
||||
#define WiFi_Logo_width 60
|
||||
#define WiFi_Logo_height 36
|
||||
const unsigned char WiFi_Logo_bits[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
|
||||
0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x07, 0xC0, 0x83, 0x01, 0x80, 0xFF, 0xFF, 0xFF,
|
||||
0x01, 0x00, 0x07, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00,
|
||||
0xC0, 0xFF, 0xFF, 0x7C, 0x00, 0x60, 0x0C, 0x00, 0xC0, 0x31, 0x46, 0x7C,
|
||||
0xFC, 0x77, 0x08, 0x00, 0xE0, 0x23, 0xC6, 0x3C, 0xFC, 0x67, 0x18, 0x00,
|
||||
0xE0, 0x23, 0xE4, 0x3F, 0x1C, 0x00, 0x18, 0x00, 0xE0, 0x23, 0x60, 0x3C,
|
||||
0x1C, 0x70, 0x18, 0x00, 0xE0, 0x03, 0x60, 0x3C, 0x1C, 0x70, 0x18, 0x00,
|
||||
0xE0, 0x07, 0x60, 0x3C, 0xFC, 0x73, 0x18, 0x00, 0xE0, 0x87, 0x70, 0x3C,
|
||||
0xFC, 0x73, 0x18, 0x00, 0xE0, 0x87, 0x70, 0x3C, 0x1C, 0x70, 0x18, 0x00,
|
||||
0xE0, 0x87, 0x70, 0x3C, 0x1C, 0x70, 0x18, 0x00, 0xE0, 0x8F, 0x71, 0x3C,
|
||||
0x1C, 0x70, 0x18, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x08, 0x00,
|
||||
0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x0C, 0x00, 0x80, 0xFF, 0xFF, 0x1F,
|
||||
0x00, 0x00, 0x06, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x07, 0x00,
|
||||
0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0xFF,
|
||||
0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
|
||||
0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
#define hhlogo_width 128
|
||||
#define hhlogo_height 64
|
||||
const unsigned char hhlogo_bits[] PROGMEM = {
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
|
||||
0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
|
||||
0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x02, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x02, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
|
||||
0x01, 0x02, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x7F, 0x00,
|
||||
0x01, 0x02, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1F, 0xE0, 0x7F, 0x00, 0x01, 0x02, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x7F, 0x00, 0x01, 0x02, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x7F, 0x00,
|
||||
0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1F, 0x20, 0xC0, 0x00, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0xC0, 0x00, 0xFF, 0x03, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0xC0, 0x00,
|
||||
0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1F, 0x20, 0xC0, 0x00, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0xC0, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1F, 0x20, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x60, 0x40, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x1F, 0xE0, 0x7F, 0x00, 0xFF, 0xFB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
|
||||
0xF7, 0x3F, 0xFB, 0xFF, 0x1F, 0xE0, 0x7F, 0x00, 0xFF, 0xFB, 0xF9, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xE7, 0xF3, 0x3F, 0xFB, 0xFF, 0x1F, 0xE0, 0x7F, 0x00,
|
||||
0xFF, 0xFB, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xF3, 0x3F, 0xFF, 0xFF,
|
||||
0x1F, 0xE0, 0x7F, 0x00, 0xFF, 0xFB, 0x79, 0x7F, 0xFF, 0xFF, 0xFF, 0xE7,
|
||||
0xF7, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x19, 0x1C,
|
||||
0x3C, 0x30, 0xF8, 0xE7, 0x73, 0x38, 0x1B, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x03, 0xFC, 0xF9, 0x99, 0xF3, 0xF3, 0x07, 0x30, 0x37, 0xFB, 0xFB,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xF9, 0xF9, 0xC9, 0xF7, 0xF3, 0xE7,
|
||||
0xB3, 0x27, 0xFB, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x19, 0x18,
|
||||
0xC8, 0x77, 0x30, 0xE6, 0x13, 0x30, 0x3B, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFB, 0xC9, 0xC9, 0xC9, 0xB3, 0xF7, 0xE7, 0xB3, 0x3F, 0xDB, 0xFB,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xC9, 0xC9, 0x99, 0xB3, 0xF3, 0xE7,
|
||||
0x33, 0x37, 0xDB, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x19, 0x18,
|
||||
0x38, 0x34, 0xF0, 0xE7, 0x73, 0x30, 0x1B, 0xF8, 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, 0xF3, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x9F, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, };
|
||||
|
||||
#define robolablogo_width 128
|
||||
#define robolablogo_height 64
|
||||
const unsigned char robolablogo_bits[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 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, 0xff, 0x3f,
|
||||
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, 0xff, 0x3f, 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, 0xff, 0x3f, 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, 0xff, 0x3f,
|
||||
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, 0xff, 0x3f, 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, 0xff, 0x3f, 0x7f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xbf, 0xfa, 0x3f, 0xfe, 0xea, 0x7f, 0xfc, 0x3f, 0x07, 0x00, 0xfe, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x1f, 0xc0, 0x07, 0x38, 0x80, 0x0f, 0xf0, 0x3f,
|
||||
0x03, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x80, 0x03, 0x30,
|
||||
0x00, 0x07, 0xe0, 0x3f, 0x03, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x9f,
|
||||
0x1f, 0x8f, 0xe3, 0x71, 0x1c, 0xc7, 0xe3, 0x3f, 0x03, 0x00, 0xf0, 0xff,
|
||||
0xff, 0xff, 0xff, 0x8f, 0x1f, 0x8e, 0xf1, 0x21, 0x1c, 0xe3, 0xc7, 0x3f,
|
||||
0x83, 0x1f, 0xe0, 0x5f, 0x55, 0xff, 0xff, 0x9f, 0x1f, 0x8f, 0xf1, 0x63,
|
||||
0x1c, 0xe3, 0xc7, 0x3f, 0xf7, 0x3f, 0xe0, 0x0f, 0x00, 0xe0, 0xff, 0x8f,
|
||||
0x1f, 0xc0, 0xf1, 0x23, 0x80, 0xe3, 0xc7, 0x3f, 0xff, 0x7f, 0xe0, 0x0f,
|
||||
0x00, 0x80, 0xff, 0x04, 0x1a, 0xe0, 0xf1, 0x63, 0x80, 0xe3, 0xc7, 0x3f,
|
||||
0xff, 0x7f, 0xe0, 0x0f, 0x00, 0x00, 0xfe, 0x00, 0x10, 0xe0, 0xf1, 0x23,
|
||||
0x0c, 0xe3, 0xc7, 0x3f, 0xff, 0x7f, 0xe0, 0x0f, 0x00, 0x00, 0xfc, 0x00,
|
||||
0x18, 0xc3, 0xf1, 0x63, 0x3c, 0xe2, 0xc7, 0x3f, 0xff, 0x7f, 0xe0, 0x0f,
|
||||
0x54, 0x00, 0xf8, 0x8f, 0x1f, 0xc6, 0xf1, 0x21, 0x3c, 0xc2, 0xc3, 0x3f,
|
||||
0xff, 0x7f, 0xe0, 0x0f, 0xfc, 0x07, 0xf8, 0x9f, 0x1f, 0x87, 0xe3, 0x71,
|
||||
0x1c, 0xc6, 0xe3, 0x3f, 0xff, 0x3f, 0xf0, 0x0f, 0xfc, 0x0f, 0xf0, 0x8f,
|
||||
0x1f, 0x0e, 0x03, 0x38, 0x00, 0x07, 0xe0, 0x3f, 0xff, 0x3f, 0xf0, 0x0f,
|
||||
0xfc, 0x1f, 0xe0, 0x9f, 0x1f, 0x1f, 0x07, 0x78, 0x00, 0x1f, 0xf0, 0x3f,
|
||||
0xff, 0x0f, 0xf8, 0x0f, 0xfc, 0x3f, 0xe0, 0xff, 0xbf, 0x7f, 0x3f, 0xff,
|
||||
0xfb, 0x7f, 0xfe, 0x3f, 0x9f, 0x00, 0xfc, 0x0f, 0xfc, 0x3f, 0xe0, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1f, 0x00, 0xfe, 0x0f,
|
||||
0xfc, 0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
||||
0x1f, 0x00, 0xff, 0x0f, 0xfc, 0x7f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x3f, 0x1f, 0x00, 0xfc, 0x0f, 0xfc, 0x7f, 0xc0, 0xff,
|
||||
0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0x3f, 0x1f, 0x00, 0xf8, 0x0f,
|
||||
0xfc, 0x7f, 0xc0, 0xff, 0x0f, 0xfe, 0xff, 0x1f, 0xfc, 0x0f, 0x00, 0x3f,
|
||||
0xff, 0x07, 0xf0, 0x0f, 0xfc, 0x7f, 0xc0, 0xff, 0x0f, 0xfe, 0xff, 0x1f,
|
||||
0xfc, 0x0f, 0x00, 0x3e, 0xff, 0x1f, 0xe0, 0x0f, 0xfc, 0x7f, 0xc0, 0xff,
|
||||
0x0f, 0xff, 0xff, 0x0f, 0xfc, 0x07, 0x00, 0x3c, 0xff, 0x3f, 0xe0, 0x0f,
|
||||
0xfc, 0x7f, 0xc0, 0xff, 0x07, 0xff, 0xff, 0x07, 0xfc, 0x07, 0x0b, 0x3c,
|
||||
0xff, 0x7f, 0xc0, 0x0f, 0xfc, 0x7f, 0xe0, 0xff, 0x07, 0xff, 0xff, 0x03,
|
||||
0xfc, 0x87, 0x1f, 0x3c, 0xff, 0xff, 0xc0, 0x0f, 0xfc, 0x7f, 0xe0, 0xff,
|
||||
0x87, 0xff, 0xff, 0x23, 0xfc, 0x83, 0x1f, 0x3c, 0xff, 0xff, 0xc0, 0x0f,
|
||||
0xfc, 0x7f, 0xe0, 0xff, 0x83, 0xff, 0xff, 0x21, 0xfc, 0xc3, 0x1f, 0x3e,
|
||||
0xff, 0xff, 0xc0, 0x0f, 0xfc, 0x7f, 0xe0, 0xff, 0xc3, 0xff, 0xff, 0x30,
|
||||
0xfc, 0xc3, 0x07, 0x3f, 0xff, 0xff, 0xc0, 0x0f, 0xfc, 0x3f, 0xe0, 0xff,
|
||||
0xc3, 0xff, 0x7f, 0x38, 0xfc, 0xc1, 0x02, 0x3f, 0xff, 0xff, 0xc0, 0x0f,
|
||||
0xfc, 0x3f, 0xf0, 0xff, 0xc1, 0xff, 0x7f, 0x3c, 0xfc, 0x01, 0xc0, 0x3f,
|
||||
0xff, 0x7f, 0xc0, 0x0f, 0xfc, 0x1f, 0xf0, 0xff, 0xc1, 0xff, 0x3f, 0x3c,
|
||||
0xfc, 0x01, 0xe0, 0x3f, 0xff, 0x7f, 0xc0, 0x0f, 0xfc, 0x0f, 0xf8, 0xff,
|
||||
0xe1, 0xff, 0x1f, 0x3e, 0xfc, 0x00, 0xc0, 0x3f, 0xfb, 0x3f, 0xe0, 0x0f,
|
||||
0xfc, 0x01, 0xf8, 0xff, 0xe0, 0xff, 0x0f, 0x3f, 0xf8, 0xf0, 0x81, 0x3f,
|
||||
0xc3, 0x0f, 0xe0, 0x0f, 0x00, 0x00, 0xfc, 0xff, 0xf0, 0xff, 0x0f, 0x00,
|
||||
0xfc, 0xf0, 0x03, 0x3f, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xfe, 0xff,
|
||||
0xf0, 0xff, 0x07, 0x00, 0x78, 0xf0, 0x87, 0x3f, 0x03, 0x00, 0xf8, 0x0f,
|
||||
0x00, 0x80, 0xff, 0x7f, 0xf0, 0xff, 0x03, 0x00, 0x78, 0xf8, 0x87, 0x3f,
|
||||
0x01, 0x00, 0xfc, 0x0f, 0x00, 0xc0, 0xff, 0x7f, 0xf8, 0xff, 0x43, 0x15,
|
||||
0x78, 0xf8, 0x83, 0x3f, 0x03, 0x00, 0xff, 0x0f, 0x00, 0xf8, 0xff, 0x7f,
|
||||
0xf8, 0xff, 0xe1, 0x3f, 0x38, 0xf8, 0xc1, 0x3f, 0x1f, 0xe0, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xf0, 0x3f, 0x38, 0x00, 0xc0, 0x3f,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x40, 0xf8, 0x3f,
|
||||
0x38, 0x00, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
||||
0x00, 0x60, 0xf8, 0x3f, 0x18, 0x00, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x3f, 0x00, 0x20, 0xfc, 0x7f, 0x18, 0x00, 0xff, 0x3f,
|
||||
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, 0xff, 0x3f, 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, 0xff, 0x3f, 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, 0xff, 0x3f,
|
||||
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, 0xff, 0x3f, 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, 0xff, 0x3f };
|
||||
|
||||
//Added by Sloeber
|
||||
#pragma once
|
||||
@@ -8,7 +8,30 @@
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[platformio]
|
||||
default_envs = heltec_wifi_lora_32_V2
|
||||
|
||||
[env:heltec_wifi_lora_32_V2]
|
||||
platform = espressif32
|
||||
board = heltec_wifi_lora_32_V2
|
||||
tasks =
|
||||
framework = arduino
|
||||
build_flags = -D ENVIRONMENT=1
|
||||
lib_deps =
|
||||
#heltecautomation/Heltec ESP32 Dev-Boards@^1.1.0
|
||||
ericksimoes/Ultrasonic@^3.0.0
|
||||
256dpi/MQTT@^2.4.8
|
||||
http://192.168.2.3/Bonobo.Git.Server/OLEDDisplay.git
|
||||
monitor_speed = 115200
|
||||
|
||||
|
||||
[env:lolin32]
|
||||
platform = espressif32
|
||||
board = lolin32
|
||||
framework = arduino
|
||||
build_flags = -D ENVIRONMENT=2
|
||||
lib_deps =
|
||||
ericksimoes/Ultrasonic@^3.0.0
|
||||
256dpi/MQTT@^2.4.8
|
||||
http://192.168.2.3/Bonobo.Git.Server/OLEDDisplay.git
|
||||
monitor_speed = 115200
|
||||
BIN
src/.DS_Store
vendored
Normal file
BIN
src/.DS_Store
vendored
Normal file
Binary file not shown.
150
src/display.cpp
Normal file
150
src/display.cpp
Normal file
@@ -0,0 +1,150 @@
|
||||
#include "Arduino.h"
|
||||
#include "display.h"
|
||||
#include "sensor.h"
|
||||
#include "net.h"
|
||||
#include <Wire.h>
|
||||
#include "SSD1306wire.h"
|
||||
#include <wifi.h>
|
||||
#include "hal.h"
|
||||
#include "power.h"
|
||||
|
||||
SSD1306Wire *display;
|
||||
bool initOK = false;
|
||||
char buf[128];
|
||||
|
||||
void displayDrawBatt(uint16_t voltage, bool sleep)
|
||||
{
|
||||
voltage = powerGetVbatt();
|
||||
uint16_t xstart = 104;
|
||||
uint16_t ystart = 30;
|
||||
display->setColor(BLACK);
|
||||
display->fillRect(xstart - 5, ystart, 29, 24);
|
||||
|
||||
display->setColor(WHITE);
|
||||
display->drawRect(xstart, ystart, 12, 6);
|
||||
display->fillRect(xstart + 1, xstart + 2, 1, 2);
|
||||
|
||||
uint16_t v = voltage;
|
||||
if (v < MINBATT)
|
||||
{
|
||||
v = MINBATT;
|
||||
}
|
||||
if (v > MAXBATT)
|
||||
{
|
||||
v = MAXBATT;
|
||||
}
|
||||
double pct = map(v, MINBATT, MAXBATT, 0, 100);
|
||||
uint8_t bars = round(pct / 10.0);
|
||||
display->fillRect(xstart + 1, ystart + 1, bars, 4);
|
||||
display->setFont(ArialMT_Plain_10);
|
||||
display->setTextAlignment(TEXT_ALIGN_RIGHT);
|
||||
|
||||
display->drawString(127, 5, String((int)round(pct)) + "%");
|
||||
display->drawString(127, 14, String(round(voltage / 10.0) / 100.0) + "V");
|
||||
Serial.printf("battery = %i mv\n", voltage);
|
||||
|
||||
#if defined(__DEBUG) && __DEBUG > 0
|
||||
static uint8_t c = 0;
|
||||
if ((c++ % 10) == 0)
|
||||
{
|
||||
c = 1;
|
||||
Serial.printf("VBAT: %dmV [%4.1f%%] %d bars\n", voltage, pct, bars);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void displayDrawShutdown(void)
|
||||
{
|
||||
display->clear();
|
||||
display->setColor(WHITE);
|
||||
display->setFont(ArialMT_Plain_10);
|
||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
display->drawString(64, 24, "Shutdown!!");
|
||||
display->display();
|
||||
}
|
||||
|
||||
void displayDrawNet(void)
|
||||
{
|
||||
if (netIsConnected())
|
||||
{
|
||||
display->drawString(0, 0, "WiFi connected.");
|
||||
}
|
||||
else
|
||||
{
|
||||
display->drawString(0, 0, "WiFi Disconnected.");
|
||||
}
|
||||
display->drawString(0, 15, "IP: ");
|
||||
display->drawString(20, 15, WiFi.localIP().toString());
|
||||
}
|
||||
|
||||
void displayDrawSensor(void)
|
||||
{
|
||||
sprintf(buf, "Dist: %i cm", sensorGetDistance());
|
||||
display->drawString(0, 45, buf);
|
||||
}
|
||||
|
||||
void displayDrawMailbox(void)
|
||||
{
|
||||
if (mailboxGetMailDetected())
|
||||
{
|
||||
uint8_t xstart = 6;
|
||||
uint8_t ystart = 6;
|
||||
uint8_t width = 64;
|
||||
uint8_t height = 40;
|
||||
display->setColor(WHITE);
|
||||
display->fillRect(xstart, ystart, width, height);
|
||||
display->setColor(BLACK);
|
||||
display->drawLine(xstart, ystart, (width / 2) + xstart - 1, (height / 5 * 3) + ystart - 1);
|
||||
display->drawLine(xstart + width - 1, ystart, (width / 2) + xstart, (height / 5 * 3) + ystart - 1);
|
||||
display->drawLine(xstart, ystart + height - 1, (width / 5 * 2), (height / 2));
|
||||
display->drawLine(xstart + width - 1, ystart + height - 1, width / 5 * 4 + 3, height / 2);
|
||||
}
|
||||
}
|
||||
|
||||
void displayUpdate(void)
|
||||
{
|
||||
if (!initOK)
|
||||
{
|
||||
Serial.println("display update FAILED");
|
||||
return;
|
||||
}
|
||||
|
||||
display->clear();
|
||||
//displayDrawNet();
|
||||
displayDrawBatt(0, false);
|
||||
displayDrawSensor();
|
||||
displayDrawMailbox();
|
||||
display->display();
|
||||
|
||||
delay(10);
|
||||
}
|
||||
|
||||
void displayInit(void)
|
||||
{
|
||||
Serial.print("display Init");
|
||||
display = new SSD1306Wire(0x3c, SDA_OLED, SCL_OLED, RST_OLED, GEOMETRY_128_64);
|
||||
|
||||
if (display == NULL)
|
||||
{
|
||||
Serial.println("Failed to init display, NULL ptr");
|
||||
return;
|
||||
}
|
||||
initOK = display->init();
|
||||
display->setBrightness(255);
|
||||
display->flipScreenVertically();
|
||||
display->setFont(ArialMT_Plain_10);
|
||||
display->drawString(0, 0, "OLED initial done!");
|
||||
display->display();
|
||||
delay(1000);
|
||||
Serial.print(".");
|
||||
|
||||
display->clear();
|
||||
display->display();
|
||||
|
||||
if (!initOK)
|
||||
{
|
||||
Serial.println("display Init FAILED");
|
||||
return;
|
||||
}
|
||||
Serial.println(" done");
|
||||
}
|
||||
12
src/display.h
Normal file
12
src/display.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef DISPLAYH
|
||||
#define DISPLAYH
|
||||
|
||||
|
||||
void displayInit(void);
|
||||
void displayUpdate(void);
|
||||
void displayDrawBatt(uint16_t voltage, bool sleep);
|
||||
void displayDrawShutdown(void);
|
||||
|
||||
|
||||
|
||||
#endif //DISPLAYH
|
||||
51
src/hal.h
Normal file
51
src/hal.h
Normal file
@@ -0,0 +1,51 @@
|
||||
#ifndef HALH
|
||||
#define HALH
|
||||
|
||||
#define MAXBATT 4200 // The default Lipo is 4200mv when the battery is fully charged.
|
||||
#define LIGHT_SLEEP_VOLTAGE 3750 // Point where start light sleep
|
||||
#define MINBATT 3200 // The default Lipo is 3200mv when the battery is empty...this WILL be low on the 3.3v rail specs!!!
|
||||
|
||||
|
||||
#ifndef ENVIRONMENT
|
||||
#error "Must define ENVIRONMENT..."
|
||||
#endif
|
||||
|
||||
#define HELTECv2 1
|
||||
#define LOLIN32 2
|
||||
#define HELTECv21 3
|
||||
|
||||
|
||||
#if ENVIRONMENT == HELTECv2 //HELTEC WIFI LORA V2
|
||||
|
||||
#define TRIGGER 27
|
||||
#define ECHO 14
|
||||
|
||||
#define VBATT ADC2_CHANNEL_4
|
||||
#define VEXT 21
|
||||
|
||||
#endif
|
||||
|
||||
#if ENVIRONMENT == LOLIN32 //LOLIN32
|
||||
|
||||
#define SDA_OLED 15
|
||||
#define SCL_OLED 4
|
||||
#define RST_OLED 17
|
||||
|
||||
#define TRIGGER 13
|
||||
#define ECHO 14
|
||||
|
||||
#define VBATT ADC2_CHANNEL_1
|
||||
#define VEXT 21
|
||||
#endif
|
||||
|
||||
#if ENVIRONMENT == HELTECv21 //
|
||||
|
||||
#define TRIGGER 27
|
||||
#define ECHO 14
|
||||
|
||||
#define VBATT ADC2_CHANNEL_1
|
||||
#define VEXT 21
|
||||
|
||||
#endif
|
||||
|
||||
#endif //HALH
|
||||
100
src/img/mail-black-envelope-symbol_icon-icons.com_56519-2.xbm
Normal file
100
src/img/mail-black-envelope-symbol_icon-icons.com_56519-2.xbm
Normal file
@@ -0,0 +1,100 @@
|
||||
#define 30884_7a5aa225e163575300dd0301e8bbff692538a943f474f800a4a291b956fc794e_width 96
|
||||
#define 30884_7a5aa225e163575300dd0301e8bbff692538a943f474f800a4a291b956fc794e_height 96
|
||||
static char 30884_7a5aa225e163575300dd0301e8bbff692538a943f474f800a4a291b956fc794e_bits[] = {
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BIN
src/img/mail-black.png
Normal file
BIN
src/img/mail-black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
46
src/mailbox.cpp
Normal file
46
src/mailbox.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include "Arduino.h"
|
||||
#include "mailbox.h"
|
||||
#include "sensor.h"
|
||||
|
||||
#define MAILCOUNTERFILTER 10 //minimum samples should be equal before triggering mail alert
|
||||
#define MAILCOUNTERTHRESHOLT 2 //minimum delta distance in cm
|
||||
|
||||
uint8_t previousDistance = 0;
|
||||
uint8_t mailcounter = 0;
|
||||
bool mailFlag = false;
|
||||
bool mailDetected = false;
|
||||
|
||||
void mailboxhandler(void)
|
||||
{
|
||||
uint8_t currentDistance = sensorGetDistance();
|
||||
|
||||
if (currentDistance == previousDistance)
|
||||
{
|
||||
if (mailFlag)
|
||||
{
|
||||
if (mailcounter++ >= MAILCOUNTERFILTER)
|
||||
{
|
||||
mailDetected = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mailcounter = 0;
|
||||
}
|
||||
}
|
||||
else if (currentDistance < (previousDistance - MAILCOUNTERTHRESHOLT))
|
||||
{
|
||||
mailFlag = true;
|
||||
mailcounter = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
mailFlag = false;
|
||||
}
|
||||
previousDistance = currentDistance;
|
||||
}
|
||||
|
||||
bool mailboxGetMailDetected(void)
|
||||
{
|
||||
return mailDetected;
|
||||
}
|
||||
8
src/mailbox.h
Normal file
8
src/mailbox.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef MAILBOXH
|
||||
#define MAILBOXH
|
||||
|
||||
bool mailboxGetMailDetected(void);
|
||||
void mailboxhandler(void);
|
||||
|
||||
|
||||
#endif //MAILBOXH
|
||||
42
src/main.cpp
42
src/main.cpp
@@ -1,9 +1,39 @@
|
||||
#include <Arduino.h>
|
||||
#include "arduino.h"
|
||||
#include "time.h"
|
||||
#include "sleep.h"
|
||||
#include "net.h"
|
||||
#include "sensor.h"
|
||||
#include "display.h"
|
||||
#include "power.h"
|
||||
#include "mailbox.h"
|
||||
|
||||
void setup() {
|
||||
// put your setup code here, to run once:
|
||||
#define TIME_TO_SLEEP 1 /* Time ESP32 will go to sleep (in seconds) */
|
||||
|
||||
void serialInit(void)
|
||||
{
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
delay(50);
|
||||
Serial.print("Serial initial done\r\n");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
}
|
||||
void setup()
|
||||
{
|
||||
serialInit();
|
||||
displayInit();
|
||||
sensorInit();
|
||||
//netInit();
|
||||
powerInit();
|
||||
//sleepInit(TIME_TO_SLEEP);
|
||||
displayUpdate();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
powerHandler();
|
||||
sensorUpdateDistance();
|
||||
displayUpdate();
|
||||
mailboxhandler();
|
||||
//sleepStart();
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
33
src/net.cpp
Normal file
33
src/net.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#include "Arduino.h"
|
||||
#include "net.h"
|
||||
#include <WiFi.h>
|
||||
|
||||
|
||||
// Replace with your network credentials
|
||||
const char *ssid = "poes";
|
||||
const char *password = "Rijnstraat214";
|
||||
|
||||
|
||||
void netInit(void)
|
||||
{
|
||||
Serial.print("Inet init ");
|
||||
WiFi.begin(ssid, password);
|
||||
delay(10);
|
||||
int counter = 30;
|
||||
while (WiFi.status() != WL_CONNECTED && counter)
|
||||
{
|
||||
Serial.print(".");
|
||||
delay(500);
|
||||
}
|
||||
Serial.println("done");
|
||||
}
|
||||
|
||||
bool netIsConnected( void )
|
||||
{
|
||||
return (WiFi.status() == WL_CONNECTED);
|
||||
}
|
||||
|
||||
const char* netGetSSID( void )
|
||||
{
|
||||
return ssid;
|
||||
}
|
||||
9
src/net.h
Normal file
9
src/net.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef NETH
|
||||
#define NETH
|
||||
|
||||
void netInit(void);
|
||||
bool netIsConnected( void );
|
||||
const char* netGetSSID( void );
|
||||
|
||||
|
||||
#endif //NETH
|
||||
171
src/power.cpp
Normal file
171
src/power.cpp
Normal file
@@ -0,0 +1,171 @@
|
||||
#include "arduino.h"
|
||||
#include "power.h"
|
||||
#include "hal.h"
|
||||
#include <esp_adc_cal.h>
|
||||
#include <driver/adc.h>
|
||||
#include "display.h"
|
||||
|
||||
#define VOLTAGE_DIVIDER 2.08 // Lora has 220k/100k voltage divider so need to reverse that reduction via (220k+100k)/100k on vbat GPIO37 or ADC1_1 (early revs were GPIO13 or ADC2_4 but do NOT use with WiFi.begin())
|
||||
#define DEFAULT_VREF 1100 // Default VREF use if no e-fuse calibration
|
||||
#define VBATT_SAMPLE 500 // Battery sample rate in ms
|
||||
#define VBATT_SMOOTH 20 // Number of averages in sample
|
||||
#define ADC_READ_STABILIZE 50 // in ms (delay from GPIO control and ADC connections times)
|
||||
#define LO_BATT_SLEEP_TIME 10 * 60 * 1000 * 1000 // How long when low batt to stay in sleep (us)
|
||||
#define __DEBUG 0 // DEBUG Serial output
|
||||
|
||||
uint16_t Sample();
|
||||
|
||||
|
||||
esp_adc_cal_characteristics_t *adc_chars;
|
||||
|
||||
uint16_t voltage = 666;
|
||||
|
||||
void powerInit(void)
|
||||
{
|
||||
#if (ENVIRONMENT == HELTECv21)
|
||||
adc_chars = (esp_adc_cal_characteristics_t *)calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
||||
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, DEFAULT_VREF, adc_chars);
|
||||
adc1_config_width(ADC_WIDTH_BIT_12);
|
||||
adc1_config_channel_atten(VBATT, ADC_ATTEN_DB_6);
|
||||
#else
|
||||
// Use this for older V2.0 with VBatt reading wired to GPIO13
|
||||
adc_chars = (esp_adc_cal_characteristics_t *)calloc(1, sizeof(esp_adc_cal_characteristics_t));
|
||||
esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_2, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, DEFAULT_VREF, adc_chars);
|
||||
adc2_config_channel_atten(VBATT, ADC_ATTEN_DB_6);
|
||||
#endif
|
||||
|
||||
if (val_type)
|
||||
; // Suppress warning
|
||||
|
||||
Serial.printf("ADC Calibration: ");
|
||||
if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF)
|
||||
{
|
||||
Serial.printf("eFuse Vref\n");
|
||||
}
|
||||
else if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP)
|
||||
{
|
||||
Serial.printf("Two Point\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("Default[%dmV]\n", DEFAULT_VREF);
|
||||
}
|
||||
|
||||
Serial.println("Power init: ADC done");
|
||||
// Prime the Sample register
|
||||
for (uint8_t i = 0; i < VBATT_SMOOTH; i++)
|
||||
{
|
||||
Sample();
|
||||
}
|
||||
Serial.println("Power init: buffer done");
|
||||
pinMode(VEXT, OUTPUT);
|
||||
//digitalWrite(VEXT, LOW); // ESP32 Lora v2.1 reads on GPIO37 when GPIO21 is low
|
||||
//delay(ADC_READ_STABILIZE); // let GPIO stabilize
|
||||
Serial.println("Power init done");
|
||||
}
|
||||
|
||||
|
||||
uint16_t powerGetVbatt(void)
|
||||
{
|
||||
return voltage;
|
||||
}
|
||||
|
||||
void powerHandler(void)
|
||||
{
|
||||
voltage = Sample();
|
||||
//displayDrawBatt(voltage, voltage < LIGHT_SLEEP_VOLTAGE);
|
||||
|
||||
if (voltage < MINBATT)
|
||||
{ // Low Voltage cut off shut down to protect battery as long as possible
|
||||
displayDrawShutdown();
|
||||
delay(2000);
|
||||
#if defined(__DEBUG) && __DEBUG > 0
|
||||
Serial.printf(" !! Shutting down...low battery volotage: %dmV.\n", voltage);
|
||||
delay(10);
|
||||
#endif
|
||||
esp_sleep_enable_timer_wakeup(LO_BATT_SLEEP_TIME);
|
||||
esp_deep_sleep_start();
|
||||
}
|
||||
else if (voltage < LIGHT_SLEEP_VOLTAGE)
|
||||
{ // Use light sleep once on battery
|
||||
uint64_t s = VBATT_SAMPLE;
|
||||
#if defined(__DEBUG) && __DEBUG > 0
|
||||
Serial.printf(" - Light Sleep (%dms)...battery volotage: %dmV.\n", (int)s, voltage);
|
||||
delay(20);
|
||||
#endif
|
||||
esp_sleep_enable_timer_wakeup(s * 1000); // Light Sleep does not flush buffer
|
||||
esp_light_sleep_start();
|
||||
}
|
||||
delay(ADC_READ_STABILIZE);
|
||||
}
|
||||
|
||||
|
||||
// Heltec WiFi LoRa V2 battery read example
|
||||
// by Jeff McClain jeff@themcclains.net
|
||||
//
|
||||
|
||||
// Poll the proper ADC for VBatt on Heltec Lora 32 with GPIO21 toggled
|
||||
uint16_t ReadVBatt()
|
||||
{
|
||||
int reading = 666;
|
||||
|
||||
digitalWrite(VEXT, LOW); // ESP32 Lora v2.1 reads on GPIO37 when GPIO21 is low
|
||||
delay(ADC_READ_STABILIZE); // let GPIO stabilize
|
||||
#if (defined(HELTEC_V2_1))
|
||||
pinMode(VBATT, OPEN_DRAIN); // ADC GPIO37
|
||||
reading = adc1_get_raw(VBATT);
|
||||
pinMode(VBATT, INPUT); // Disconnect ADC before GPIO goes back high so we protect ADC from direct connect to VBATT (i.e. no divider)
|
||||
#else
|
||||
pinMode(VBATT, OPEN_DRAIN); // ADC GPIO13
|
||||
adc2_get_raw(VBATT, ADC_WIDTH_BIT_12, &reading);
|
||||
pinMode(VBATT, INPUT); // Disconnect ADC before GPIO goes back high so we protect ADC from direct connect to VBATT (i.e. no divider
|
||||
#endif
|
||||
uint16_t rawVoltage = esp_adc_cal_raw_to_voltage(reading, adc_chars);
|
||||
//Serial.printf("battery rawvoltage = %i\n", rawVoltage);
|
||||
rawVoltage *= VOLTAGE_DIVIDER;
|
||||
//Serial.printf("battery sample = %i\n", rawVoltage);
|
||||
//digitalWrite(VEXT, HIGH); // ESP32 Lora v2.1 reads on GPIO37 when GPIO21 is low
|
||||
|
||||
return rawVoltage;
|
||||
|
||||
}
|
||||
|
||||
// Use a buffer to average/sample ADC
|
||||
uint16_t Sample()
|
||||
{
|
||||
static uint8_t i = 0;
|
||||
static uint16_t samp[VBATT_SMOOTH];
|
||||
static int32_t t = 0;
|
||||
static bool f = true;
|
||||
if (f)
|
||||
{
|
||||
for (uint8_t c = 0; c < VBATT_SMOOTH; c++)
|
||||
{
|
||||
samp[c] = 0;
|
||||
}
|
||||
f = false;
|
||||
} // Initialize the sample array first time
|
||||
t -= samp[i]; // doing a rolling recording, so remove the old rolled around value out of total and get ready to put new one in.
|
||||
if (t < 0)
|
||||
{
|
||||
t = 0;
|
||||
}
|
||||
|
||||
// ADC read
|
||||
samp[i] = ReadVBatt();
|
||||
#if defined(__DEBUG) && __DEBUG > 0
|
||||
Serial.printf("ADC Raw Reading[%d]: %d", i, voltage);
|
||||
#endif
|
||||
t += samp[i];
|
||||
|
||||
if (++i >= VBATT_SMOOTH)
|
||||
{
|
||||
i = 0;
|
||||
}
|
||||
uint16_t s = round(((float)t / (float)VBATT_SMOOTH));
|
||||
#if defined(__DEBUG) && __DEBUG > 0
|
||||
Serial.printf(" Smoothed of %d/%d = %d\n", t, VBATT_S MOOTH, s);
|
||||
#endif
|
||||
|
||||
return s;
|
||||
}
|
||||
10
src/power.h
Normal file
10
src/power.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef POWERH
|
||||
#define POWERH
|
||||
|
||||
void powerInit(void);
|
||||
void powerHandler(void);
|
||||
uint16_t powerGetVbatt(void);
|
||||
|
||||
|
||||
|
||||
#endif //POWERH
|
||||
33
src/sensor.cpp
Normal file
33
src/sensor.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#include "Arduino.h"
|
||||
#include "sensor.h"
|
||||
#include <Ultrasonic.h>
|
||||
#include "hal.h"
|
||||
|
||||
|
||||
RTC_DATA_ATTR int prevDistance = 0;
|
||||
|
||||
Ultrasonic ultrasonic(TRIGGER, ECHO);
|
||||
int distance;
|
||||
|
||||
void sensorInit(void)
|
||||
{
|
||||
sensorUpdateDistance();
|
||||
Serial.println("sensor Init done");
|
||||
}
|
||||
|
||||
|
||||
void sensorUpdateDistance(void)
|
||||
{
|
||||
distance = ultrasonic.read();
|
||||
Serial.printf("distance= %i CM\n",distance);
|
||||
}
|
||||
|
||||
int sensorGetDistance(void)
|
||||
{
|
||||
return distance;
|
||||
}
|
||||
|
||||
int sensorGetPreviousDistance(void)
|
||||
{
|
||||
return prevDistance;
|
||||
}
|
||||
11
src/sensor.h
Normal file
11
src/sensor.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef SENSORH
|
||||
#define SENSORH
|
||||
|
||||
void sensorInit(void);
|
||||
void sensorUpdateDistance(void);
|
||||
int sensorGetDistance(void);
|
||||
int sensorGetPreviousDistance(void);
|
||||
|
||||
|
||||
|
||||
#endif //SENSORH
|
||||
71
src/sleep.cpp
Normal file
71
src/sleep.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include "arduino.h"
|
||||
#include "sleep.h"
|
||||
|
||||
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
||||
|
||||
RTC_DATA_ATTR int bootCount = 0;
|
||||
|
||||
/*
|
||||
Method to print the reason by which ESP32
|
||||
has been awaken from sleep
|
||||
*/
|
||||
void print_wakeup_reason()
|
||||
{
|
||||
esp_sleep_wakeup_cause_t wakeup_reason;
|
||||
|
||||
wakeup_reason = esp_sleep_get_wakeup_cause();
|
||||
|
||||
switch (wakeup_reason)
|
||||
{
|
||||
case ESP_SLEEP_WAKEUP_EXT0:
|
||||
Serial.println("Wakeup caused by external signal using RTC_IO");
|
||||
break;
|
||||
case ESP_SLEEP_WAKEUP_EXT1:
|
||||
Serial.println("Wakeup caused by external signal using RTC_CNTL");
|
||||
break;
|
||||
case ESP_SLEEP_WAKEUP_TIMER:
|
||||
Serial.println("Wakeup caused by timer");
|
||||
break;
|
||||
case ESP_SLEEP_WAKEUP_TOUCHPAD:
|
||||
Serial.println("Wakeup caused by touchpad");
|
||||
break;
|
||||
case ESP_SLEEP_WAKEUP_ULP:
|
||||
Serial.println("Wakeup caused by ULP program");
|
||||
break;
|
||||
default:
|
||||
Serial.printf("Wakeup was not caused by deep sleep: %d\n", wakeup_reason);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sleepInit(unsigned int duration)
|
||||
{
|
||||
//set wakeup sources
|
||||
++bootCount;
|
||||
Serial.println("Boot number: " + String(bootCount));
|
||||
|
||||
//Print the wakeup reason for ESP32
|
||||
print_wakeup_reason();
|
||||
|
||||
/*
|
||||
First we configure the wake up source
|
||||
We set our ESP32 to wake up every 5 seconds
|
||||
*/
|
||||
esp_sleep_enable_timer_wakeup(duration * uS_TO_S_FACTOR);
|
||||
Serial.println("Setup ESP32 to sleep for every " + String(duration) +
|
||||
" Seconds");
|
||||
}
|
||||
|
||||
void sleepCallback(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sleepStart()
|
||||
{
|
||||
Serial.flush();
|
||||
Serial.println("Going to sleep now");
|
||||
Serial.flush();
|
||||
delay(100);
|
||||
esp_light_sleep_start();
|
||||
Serial.println("Woke");
|
||||
}
|
||||
9
src/sleep.h
Normal file
9
src/sleep.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef SLEEPH
|
||||
#define SLEEPH
|
||||
|
||||
void sleepInit(unsigned int duration );
|
||||
void sleepCallback(void);
|
||||
void sleepStart();
|
||||
|
||||
|
||||
#endif //SLEEPH
|
||||
14
src/workspace.code-workspace
Normal file
14
src/workspace.code-workspace
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": ".."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"files.associations": {
|
||||
"*.tcc": "cpp",
|
||||
"cmath": "cpp",
|
||||
"random": "cpp"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user