From 2d1803f30fe03f9b53ca45bac6fecaf04b1e91e6 Mon Sep 17 00:00:00 2001 From: kunigunde Date: Sun, 26 Nov 2023 16:05:51 +0100 Subject: [PATCH] first Upload --- AZ_TOUCH_BASIC/00_font.h | 576 ++++++++++++++++++++++++++++++ AZ_TOUCH_BASIC/00_settings.h | 74 ++++ AZ_TOUCH_BASIC/01_lang.h | 54 +++ AZ_TOUCH_BASIC/02_pref.h | 9 + AZ_TOUCH_BASIC/03_tft.h | 153 ++++++++ AZ_TOUCH_BASIC/04_wlan.h | 53 +++ AZ_TOUCH_BASIC/05_ntp.h | 10 + AZ_TOUCH_BASIC/06_index.h | 159 +++++++++ AZ_TOUCH_BASIC/06_web.h | 80 +++++ AZ_TOUCH_BASIC/07_ota.h | 54 +++ AZ_TOUCH_BASIC/50_test.h | 17 + AZ_TOUCH_BASIC/AZ_TOUCH_BASIC.ino | 70 ++++ 12 files changed, 1309 insertions(+) create mode 100644 AZ_TOUCH_BASIC/00_font.h create mode 100644 AZ_TOUCH_BASIC/00_settings.h create mode 100644 AZ_TOUCH_BASIC/01_lang.h create mode 100644 AZ_TOUCH_BASIC/02_pref.h create mode 100644 AZ_TOUCH_BASIC/03_tft.h create mode 100644 AZ_TOUCH_BASIC/04_wlan.h create mode 100644 AZ_TOUCH_BASIC/05_ntp.h create mode 100644 AZ_TOUCH_BASIC/06_index.h create mode 100644 AZ_TOUCH_BASIC/06_web.h create mode 100644 AZ_TOUCH_BASIC/07_ota.h create mode 100644 AZ_TOUCH_BASIC/50_test.h create mode 100644 AZ_TOUCH_BASIC/AZ_TOUCH_BASIC.ino diff --git a/AZ_TOUCH_BASIC/00_font.h b/AZ_TOUCH_BASIC/00_font.h new file mode 100644 index 0000000..a0dfaf5 --- /dev/null +++ b/AZ_TOUCH_BASIC/00_font.h @@ -0,0 +1,576 @@ +//two different fonts with german umlauts +#ifndef AT_Bold12pt7b_h +#define AT_Bold12pt7b_h + +const uint8_t AT_Bold12pt7bBitmaps[] PROGMEM = { + 0x10, 0x03, 0x00, 0x70, 0x0F, 0xFF, 0xFF, 0xF7, 0x00, 0x30, 0x01, 0x00, + 0x00, 0x80, 0x0C, 0x00, 0xEF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0xC0, 0x08, + 0x02, 0x00, 0x38, 0x03, 0x60, 0x31, 0x83, 0x06, 0x30, 0x1B, 0x00, 0x7F, + 0x1F, 0xF8, 0xF8, 0xC6, 0x06, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x60, 0x63, + 0x03, 0xF8, 0x1F, 0xC0, 0x00, 0x02, 0x00, 0x38, 0x03, 0xE0, 0x3F, 0x83, + 0xFE, 0x3F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFE, 0x07, 0xF0, 0x3F, + 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0, 0x00, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x62, 0x00, 0xCC, 0x01, 0xB8, + 0x03, 0xFF, 0xFF, 0xFF, 0xFD, 0xC0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x10, + 0xE0, 0x87, 0x1E, 0x38, 0xE3, 0x6D, 0x94, 0x6D, 0xB6, 0xCD, 0xB6, 0xD9, + 0xB6, 0x1B, 0x36, 0xC6, 0x37, 0x98, 0xC6, 0xE3, 0x18, 0xDC, 0x63, 0xFB, + 0xCC, 0x7F, 0x6D, 0x8C, 0x6D, 0xB1, 0x8D, 0xB6, 0xF1, 0xB6, 0xDE, 0x36, + 0xDB, 0xC6, 0xF1, 0xD8, 0xDC, 0x10, 0x00, 0x30, 0x22, 0x3C, 0x33, 0xB3, + 0x3B, 0x79, 0xBD, 0xBC, 0xDE, 0xD8, 0x63, 0x0C, 0x31, 0x86, 0x18, 0xC3, + 0x18, 0x63, 0x18, 0x31, 0x8C, 0x19, 0x86, 0x0C, 0xC3, 0x06, 0xC1, 0x83, + 0x60, 0x01, 0xB0, 0x00, 0xD8, 0x30, 0x6F, 0x98, 0x37, 0xC0, 0x07, 0xFF, + 0xC3, 0xFF, 0xF1, 0x80, 0x0C, 0xC6, 0x33, 0x60, 0xD8, 0xF0, 0x1C, 0x3C, + 0x07, 0x0D, 0x83, 0x63, 0x31, 0x8C, 0xC6, 0x00, 0x30, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, + 0xFF, 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, + 0xF7, 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, + 0xFF, 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, + 0xF8, 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, + 0x00, 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, + 0x7C, 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, + 0x73, 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, + 0x3C, 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, + 0x06, 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, + 0x1F, 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, + 0x07, 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, + 0xF8, 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, + 0x73, 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, + 0xC3, 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, + 0xC7, 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, + 0xF3, 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, + 0xFF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, + 0xFF, 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, + 0xC2, 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, + 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, + 0x83, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, + 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, + 0xF0, 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, + 0x78, 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, + 0xFC, 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, + 0xF3, 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, + 0x7F, 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, + 0xFF, 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, + 0x0F, 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0xE0, 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, + 0x9E, 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, + 0x0F, 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, + 0x7F, 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, + 0x3F, 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, + 0x6C, 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, + 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, + 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, + 0xF0, 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, + 0x00, 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, + 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, + 0xC0, 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, + 0x6C, 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, + 0x18, 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, + 0x07, 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, + 0x3F, 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, + 0xF0, 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, + 0xEF, 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, + 0x78, 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, + 0xFF, 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, + 0xBC, 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, + 0xFD, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, + 0x1F, 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, + 0x7F, 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, + 0xFB, 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, + 0x3E, 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, + 0x80, 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, + 0xF8, 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, + 0xFF, 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, + 0xFC, 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, + 0xF8, 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, + 0xFF, 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, + 0x8F, 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, + 0x3C, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, + 0xC0, 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, + 0xFE, 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, + 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, + 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x04, 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, + 0x83, 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, + 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, + 0xF0, 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, + 0xEF, 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, + 0x0F, 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, + 0xF8, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, + 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, + 0x87, 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, + 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x70, 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, + 0x87, 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, + 0xEE, 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, + 0xC0, 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, + 0xCF, 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, + 0x00, 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, + 0xE0, 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, + 0x1E, 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, + 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, + 0xFF, 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, + 0x40, 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, + 0x00, 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, + 0xE7, 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, + 0xFF, 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, + 0xF7, 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, + 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, + 0xBE, 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, + 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, + 0xFF, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, + 0x3F, 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, + 0x7F, 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, + 0xF8, 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, + 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, + 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, + 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x3C, 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, + 0xFF, 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, + 0xFF, 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, + 0x0F, 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, + 0x1E, 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, + 0x1F, 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, + 0xC7, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, + 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, + 0xFD, 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x00, 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, + 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, + 0xEF, 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, + 0xE7, 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, + 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, + 0xB8, 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, + 0xDC, 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, + 0xBB, 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, + 0x78, 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, + 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, + 0x87, 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, + 0x73, 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, + 0x80, 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, + 0xC0, 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, + 0x7F, 0x01, 0xE0, 0x61, 0xC6, 0xF1, 0xCF, 0xF1, 0xCF, 0x63, 0xE6, 0x03, + 0xE0, 0x07, 0x60, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, + 0x3C, 0x3F, 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, + 0x0F, 0xF0, 0x07, 0x60, 0x03, 0x78, 0x03, 0xFC, 0x01, 0xEC, 0x7C, 0x61, + 0xFF, 0x81, 0xFF, 0xF0, 0xF8, 0xF8, 0xF0, 0x1E, 0x78, 0x0F, 0x78, 0x03, + 0xFC, 0x01, 0xFE, 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xFC, 0x1F, 0xFC, 0x03, 0xF8, 0x00, 0x60, 0x1B, 0xC0, 0xFF, 0x03, 0xD8, + 0x06, 0x00, 0x03, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, + 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0x60, 0x67, 0x87, 0xBC, 0x3C, 0xC0, 0xC0, 0x00, 0x0F, 0xC1, + 0xFF, 0x8F, 0xFE, 0xF0, 0xF0, 0x07, 0x81, 0xFC, 0xFF, 0xEF, 0x8F, 0x78, + 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xE7, 0xC0, 0x60, 0x37, 0x83, 0xFC, + 0x1E, 0xC0, 0x60, 0x00, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0x78, 0xF7, 0x83, + 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xCF, 0xFE, 0x3F, 0xE0, + 0x7C, 0x00, 0x60, 0x6F, 0x0F, 0xF0, 0xF6, 0x06, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF1, + 0xFF, 0xFF, 0x7F, 0xF3, 0xEF, 0x3F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, + 0xEF, 0x1E, 0xF3, 0xCF, 0x78, 0xF7, 0xCF, 0x1E, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x1F, 0xF7, 0xEF, 0x7C, 0xF7, 0x80, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, + 0xE7, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const GFXglyph AT_Bold12pt7bGlyphs[] PROGMEM = { + { 0, 12, 8, 13, 0, -11 } // '' + ,{ 12, 12, 8, 13, 0, -11 } // '' + ,{ 24, 13, 17, 14, 0, -16 } // '' + ,{ 53, 13, 17, 14, 0, -16 } // '' + ,{ 82, 15, 13, 16, 0, -14 } // '' + ,{ 107, 19, 18, 20, 0, -17 } // '' + ,{ 151, 17, 18, 18, 0, -17 } // '' + ,{ 190, 18, 12, 19, 0, -14 } // '' + ,{ 217, 0, 0, 7, 0, 1 } // ' ' + ,{ 217, 4, 17, 8, 3, -16 } // '!' + ,{ 226, 10, 6, 11, 1, -17 } // '"' + ,{ 234, 13, 16, 13, 0, -15 } // '#' + ,{ 260, 13, 20, 13, 0, -17 } // '$' + ,{ 293, 19, 17, 21, 1, -16 } // '%' + ,{ 334, 16, 17, 17, 1, -16 } // '&' + ,{ 368, 4, 6, 6, 1, -17 } // ''' + ,{ 371, 6, 22, 8, 1, -17 } // '(' + ,{ 388, 6, 22, 8, 1, -17 } // ')' + ,{ 405, 7, 8, 9, 1, -17 } // '*' + ,{ 412, 11, 11, 14, 2, -10 } // '+' + ,{ 428, 4, 7, 6, 1, -2 } // ',' + ,{ 432, 6, 3, 8, 1, -7 } // '-' + ,{ 435, 4, 3, 6, 1, -2 } // '.' + ,{ 437, 6, 17, 7, 0, -16 } // '/' + ,{ 450, 12, 17, 13, 1, -16 } // '0' + ,{ 476, 7, 17, 14, 3, -16 } // '1' + ,{ 491, 12, 17, 13, 1, -16 } // '2' + ,{ 517, 12, 17, 13, 1, -16 } // '3' + ,{ 543, 11, 17, 13, 1, -16 } // '4' + ,{ 567, 12, 17, 13, 1, -16 } // '5' + ,{ 593, 12, 17, 13, 1, -16 } // '6' + ,{ 619, 11, 17, 13, 1, -16 } // '7' + ,{ 643, 12, 17, 13, 1, -16 } // '8' + ,{ 669, 12, 17, 13, 1, -16 } // '9' + ,{ 695, 4, 12, 6, 1, -11 } // ':' + ,{ 701, 4, 16, 6, 1, -11 } // ';' + ,{ 709, 12, 12, 14, 1, -11 } // '<' + ,{ 727, 12, 9, 14, 1, -9 } // '=' + ,{ 741, 12, 12, 14, 1, -11 } // '>' + ,{ 759, 12, 18, 15, 2, -17 } // '?' + ,{ 786, 21, 21, 23, 1, -17 } // '@' + ,{ 842, 16, 18, 17, 0, -17 } // 'A' + ,{ 878, 14, 18, 17, 2, -17 } // 'B' + ,{ 910, 16, 18, 17, 1, -17 } // 'C' + ,{ 946, 15, 18, 17, 2, -17 } // 'D' + ,{ 980, 13, 18, 16, 2, -17 } // 'E' + ,{ 1010, 12, 18, 15, 2, -17 } // 'F' + ,{ 1037, 16, 18, 18, 1, -17 } // 'G' + ,{ 1073, 14, 18, 18, 2, -17 } // 'H' + ,{ 1105, 4, 18, 7, 2, -17 } // 'I' + ,{ 1114, 11, 18, 14, 1, -17 } // 'J' + ,{ 1139, 16, 18, 17, 2, -17 } // 'K' + ,{ 1175, 11, 18, 15, 2, -17 } // 'L' + ,{ 1200, 17, 18, 21, 2, -17 } // 'M' + ,{ 1239, 15, 18, 18, 2, -17 } // 'N' + ,{ 1273, 17, 18, 19, 1, -17 } // 'O' + ,{ 1312, 14, 18, 16, 2, -17 } // 'P' + ,{ 1344, 17, 19, 19, 1, -17 } // 'Q' + ,{ 1385, 16, 18, 17, 2, -17 } // 'R' + ,{ 1421, 15, 18, 16, 1, -17 } // 'S' + ,{ 1455, 12, 18, 15, 2, -17 } // 'T' + ,{ 1482, 14, 18, 18, 2, -17 } // 'U' + ,{ 1514, 15, 18, 16, 0, -17 } // 'V' + ,{ 1548, 23, 18, 23, 0, -17 } // 'W' + ,{ 1600, 15, 18, 16, 1, -17 } // 'X' + ,{ 1634, 16, 18, 15, 0, -17 } // 'Y' + ,{ 1670, 13, 18, 15, 1, -17 } // 'Z' + ,{ 1700, 6, 23, 8, 2, -17 } // '[' + ,{ 1718, 7, 17, 7, 0, -16 } // '\' + ,{ 1733, 6, 23, 8, 0, -17 } // ']' + ,{ 1751, 12, 11, 14, 1, -16 } // '^' + ,{ 1768, 15, 2, 13, -1, 4 } // '_' + ,{ 1772, 4, 3, 6, 0, -17 } // '`' + ,{ 1774, 13, 13, 14, 1, -12 } // 'a' + ,{ 1796, 13, 18, 15, 2, -17 } // 'b' + ,{ 1826, 12, 13, 13, 1, -12 } // 'c' + ,{ 1846, 13, 18, 15, 1, -17 } // 'd' + ,{ 1876, 13, 13, 14, 1, -12 } // 'e' + ,{ 1898, 7, 18, 8, 1, -17 } // 'f' + ,{ 1914, 13, 18, 15, 1, -12 } // 'g' + ,{ 1944, 12, 18, 14, 2, -17 } // 'h' + ,{ 1971, 4, 18, 7, 2, -17 } // 'i' + ,{ 1980, 6, 23, 7, 0, -17 } // 'j' + ,{ 1998, 12, 18, 14, 2, -17 } // 'k' + ,{ 2025, 4, 18, 6, 2, -17 } // 'l' + ,{ 2034, 19, 13, 21, 2, -12 } // 'm' + ,{ 2065, 12, 13, 15, 2, -12 } // 'n' + ,{ 2085, 13, 13, 15, 1, -12 } // 'o' + ,{ 2107, 13, 18, 15, 2, -12 } // 'p' + ,{ 2137, 13, 18, 15, 1, -12 } // 'q' + ,{ 2167, 8, 13, 9, 2, -12 } // 'r' + ,{ 2180, 12, 13, 13, 1, -12 } // 's' + ,{ 2200, 6, 15, 8, 1, -14 } // 't' + ,{ 2212, 12, 13, 15, 2, -12 } // 'u' + ,{ 2232, 13, 13, 13, 0, -12 } // 'v' + ,{ 2254, 18, 13, 19, 0, -12 } // 'w' + ,{ 2284, 13, 13, 13, 0, -12 } // 'x' + ,{ 2306, 13, 18, 13, 0, -12 } // 'y' + ,{ 2336, 10, 13, 12, 1, -12 } // 'z' + ,{ 2353, 6, 23, 9, 1, -17 } // '{' + ,{ 2371, 2, 22, 7, 2, -17 } // '|' + ,{ 2377, 6, 23, 9, 3, -17 } // '}' + ,{ 2395, 12, 5, 12, 0, -7 } // '~' + ,{ 2403, 16, 18, 17, 0, -17 } // '' + ,{ 2439, 17, 18, 19, 1, -17 } // '€' + ,{ 2478, 14, 18, 18, 2, -17 } // '' + ,{ 2510, 13, 18, 14, 1, -17 } // '‚' + ,{ 2540, 13, 18, 15, 1, -17 } // 'ƒ' + ,{ 2570, 12, 18, 15, 2, -17 } // '„' + ,{ 2597, 12, 17, 13, 1, -16 } // '…' + ,{ 2623, 8, 13, 12, 2, -17 } // '†' +}; + +const GFXfont AT_Bold12pt7b PROGMEM = { + (uint8_t *)AT_Bold12pt7bBitmaps, + (GFXglyph *)AT_Bold12pt7bGlyphs, + 0x18, 0x86, 29 }; + +// Approx. 2858 bytes + +#endif + +#ifndef Standard9pt7b_h +#define Standard9pt7b_h + + +const uint8_t AT_Standard9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38, 0x66, 0x66, + 0xF6, 0x0F, 0x00, 0x90, 0x19, 0x81, 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, + 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, 0x60, 0x33, 0x01, 0x83, 0xE0, 0x60, + 0xC6, 0x03, 0x30, 0x1B, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, + 0x60, 0xC0, 0xF8, 0x00, 0xC0, 0x78, 0x0C, 0x00, 0x60, 0x3C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xB0, 0x61, 0xF0, 0x00, 0xC3, + 0x61, 0x80, 0x0F, 0xCE, 0x36, 0x18, 0x0C, 0x1E, 0x7B, 0x61, 0xB0, 0xD8, + 0xE7, 0xB8, 0x00, 0xC3, 0xC3, 0x00, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x66, 0x3C, 0xC3, 0xC3, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC7, 0x7B, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC6, 0xCC, + 0xC6, 0xC3, 0xC3, 0xC3, 0xDB, 0xCE, 0x38, 0xDB, 0x1E, 0x36, 0xC7, 0x00 +}; + +const GFXglyph AT_Standard9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 } // ' ' + ,{ 0, 2, 13, 6, 2, -12 } // '!' + ,{ 4, 5, 4, 6, 1, -12 } // '"' + ,{ 7, 10, 12, 10, 0, -11 } // '#' + ,{ 22, 9, 16, 10, 1, -13 } // '$' + ,{ 40, 16, 13, 16, 1, -12 } // '%' + ,{ 66, 11, 13, 12, 1, -12 } // '&' + ,{ 84, 2, 4, 4, 1, -12 } // ''' + ,{ 85, 4, 17, 6, 1, -12 } // '(' + ,{ 94, 4, 17, 6, 1, -12 } // ')' + ,{ 103, 5, 5, 7, 1, -12 } // '*' + ,{ 107, 6, 8, 11, 3, -7 } // '+' + ,{ 113, 2, 4, 5, 2, 0 } // ',' + ,{ 114, 4, 1, 6, 1, -4 } // '-' + ,{ 115, 2, 1, 5, 1, 0 } // '.' + ,{ 116, 5, 13, 5, 0, -12 } // '/' + ,{ 125, 8, 13, 10, 1, -12 } // '0' + ,{ 138, 4, 13, 10, 3, -12 } // '1' + ,{ 145, 9, 13, 10, 1, -12 } // '2' + ,{ 160, 8, 13, 10, 1, -12 } // '3' + ,{ 173, 7, 13, 10, 2, -12 } // '4' + ,{ 185, 9, 13, 10, 1, -12 } // '5' + ,{ 200, 9, 13, 10, 1, -12 } // '6' + ,{ 215, 8, 13, 10, 0, -12 } // '7' + ,{ 228, 9, 13, 10, 1, -12 } // '8' + ,{ 243, 8, 13, 10, 1, -12 } // '9' + ,{ 256, 2, 10, 5, 1, -9 } // ':' + ,{ 259, 3, 12, 5, 1, -8 } // ';' + ,{ 264, 9, 9, 11, 1, -8 } // '<' + ,{ 275, 9, 4, 11, 1, -5 } // '=' + ,{ 280, 9, 9, 11, 1, -8 } // '>' + ,{ 291, 9, 13, 10, 1, -12 } // '?' + ,{ 306, 17, 16, 18, 1, -12 } // '@' + ,{ 340, 12, 13, 12, 0, -12 } // 'A' + ,{ 360, 11, 13, 12, 1, -12 } // 'B' + ,{ 378, 11, 13, 13, 1, -12 } // 'C' + ,{ 396, 11, 13, 13, 1, -12 } // 'D' + ,{ 414, 9, 13, 11, 1, -12 } // 'E' + ,{ 429, 8, 13, 11, 1, -12 } // 'F' + ,{ 442, 12, 13, 14, 1, -12 } // 'G' + ,{ 462, 11, 13, 13, 1, -12 } // 'H' + ,{ 480, 2, 13, 5, 2, -12 } // 'I' + ,{ 484, 7, 13, 10, 1, -12 } // 'J' + ,{ 496, 11, 13, 12, 1, -12 } // 'K' + ,{ 514, 8, 13, 10, 1, -12 } // 'L' + ,{ 527, 13, 13, 15, 1, -12 } // 'M' + ,{ 549, 11, 13, 13, 1, -12 } // 'N' + ,{ 567, 13, 13, 14, 1, -12 } // 'O' + ,{ 589, 10, 13, 12, 1, -12 } // 'P' + ,{ 606, 13, 14, 14, 1, -12 } // 'Q' + ,{ 629, 12, 13, 13, 1, -12 } // 'R' + ,{ 649, 10, 13, 12, 1, -12 } // 'S' + ,{ 666, 9, 13, 11, 1, -12 } // 'T' + ,{ 681, 11, 13, 13, 1, -12 } // 'U' + ,{ 699, 11, 13, 12, 0, -12 } // 'V' + ,{ 717, 17, 13, 17, 0, -12 } // 'W' + ,{ 745, 12, 13, 12, 0, -12 } // 'X' + ,{ 765, 12, 13, 12, 0, -12 } // 'Y' + ,{ 785, 10, 13, 11, 1, -12 } // 'Z' + ,{ 802, 3, 17, 5, 1, -12 } // '[' + ,{ 809, 5, 13, 5, 0, -12 } // '\' + ,{ 818, 3, 17, 5, 0, -12 } // ']' + ,{ 825, 7, 7, 8, 1, -12 } // '^' + ,{ 832, 10, 1, 10, 0, 3 } // '_' + ,{ 834, 4, 3, 5, 0, -12 } // '`' + ,{ 836, 9, 10, 10, 1, -9 } // 'a' + ,{ 848, 9, 13, 10, 1, -12 } // 'b' + ,{ 863, 8, 10, 9, 1, -9 } // 'c' + ,{ 873, 8, 13, 10, 1, -12 } // 'd' + ,{ 886, 8, 10, 10, 1, -9 } // 'e' + ,{ 896, 4, 13, 5, 1, -12 } // 'f' + ,{ 903, 8, 14, 10, 1, -9 } // 'g' + ,{ 917, 8, 13, 10, 1, -12 } // 'h' + ,{ 930, 2, 13, 4, 1, -12 } // 'i' + ,{ 934, 4, 17, 4, 0, -12 } // 'j' + ,{ 943, 9, 13, 9, 1, -12 } // 'k' + ,{ 958, 2, 13, 4, 1, -12 } // 'l' + ,{ 962, 13, 10, 15, 1, -9 } // 'm' + ,{ 979, 8, 10, 10, 1, -9 } // 'n' + ,{ 989, 8, 10, 10, 1, -9 } // 'o' + ,{ 999, 9, 13, 10, 1, -9 } // 'p' + ,{ 1014, 8, 13, 10, 1, -9 } // 'q' + ,{ 1027, 5, 10, 6, 1, -9 } // 'r' + ,{ 1034, 8, 10, 9, 1, -9 } // 's' + ,{ 1044, 4, 12, 5, 1, -11 } // 't' + ,{ 1050, 8, 10, 10, 1, -9 } // 'u' + ,{ 1060, 9, 10, 9, 0, -9 } // 'v' + ,{ 1072, 13, 10, 13, 0, -9 } // 'w' + ,{ 1089, 8, 10, 9, 0, -9 } // 'x' + ,{ 1099, 9, 14, 9, 0, -9 } // 'y' + ,{ 1115, 7, 10, 9, 1, -9 } // 'z' + ,{ 1124, 4, 17, 6, 1, -12 } // '{' + ,{ 1133, 2, 17, 4, 2, -12 } // '|' + ,{ 1138, 4, 17, 6, 1, -12 } // '}' + ,{ 1147, 7, 3, 9, 1, -7 } // '~' + ,{ 1150, 12, 13, 12, 0, -12 } // 'Ä' + ,{ 1170, 13, 13, 14, 1, -12 } // 'ր' + ,{ 1192, 11, 13, 13, 1, -12 } // 'Ü' + ,{ 1211, 9, 13, 10, 1, -12 } // 'ä‚' + ,{ 1227, 8, 13, 10, 1, -12 } // 'öƒ' + ,{ 1240, 8, 13, 10, 1, -12 } // 'ü„' + ,{ 1253, 8, 13, 10, 1, -12 } // '߅' + ,{ 1266, 7, 6, 9, 1, -12 } // '†°' +}; + +const GFXfont AT_Standard9pt7b PROGMEM = { + (uint8_t *)AT_Standard9pt7bBitmaps, + (GFXglyph *)AT_Standard9pt7bGlyphs, + 0x20, 0x86, 22 }; + +// Approx. 1822 bytes +#endif diff --git a/AZ_TOUCH_BASIC/00_settings.h b/AZ_TOUCH_BASIC/00_settings.h new file mode 100644 index 0000000..4f6fecd --- /dev/null +++ b/AZ_TOUCH_BASIC/00_settings.h @@ -0,0 +1,74 @@ +/* + _______. _______ .___________.___________. __ .__ __. _______ _______. + / || ____|| | || | | \ | | / _____| / | + | (----`| |__ `---| |----`---| |----`| | | \| | | | __ | (----` + \ \ | __| | | | | | | | . ` | | | |_ | \ \ +.----) | | |____ | | | | | | | |\ | | |__| | .----) | +|_______/ |_______| |__| |__| |__| |__| \__| \______| |_______/ + +*/ +//select english or use german as standard +//#define ENGLISH +//########### TFT Color Settings +#define COLOR_BG ILI9341_BLACK +//########### +#define HOSTNAME "ESP-Hostname" +#define AP_NAME "ESP_WIFI_AP" +#define OTA_PW "ota_update" +#define TZONE "CET-1CEST,M3.5.0/03,M10.5.0/03" //https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv +/* + _______.___________. ___ .__ __. _______ ___ .______ _______ + / | | / \ | \ | | | \ / \ | _ \ | \ + | (----`---| |----` / ^ \ | \| | | .--. | / ^ \ | |_) | | .--. | + \ \ | | / /_\ \ | . ` | | | | | / /_\ \ | / | | | | +.----) | | | / _____ \ | |\ | | '--' | / _____ \ | |\ \----.| '--' | +|_______/ |__| /__/ \__\ |__| \__| |_______/ /__/ \__\ | _| `._____||_______/ + + _______ ______ .__ __. __.___________. ______ __ __ ___ .__ __. _______ _______ +| \ / __ \ | \ | | (_ ) | / || | | | / \ | \ | | / _____|| ____| +| .--. | | | | | \| | |/`---| |----` | ,----'| |__| | / ^ \ | \| | | | __ | |__ +| | | | | | | | . ` | | | | | | __ | / /_\ \ | . ` | | | |_ | | __| +| '--' | `--' | | |\ | | | | `----.| | | | / _____ \ | |\ | | |__| | | |____ +|_______/ \______/ |__| \__| |__| \______||__| |__| /__/ \__\ |__| \__| \______| |_______| +*/ +/*_______Pin definitions____*/ +#define BEEPER 21 // +//touchscreen // +#define TOUCH_CS 14 // +#define TOUCH_IRQ 27 // +//display // +#define TFT_CS 5 // +#define TFT_DC 4 // +#define TFT_RST 22 // +#define TFT_LED 15 // +#define TFT_MOSI 23 // +#define TFT_CLK 18 // +#define TFT_MISO 19 // +/*______End of definitions__*/ +//define names for fonts +#define FNT9 &AT_Standard9pt7b +#define FNT12 &AT_Bold12pt7b +#define LED_ON 0 +//definitions for text output alignment +#define ALIGNLEFT 0 +#define ALIGNCENTER 1 +#define ALIGNRIGHT 2 +//########### Global Variables +uint16_t minutes; //current number of minutes since midnight +uint8_t weekday; //current weekday +struct tm ti; //time structure with current time +boolean connected; //flag to signal active connection +uint32_t discon = 0; //tick-counter value to calculate disconnected time +uint32_t tick = 0; //last tick-counter value to trigger timed event +//########### Variables to hold configuration data +Preferences pref; +String ssid = ""; //ssid for WLAN connection +String pkey = ""; //passkey for WLAN connection +String ntp = "de.pool.ntp.org"; //NTP server url + +//instance of display driver +Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); +//instance for touchscreen driver +XPT2046_Touchscreen touch(TOUCH_CS, TOUCH_IRQ); +//instance to start callbacks on touch events +TouchEvent tevent(touch); \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/01_lang.h b/AZ_TOUCH_BASIC/01_lang.h new file mode 100644 index 0000000..c00de03 --- /dev/null +++ b/AZ_TOUCH_BASIC/01_lang.h @@ -0,0 +1,54 @@ + +#ifdef ENGLISH/*_____________________ ENGLISH _______________________*/ + //pref.h + #define LANG_loadPreferences "Load Preferences" + #define LANG_setPreferences "set pref: ssid= %i password = %i ntp = %i\n" + //tft.h + #define LANG_setBGLight "percent = %i LED = %i\n" + #define LANG_TextInBox "Token %s Length %i total %s Length %i Line %i\n" + #define LANG_OnTouchClick "Touch on %i, %i\n" + #define LANG_ShowOtaProgress "Progress %i%%" + //wlan.h + #define LANG_InitWifi "Connect WiFi" + #define LANG_WifiDisconnect "WIFI Disconnect" + #define LANG_ApDisconnect "AP disconnect" + #define LANG_SetWifiMode "Start WIFI Mode" + #define LANG_TryConnectWifi "Try to connect WIFI: " + #define LANG_WithPassword " with password: " + #define LANG_NoConnectionStartAp "No Connection! \nStart Access-Point." + #define LANG_ConnectionLost "Connection Lost !!!" + //ota.h + #define LANG_UpdateSketch "Updating Sketch" + #define LANG_Done "Done" + //test.h + #define LANG_Connected "connected" + #define LANG_NotConnected "Not connected" + #define LANG_ConnectAp "Please connect to AP SSID:" + #define LANG_ApIp "Call this IP:" +#else /*_____________________ GERMAN _______________________*/ + //pref.h + #define LANG_loadPreferences "Lade Einstellungen" + #define LANG_setPreferences "eingestellt: ssid= %i passwort = %i ntp = %i\n" + //tft.h + #define LANG_setBGLight "prozent = %i LED = %i\n" + #define LANG_TextInBox "Token %s Länge %i gesamt %s Länge %i Linie %i\n" + #define LANG_OnTouchClick "Berührung bei %i, %i\n" + #define LANG_ShowOtaProgress "Fortschritt %i%%" + //wlan.h + #define LANG_InitWifi "Verbinde WLAN" + #define LANG_WifiDisconnect "WLAN trennen" + #define LANG_ApDisconnect "AP trennen" + #define LANG_SetWifiMode "Starte WLAN Modus" + #define LANG_TryConnectWifi "Versuche Wlan : " + #define LANG_WithPassword " zu verbinden mit diesem Passwort: " + #define LANG_NoConnectionStartAp "Keine Verbindung! \nStarte Access-Point." + #define LANG_ConnectionLost "Verbindung verloren !!!" + //ota.h + #define LANG_UpdateSketch "Update Sketch" + #define LANG_Done "fertig" + //test.h + #define LANG_Connected "verbunden" + #define LANG_NotConnected "nicht verbunden" + #define LANG_ConnectAp "Bitte verbinde dich mit AP SSID:" + #define LANG_ApIp "Rufe dann diese IP auf:" +#endif \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/02_pref.h b/AZ_TOUCH_BASIC/02_pref.h new file mode 100644 index 0000000..a7faf7c --- /dev/null +++ b/AZ_TOUCH_BASIC/02_pref.h @@ -0,0 +1,9 @@ +void pref_GetValues(){ + Serial.println(LANG_loadPreferences); + pref.begin("esp_settings", false); + //get values from preferences + if (pref.isKey("ssid")) ssid = pref.getString("ssid"); + if (pref.isKey("pkey")) pkey = pref.getString("pkey"); + if (pref.isKey("ntp")) ntp = pref.getString("ntp"); + Serial.printf(LANG_setPreferences,ssid,pkey,ntp); +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/03_tft.h b/AZ_TOUCH_BASIC/03_tft.h new file mode 100644 index 0000000..102ae36 --- /dev/null +++ b/AZ_TOUCH_BASIC/03_tft.h @@ -0,0 +1,153 @@ +//adjust the brightness of the background led +void tft_setBGLight(uint8_t prct) { + uint16_t ledb; + ledb = 255*prct/100; + if (ledb > 255) ledb = 255; + if (ledb <3) ledb = 3; //minimal brightness + if (LED_ON == 0) ledb = 255 - ledb; + Serial.printf(LANG_setBGLight,prct,ledb); + //set the LED + analogWrite(TFT_LED, ledb); +} +//called from the main loop to handle touch events +void tft_TouchLoop() { + tevent.pollTouchScreen(); +} +//clear the whole display +void tft_DisplayClear() { + tft.fillScreen(COLOR_BG); +} +//encode text from unicode to display code for supplied font +//src and dst buffer needs to exist +void tft_encodeUnicode(const char* src, char* dst){ + uint8_t i = 0, i1 = 0; + char c; + uint16_t m = strlen(src); + do { + c = src[i]; + if (c==195) { //UTF8 characters german umlauts + i++; + switch (src[i]) { + case 164: c=130; break; //ä + case 182: c=131; break; //ö + case 188: c=132; break; //ü + case 159: c=133; break; //ß + case 132: c=127; break; //Ä + case 150: c=128; break; //Ö + case 156: c=129; break; //Ü + default: c=255; + } + } else if (c == 194) { //UTF8 char for degree symbol + i++; + if (src[i] == 176) c=134; else c=255; + } + if (c<135) dst[i1] = c; + i++; + i1++; + } while (i0)) { + tft.getTextBounds(token,0,100,&xt,&yt,&wt,&ht); + Serial.printf(LANG_TextInBox,token,wt,msg,len,l); + if ((len + wt + sp) < w) { + if (len > 0) { strcat(msg," "); len +=sp; } + len = len + wt; + strcat(msg,token); + } else { + x0 = x; + if (align == ALIGNCENTER) x0 += (w-len)/2; + if (align == ALIGNRIGHT) x0 += (w-len); + tft.setCursor(x0, y); + tft.print(msg); + len = wt; + strcpy(msg,token); + y = y + ht +1; + l--; + } + Serial.println(token); + token = strtok(NULL, " "); + + } + if ((len > 0) && (l>0)) { + x0 = x; + if (align == ALIGNCENTER) x0 += (w-len)/2; + if (align == ALIGNRIGHT) x0 += (w-len); + y = y + h0 +1; + tft.setCursor(x0, y); + tft.print(msg); + } + } +} +//register a callback for any touch event. +//we get position and type of the event +void tft_OnTouchClick(TS_Point p) { + char txt[50]; + sprintf(txt,"Touch on %i, %i\n",p.x,p.y); + tft_TextInBox(0,220,320,20,txt,ALIGNLEFT,false,ILI9341_WHITE,COLOR_BG,1); + //later on real Project you must select pages or actions here +} + +//show the progress of softwareupdate as a bar and a number +void tft_ShowOtaProgress(uint32_t prc) { + char tmp[20]; + sprintf(tmp,LANG_ShowOtaProgress,prc); + tft_TextInBox(5, 50, 310, 30, tmp, ALIGNLEFT, true, ILI9341_GREEN, COLOR_BG,1); + if (prc == 0) { + tft.drawRect(5,80,310,20,ILI9341_BLUE); + } else { + tft.fillRect(5,80,310 * prc / 100,20,ILI9341_BLUE); + } +} +//########################################## +//prepare display +void tft_SetupDisplay() { + pinMode(TFT_LED,OUTPUT); + tft_setBGLight(80); + tft.begin(); + tft.fillScreen(COLOR_BG); + tft.setRotation(3); + tft.setFont(FNT12); + touch.begin(); + tevent.setResolution(tft.width(),tft.height()); + tevent.setDrawMode(false); + //register callback function + tevent.registerOnTouchClick(tft_OnTouchClick); +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/04_wlan.h b/AZ_TOUCH_BASIC/04_wlan.h new file mode 100644 index 0000000..9b40189 --- /dev/null +++ b/AZ_TOUCH_BASIC/04_wlan.h @@ -0,0 +1,53 @@ +//connect to the WLAN +boolean wlan_InitWiFi(String ssid, String pkey) { + Serial.println(LANG_InitWifi); + boolean connected = false; + //first disconnect + Serial.print(LANG_WifiDisconnect); + WiFi.disconnect(); + Serial.print(LANG_ApDisconnect); + WiFi.softAPdisconnect(true); + Serial.print(LANG_SetWifiMode); + //satrt station mode + WiFi.setHostname(HOSTNAME); //define hostname + WiFi.mode(WIFI_STA); + Serial.print(LANG_TryConnectWifi); + Serial.println(ssid); + Serial.print(LANG_WithPassword); + Serial.println(pkey); + //if we have a config we try to connect + if (ssid != "") { + WiFi.begin(ssid.c_str(),pkey.c_str()); + uint8_t cnt = 0; + while ((WiFi.status() != WL_CONNECTED) && (cnt<20)){ + delay(500); + Serial.print("."); + cnt++; + } + Serial.println(); + if (WiFi.status() == WL_CONNECTED) { + Serial.print("IP: "); + Serial.println(WiFi.localIP()); + connected = true; + } + } + //if we have no connection /no config or wrong config) + //we start an access point to allow configuration + if (!connected) { + Serial.println(LANG_NoConnectionStartAp); + WiFi.mode(WIFI_AP); + WiFi.softAP(AP_NAME,"",1); + } + return connected; +} + +void wlan_DetectConnectionLost(){ + //detect a disconnect + if (connected && (WiFi.status() != WL_CONNECTED)){ + connected = false; + //remember tick count for automatic retry + discon = millis(); + Serial.printf("==>INFO Variable: connected= %i discon = %i weekday = %i\n",connected,discon,weekday); + Serial.println(LANG_ConnectionLost); + } +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/05_ntp.h b/AZ_TOUCH_BASIC/05_ntp.h new file mode 100644 index 0000000..266902e --- /dev/null +++ b/AZ_TOUCH_BASIC/05_ntp.h @@ -0,0 +1,10 @@ +void ntp_GetTime(){ + //setup real time clock + configTzTime(TZONE, ntp.c_str()); + //fill timestarukture ti, minutes and weekday with now + getLocalTime(&ti); + minutes = ti.tm_hour * 60 + ti.tm_min; + weekday = ti.tm_wday; + Serial.printf("==>INFO NTP: %i:%i Day: %i\n",ti.tm_hour,ti.tm_min,ti.tm_wday); + Serial.printf("==>INFO Variable: minutes= %i weekday = %i\n",minutes,weekday); +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/06_index.h b/AZ_TOUCH_BASIC/06_index.h new file mode 100644 index 0000000..bf3cd63 --- /dev/null +++ b/AZ_TOUCH_BASIC/06_index.h @@ -0,0 +1,159 @@ +//html for web pages +const char MAIN_page[] PROGMEM = R"=====( + + + + + + + + + + + + +

Web AZ-Touch

+ +
+
    +
  • +
+
+ +
+ +
+ +
+
+ + +
+
+
+ + +)====="; + +//***************************************************************************************************************** +const char CONFIG_page[] PROGMEM = R"=====( + + + + + + + + +

Web AZ-Touch

+
+
+
+ SSID: + +
+
+ PKEY: + +
+
+ +
+
+
+ + +)====="; diff --git a/AZ_TOUCH_BASIC/06_web.h b/AZ_TOUCH_BASIC/06_web.h new file mode 100644 index 0000000..34a8fa0 --- /dev/null +++ b/AZ_TOUCH_BASIC/06_web.h @@ -0,0 +1,80 @@ +//home page and templatefor options +#include "06_index.h" + +WebServer server(80); + +//called from main loop +void web_Loop() { + server.handleClient(); +} + +//handle root request +void web_HandleRoot() { + if (connected) { + //if connected send the main page + server.send(200,"text/html",MAIN_page); + } else { + //if not connected we use the config page without ajax + //we get parameters as arguments in the HTML-request + Serial.println("Get config:"); + uint8_t a = server.args(); + Serial.print(a); Serial.println(" Arguments"); + for (uint8_t i = 0; i oldprc) { + sprintf(tmp,"Progress %i%%",prc);// but this normaly you never see on OTA there is no serial Connection ;-) + tft_ShowOtaProgress(prc); + oldprc = prc; + } +} + +void ota_onError(ota_error_t error) { + char err[80]; + sprintf(err,"Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) sprintf(err,"Error[%u]: Auth Failed",error); + else if (error == OTA_BEGIN_ERROR) sprintf(err,"Error[%u] Begin Failed",error); + else if (error == OTA_CONNECT_ERROR) sprintf(err,"Error[%u] Connect Failed",error); + else if (error == OTA_RECEIVE_ERROR) sprintf(err,"Error[%u] Receive Failed",error); + else if (error == OTA_END_ERROR) sprintf(err,"Error[%u] End Failed",error); + tft_TextInBox(5,200,310,30,err,ALIGNLEFT,false,ILI9341_RED); +} +//############################################################################ +//prepare OTA +void ota_Setup() { + //set host name and passwort + ArduinoOTA.setHostname(HOSTNAME); + ArduinoOTA.setPassword(OTA_PW); + //register callback routines + ArduinoOTA.onStart(ota_onStart); + ArduinoOTA.onEnd(ota_onEnd); + ArduinoOTA.onProgress(ota_onProgress); + ArduinoOTA.onError(ota_onError); + //start OTA handling + ArduinoOTA.begin(); +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/50_test.h b/AZ_TOUCH_BASIC/50_test.h new file mode 100644 index 0000000..b27c7d1 --- /dev/null +++ b/AZ_TOUCH_BASIC/50_test.h @@ -0,0 +1,17 @@ +void test_ShowSetupWLAN(){ + char txt[100] = ""; + //Try to connect WLAN show progress on display + tft_DisplayClear(); + tft_TextInBox(5, 10, 310, 30, LANG_InitWifi, ALIGNCENTER, true, ILI9341_YELLOW, COLOR_BG,1); + tft_TextInBox(5, 50, 310, 30, ssid.c_str(), ALIGNCENTER, true, ILI9341_GREEN, COLOR_BG,1); + if (connected) { //successful connection + tft_TextInBox(5, 80, 310, 30, LANG_Connected, ALIGNCENTER, true, ILI9341_GREEN, COLOR_BG,1); + }else{ + tft_DisplayClear(); + tft_TextInBox(5, 10, 310, 30, LANG_NotConnected, ALIGNCENTER, true, ILI9341_RED, COLOR_BG,1); + tft_TextInBox(5, 60, 310, 30, LANG_ConnectAp, ALIGNCENTER, false, ILI9341_WHITE, COLOR_BG,1); + tft_TextInBox(5, 90, 310, 30, AP_NAME, ALIGNCENTER, false, ILI9341_GREEN, COLOR_BG,1); + tft_TextInBox(5, 120, 310, 30, LANG_ApIp, ALIGNCENTER, false, ILI9341_WHITE, COLOR_BG,1); + tft_TextInBox(5, 150, 310, 30, WiFi.softAPIP().toString().c_str(), ALIGNCENTER, false, ILI9341_GREEN, COLOR_BG,1); + } +} \ No newline at end of file diff --git a/AZ_TOUCH_BASIC/AZ_TOUCH_BASIC.ino b/AZ_TOUCH_BASIC/AZ_TOUCH_BASIC.ino new file mode 100644 index 0000000..81aed33 --- /dev/null +++ b/AZ_TOUCH_BASIC/AZ_TOUCH_BASIC.ino @@ -0,0 +1,70 @@ +/*______Import Libraries_______*/ +#include +#include +#include +#include +#include +#include +#include +#include +/*______End of Libraries_______*/ +#include "00_font.h" +#include "00_settings.h" +#include "01_lang.h" +#include "02_pref.h" +#include "03_tft.h" +#include "04_wlan.h" +#include "05_ntp.h" +#include "06_web.h" +#include "07_ota.h" + +#include "50_test.h" + +void setup() { + // put your setup code here, to run once: + Serial.begin(115200); + Serial.println("Start setup ########################"); + pref_GetValues(); + //setup display + tft_SetupDisplay(); + connected = wlan_InitWiFi(ssid, pkey); + test_ShowSetupWLAN(); + if (connected) { //successful connection + //setup real time clock + ntp_GetTime(); + } else { //connection not successful + //remember current tick count to allow + //a retry after five minutes disconnected + discon = millis(); + } + + //setup the web server + web_SetupWebserver(); + ota_Setup(); + //remember the tick count for the timed event + tick = millis(); + Serial.println("Ende setup ########################"); +} + +void loop() { + // put your main code here, to run repeatedly: + //Check over the air update + ArduinoOTA.handle(); + //Check for http requests + web_Loop(); + //check for touch events + tft_TouchLoop(); + //detect a disconnect + wlan_DetectConnectionLost(); + //timed event update time every minute + if ((millis() - tick) > 60000) { + //get date and time information + if (connected && getLocalTime(&ti)) { + minutes = ti.tm_hour * 60 + ti.tm_min; + weekday = ti.tm_wday; + } + tick = millis() - ti.tm_sec * 1000;//kingherold ISSUE Time not correct + } + //do a restart if device was disconnected for more then 5 minutes + if (!connected && ((millis() - discon) > 300000)) ESP.restart(); +}