Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 760 → Rev 761

/C-OSD/trunk/CHANGE.LOG
18,6 → 18,11
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20100501-1130
*distance to home now 4 digits for long distance flights
*max height and speed shown again in stats
*clear full screen before stats shown so the art-horizon does not bug us
 
20100419-0020
*fixed bug causing PPM-based display on/off to fail
*fixed display of AGRESSiVA-horizion during motor run
/C-OSD/trunk/c-osd.aws
1,0 → 0,0
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="908 133 1642 590" LineCol="397 5" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="930 155 1656 582" LineCol="68 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="952 177 1678 604" LineCol="0 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="974 199 1700 626" LineCol="92 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="996 221 1722 648" LineCol="117 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="1018 243 1744 670" LineCol="0 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="1040 265 1766 692" LineCol="2924 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="1062 287 1788 714" LineCol="146 24" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="1084 309 1810 736" LineCol="215 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="1106 331 1832 758" LineCol="70 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="908 133 1634 560" LineCol="32 47" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="930 155 1656 582" LineCol="104 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="904 110 1840 766" LineCol="337 45" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="974 199 1700 626" LineCol="25 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="996 221 1722 648" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="1018 243 1744 670" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="1040 265 1766 692" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="1062 287 1788 714" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="1084 309 1810 736" LineCol="43 3" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="1106 331 1832 758" LineCol="0 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="908 133 1634 560" LineCol="171 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="930 155 1656 582" LineCol="0 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="952 177 1678 604" LineCol="0 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="974 199 1700 626" LineCol="7 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="996 221 1722 648" LineCol="24 0" State="Maximized"/><File00025 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="1018 243 1744 670" LineCol="28 0" State="Maximized"/><File00026 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="1040 265 1766 692" LineCol="16 59" State="Maximized"/></Files></AVRWorkspace>
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="1142 155 1691 613" LineCol="397 0" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="1164 177 1705 605" LineCol="68 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="1186 199 1727 627" LineCol="0 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="1208 221 1749 649" LineCol="92 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="1230 243 1771 671" LineCol="117 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="1252 265 1793 693" LineCol="0 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="1274 287 1815 715" LineCol="2924 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="1296 309 1837 737" LineCol="146 0" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="1318 331 1859 759" LineCol="215 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="1340 353 1881 781" LineCol="70 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="1138 132 1889 789" LineCol="137 96" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="1164 177 1705 605" LineCol="104 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="1186 199 1727 627" LineCol="337 0" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="1208 221 1749 649" LineCol="25 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="1230 243 1771 671" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="1252 265 1793 693" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="1274 287 1815 715" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="1296 309 1837 737" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="1318 331 1859 759" LineCol="43 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="1340 353 1881 781" LineCol="0 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="1142 155 1683 583" LineCol="171 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="1164 177 1705 605" LineCol="0 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="1186 199 1727 627" LineCol="0 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="1208 221 1749 649" LineCol="7 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="1230 243 1771 671" LineCol="24 0" State="Maximized"/><File00025 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="1252 265 1793 693" LineCol="28 0" State="Maximized"/><File00026 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="1274 287 1815 715" LineCol="16 0" State="Maximized"/></Files></AVRWorkspace>
/C-OSD/trunk/characters.c
57,7 → 57,7
// 17 ------------
// 000000000011
// 012345678901
const char chr0[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr0[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
80,7 → 80,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr1[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xa8,0x55,0x52,0xa8,0x55,0x52,0xa8,0x55,0x50,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0x28,0x15,0x52,0xaa,0x85,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr1[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x50, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0x28, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
103,7 → 103,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr2[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x80,0xa8,0x2a,0x15,0x28,0x40,0x55,0x28,0x55,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x80,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr2[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x80, 0xa8, 0x2a, 0x15, 0x28, 0x40, 0x55, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x80, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
126,7 → 126,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr3[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x41,0x55,0x28,0x55,0x40,0xa8,0x55,0x2a,0xa1,0x55,0x2a,0xa1,0x55,0x40,0xa8,0x41,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr3[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x28, 0x55, 0x40, 0xa8, 0x55, 0x2a, 0xa1, 0x55, 0x2a, 0xa1, 0x55, 0x40, 0xa8, 0x41, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
149,7 → 149,7
// 17 -------##---
// 000000000011
// 012345678901
const char chr4[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x15,0x55,0x52,0x85,0x55,0x4a,0x85,0x55,0x2a,0x85,0x54,0xaa,0x85,0x52,0xa2,0x85,0x4a,0x82,0x85,0x2a,0x12,0x85,0x28,0x02,0x81,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x02,0x81,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x54,0x15};
const char chr4[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55, 0x52, 0x85, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x85, 0x54, 0xaa, 0x85, 0x52, 0xa2, 0x85, 0x4a, 0x82, 0x85, 0x2a, 0x12, 0x85, 0x28, 0x02, 0x81, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x02, 0x81, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15};
 
 
// 0 ------------
172,7 → 172,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr5[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x28,0x00,0x01,0x28,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0xa1,0x40,0x00,0xa8,0x55,0x55,0x28,0x55,0x55,0x28,0x41,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr5[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0x00, 0x01, 0x28, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x40, 0x00, 0xa8, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x41, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
195,7 → 195,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr6[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x41,0x28,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0xa1,0x28,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr6[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x41, 0x28, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
218,7 → 218,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr7[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x28,0x55,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr7[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
241,7 → 241,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr8[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr8[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
264,7 → 264,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr9[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0x28,0x4a,0xaa,0xa8,0x52,0xaa,0xa8,0x54,0x00,0x28,0x41,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr9[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0x28, 0x4a, 0xaa, 0xa8, 0x52, 0xaa, 0xa8, 0x54, 0x00, 0x28, 0x41, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
287,7 → 287,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr10[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr10[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
310,7 → 310,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr11[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0x82,0xa1,0x2a,0x14,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0x28,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x28,0x00,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr11[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0x82, 0xa1, 0x2a, 0x14, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0x28, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0x00, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
333,7 → 333,7
// 17 -########---
// 000000000011
// 012345678901
const char chr12[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0xa1,0x28,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0xa8,0x2a,0xaa,0xa1,0x2a,0xaa,0xa1,0x28,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0xa8,0x2a,0xaa,0xa1,0x2a,0xaa,0x85,0x40,0x00,0x15};
const char chr12[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0xa8, 0x2a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0xa8, 0x2a, 0xaa, 0xa1, 0x2a, 0xaa, 0x85, 0x40, 0x00, 0x15};
 
 
// 0 ------------
356,7 → 356,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr13[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x41,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x41,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr13[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x41, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x41, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
379,7 → 379,7
// 17 -######-----
// 000000000011
// 012345678901
const char chr14[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x01,0x55,0x2a,0xa8,0x55,0x2a,0xaa,0x15,0x28,0x0a,0x85,0x28,0x52,0xa1,0x28,0x54,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x54,0xa8,0x28,0x52,0xa1,0x28,0x0a,0x85,0x2a,0xaa,0x15,0x2a,0xa8,0x55,0x40,0x01,0x55};
const char chr14[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x2a, 0xa8, 0x55, 0x2a, 0xaa, 0x15, 0x28, 0x0a, 0x85, 0x28, 0x52, 0xa1, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x54, 0xa8, 0x28, 0x52, 0xa1, 0x28, 0x0a, 0x85, 0x2a, 0xaa, 0x15, 0x2a, 0xa8, 0x55, 0x40, 0x01, 0x55};
 
 
// 0 ------------
402,7 → 402,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr15[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x28,0x00,0x01,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0x85,0x28,0x00,0x15,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr15[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0x00, 0x01, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0x85, 0x28, 0x00, 0x15, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
425,7 → 425,7
// 17 -##---------
// 000000000011
// 012345678901
const char chr16[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x28,0x00,0x01,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0x85,0x28,0x00,0x15,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55};
const char chr16[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0x00, 0x01, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0x85, 0x28, 0x00, 0x15, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55};
 
 
// 0 ------------
448,7 → 448,7
// 17 ---########-
// 000000000011
// 012345678901
const char chr17[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x02,0xa1,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x41,0x28,0x40,0x01,0x28,0x2a,0xa8,0x28,0x2a,0xa8,0x28,0x40,0x28,0x28,0x55,0x28,0x2a,0x00,0x28,0x4a,0xaa,0xa8,0x52,0xaa,0xa8,0x54,0x00,0x01};
const char chr17[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x02, 0xa1, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x41, 0x28, 0x40, 0x01, 0x28, 0x2a, 0xa8, 0x28, 0x2a, 0xa8, 0x28, 0x40, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0x28, 0x4a, 0xaa, 0xa8, 0x52, 0xaa, 0xa8, 0x54, 0x00, 0x01};
 
 
// 0 ------------
471,7 → 471,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr18[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0x28,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x28,0x00,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr18[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0x28, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0x00, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
494,7 → 494,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr19[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x52,0xaa,0x85,0x54,0x28,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0x28,0x15,0x52,0xaa,0x85,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr19[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x54, 0x28, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0x28, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
517,7 → 517,7
// 17 ---####-----
// 000000000011
// 012345678901
const char chr20[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x01,0x55,0x2a,0xa8,0x55,0x2a,0xa8,0x55,0x42,0x81,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x41,0x52,0x85,0x28,0x52,0x85,0x2a,0x0a,0x85,0x4a,0xaa,0x15,0x52,0xa8,0x55,0x54,0x01,0x55};
const char chr20[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x2a, 0xa8, 0x55, 0x2a, 0xa8, 0x55, 0x42, 0x81, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x41, 0x52, 0x85, 0x28, 0x52, 0x85, 0x2a, 0x0a, 0x85, 0x4a, 0xaa, 0x15, 0x52, 0xa8, 0x55, 0x54, 0x01, 0x55};
 
 
// 0 ------------
540,7 → 540,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr21[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x54,0xa8,0x28,0x52,0xa1,0x28,0x4a,0x85,0x28,0x2a,0x15,0x28,0xa8,0x55,0x2a,0xa1,0x55,0x2a,0xa1,0x55,0x28,0xa8,0x55,0x28,0x2a,0x15,0x28,0x4a,0x85,0x28,0x52,0xa1,0x28,0x54,0xa8,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr21[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x54, 0xa8, 0x28, 0x52, 0xa1, 0x28, 0x4a, 0x85, 0x28, 0x2a, 0x15, 0x28, 0xa8, 0x55, 0x2a, 0xa1, 0x55, 0x2a, 0xa1, 0x55, 0x28, 0xa8, 0x55, 0x28, 0x2a, 0x15, 0x28, 0x4a, 0x85, 0x28, 0x52, 0xa1, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
563,7 → 563,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr22[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr22[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
586,7 → 586,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr23[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x2a,0x14,0xa8,0x2a,0x82,0xa8,0x2a,0xaa,0xa8,0x28,0xaa,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x41,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr23[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x2a, 0x82, 0xa8, 0x2a, 0xaa, 0xa8, 0x28, 0xaa, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x41, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
609,7 → 609,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr24[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x2a,0x15,0x28,0x2a,0x85,0x28,0x2a,0x85,0x28,0x28,0xa1,0x28,0x28,0xa1,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x4a,0x28,0x28,0x4a,0x28,0x28,0x52,0xa8,0x28,0x52,0xa8,0x28,0x54,0xa8,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr24[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x2a, 0x15, 0x28, 0x2a, 0x85, 0x28, 0x2a, 0x85, 0x28, 0x28, 0xa1, 0x28, 0x28, 0xa1, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x4a, 0x28, 0x28, 0x4a, 0x28, 0x28, 0x52, 0xa8, 0x28, 0x52, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
632,7 → 632,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr25[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr25[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
655,7 → 655,7
// 17 -##---------
// 000000000011
// 012345678901
const char chr26[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0xa1,0x28,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0xa8,0x2a,0xaa,0xa1,0x2a,0xaa,0x85,0x28,0x00,0x15,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55};
const char chr26[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0xa8, 0x2a, 0xaa, 0xa1, 0x2a, 0xaa, 0x85, 0x28, 0x00, 0x15, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55};
 
 
// 0 ------------
678,7 → 678,7
// 17 ---####--##-
// 000000000011
// 012345678901
const char chr27[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x41,0x28,0x28,0x28,0x28,0x28,0x2a,0x28,0x28,0x4a,0xa8,0x2a,0x02,0xa1,0x4a,0xaa,0xa8,0x52,0xa8,0x28,0x54,0x01,0x41};
const char chr27[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x41, 0x28, 0x28, 0x28, 0x28, 0x28, 0x2a, 0x28, 0x28, 0x4a, 0xa8, 0x2a, 0x02, 0xa1, 0x4a, 0xaa, 0xa8, 0x52, 0xa8, 0x28, 0x54, 0x01, 0x41};
 
 
// 0 ------------
701,7 → 701,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr28[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x15,0x2a,0xaa,0x85,0x2a,0xaa,0xa1,0x28,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x00,0xa8,0x2a,0xaa,0xa1,0x2a,0xaa,0x85,0x28,0xa8,0x15,0x28,0x2a,0x15,0x28,0x4a,0x85,0x28,0x52,0xa1,0x28,0x54,0xa8,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr28[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x15, 0x2a, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x00, 0xa8, 0x2a, 0xaa, 0xa1, 0x2a, 0xaa, 0x85, 0x28, 0xa8, 0x15, 0x28, 0x2a, 0x15, 0x28, 0x4a, 0x85, 0x28, 0x52, 0xa1, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
724,7 → 724,7
// 17 --#######---
// 000000000011
// 012345678901
const char chr29[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x05,0x52,0xaa,0xa1,0x4a,0xaa,0xa8,0x2a,0x00,0x28,0x28,0x55,0x41,0x28,0x55,0x55,0x2a,0x00,0x15,0x4a,0xaa,0x85,0x52,0xaa,0xa1,0x54,0x00,0xa8,0x55,0x55,0x28,0x41,0x55,0x28,0x28,0x00,0xa8,0x2a,0xaa,0xa1,0x4a,0xaa,0x85,0x50,0x00,0x15};
const char chr29[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x05, 0x52, 0xaa, 0xa1, 0x4a, 0xaa, 0xa8, 0x2a, 0x00, 0x28, 0x28, 0x55, 0x41, 0x28, 0x55, 0x55, 0x2a, 0x00, 0x15, 0x4a, 0xaa, 0x85, 0x52, 0xaa, 0xa1, 0x54, 0x00, 0xa8, 0x55, 0x55, 0x28, 0x41, 0x55, 0x28, 0x28, 0x00, 0xa8, 0x2a, 0xaa, 0xa1, 0x4a, 0xaa, 0x85, 0x50, 0x00, 0x15};
 
 
// 0 ------------
747,7 → 747,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr30[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x28,0x01,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr30[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x28, 0x01, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
770,7 → 770,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr31[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr31[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
793,7 → 793,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr32[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr32[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
816,7 → 816,7
// 17 ---##--##---
// 000000000011
// 012345678901
const char chr33[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x41,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0x82,0x85,0x54,0x14,0x15};
const char chr33[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x41, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0x82, 0x85, 0x54, 0x14, 0x15};
 
 
// 0 ------------
839,7 → 839,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr34[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0x82,0xa1,0x2a,0x14,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr34[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0x82, 0xa1, 0x2a, 0x14, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
862,7 → 862,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr35[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr35[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
885,7 → 885,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr36[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x28,0x55,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x55,0x28,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr36[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x28, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
908,7 → 908,7
// 17 ---#####-##-
// 000000000011
// 012345678901
const char chr37[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x52,0xaa,0xa1,0x54,0x00,0xa8,0x54,0x00,0x28,0x52,0xaa,0x28,0x4a,0xaa,0xa8,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa8,0x52,0xaa,0x28,0x54,0x00,0x41};
const char chr37[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0xa1, 0x54, 0x00, 0xa8, 0x54, 0x00, 0x28, 0x52, 0xaa, 0x28, 0x4a, 0xaa, 0xa8, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa8, 0x52, 0xaa, 0x28, 0x54, 0x00, 0x41};
 
 
// 0 ------------
931,7 → 931,7
// 17 -##--###----
// 000000000011
// 012345678901
const char chr38[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x40,0x55,0x28,0x2a,0x15,0x28,0xaa,0x85,0x2a,0xa2,0xa1,0x2a,0x84,0xa8,0x2a,0x15,0x28,0x2a,0x15,0x28,0x2a,0x15,0x28,0x2a,0x84,0xa8,0x2a,0xa2,0xa1,0x28,0xaa,0x85,0x28,0x2a,0x15,0x41,0x40,0x55};
const char chr38[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x40, 0x55, 0x28, 0x2a, 0x15, 0x28, 0xaa, 0x85, 0x2a, 0xa2, 0xa1, 0x2a, 0x84, 0xa8, 0x2a, 0x15, 0x28, 0x2a, 0x15, 0x28, 0x2a, 0x15, 0x28, 0x2a, 0x84, 0xa8, 0x2a, 0xa2, 0xa1, 0x28, 0xaa, 0x85, 0x28, 0x2a, 0x15, 0x41, 0x40, 0x55};
 
 
// 0 ------------
954,7 → 954,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr39[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x41,0x28,0x55,0x41,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr39[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x41, 0x28, 0x55, 0x41, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
977,7 → 977,7
// 17 ----###--##-
// 000000000011
// 012345678901
const char chr40[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x01,0x28,0x54,0xa8,0x28,0x52,0xaa,0x28,0x4a,0x8a,0xa8,0x2a,0x12,0xa8,0x28,0x54,0xa8,0x28,0x54,0xa8,0x28,0x54,0xa8,0x2a,0x12,0xa8,0x4a,0x8a,0xa8,0x52,0xaa,0x28,0x54,0xa8,0x28,0x55,0x01,0x41};
const char chr40[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x01, 0x28, 0x54, 0xa8, 0x28, 0x52, 0xaa, 0x28, 0x4a, 0x8a, 0xa8, 0x2a, 0x12, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x54, 0xa8, 0x2a, 0x12, 0xa8, 0x4a, 0x8a, 0xa8, 0x52, 0xaa, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x01, 0x41};
 
 
// 0 ------------
1000,7 → 1000,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr41[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x00,0x28,0x2a,0xaa,0xa8,0x2a,0xaa,0xa1,0x28,0x00,0x05,0x28,0x55,0x01,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr41[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x00, 0x28, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa1, 0x28, 0x00, 0x05, 0x28, 0x55, 0x01, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1023,7 → 1023,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr42[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x4a,0xa1,0x55,0x2a,0xa1,0x55,0x28,0x05,0x50,0x28,0x05,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x50,0x28,0x05,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr42[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x05, 0x55, 0x4a, 0xa1, 0x55, 0x2a, 0xa1, 0x55, 0x28, 0x05, 0x50, 0x28, 0x05, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x50, 0x28, 0x05, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
1046,7 → 1046,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr43[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa8,0x52,0xaa,0x28,0x54,0x00,0x28,0x50,0x55,0x28,0x4a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr43[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa8, 0x52, 0xaa, 0x28, 0x54, 0x00, 0x28, 0x50, 0x55, 0x28, 0x4a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1069,7 → 1069,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr44[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x40,0x55,0x28,0x2a,0x15,0x28,0xaa,0x85,0x2a,0xa2,0xa1,0x2a,0x84,0xa8,0x2a,0x15,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr44[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x40, 0x55, 0x28, 0x2a, 0x15, 0x28, 0xaa, 0x85, 0x2a, 0xa2, 0xa1, 0x2a, 0x84, 0xa8, 0x2a, 0x15, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
1092,7 → 1092,7
// 17 -------##---
// 000000000011
// 012345678901
const char chr45[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x54,0x01,0x55,0x52,0xa8,0x55,0x52,0xa8,0x55,0x54,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x2a,0x15,0x55,0x4a,0x85,0x55,0x52,0x85,0x55,0x54,0x15};
const char chr45[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x54, 0x01, 0x55, 0x52, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x54, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x2a, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15};
 
 
// 0 ------------
1115,7 → 1115,7
// 17 ---####-----
// 000000000011
// 012345678901
const char chr46[] PROGMEM = {0x55,0x55,0x55,0x55,0x54,0x15,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x54,0x15,0x55,0x40,0x15,0x55,0x2a,0x85,0x55,0x2a,0x85,0x55,0x42,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x52,0x85,0x54,0x0a,0x85,0x52,0xaa,0x15,0x52,0xa8,0x55,0x54,0x01,0x55};
const char chr46[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15, 0x55, 0x40, 0x15, 0x55, 0x2a, 0x85, 0x55, 0x2a, 0x85, 0x55, 0x42, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x54, 0x0a, 0x85, 0x52, 0xaa, 0x15, 0x52, 0xa8, 0x55, 0x54, 0x01, 0x55};
 
 
// 0 ------------
1138,7 → 1138,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr47[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x41,0x28,0x55,0x28,0x28,0x54,0xa8,0x28,0x52,0xa1,0x28,0x4a,0x85,0x28,0x2a,0x15,0x28,0xa8,0x55,0x2a,0xaa,0x15,0x2a,0x8a,0x85,0x2a,0x12,0xa1,0x28,0x54,0xa8,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr47[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x54, 0xa8, 0x28, 0x52, 0xa1, 0x28, 0x4a, 0x85, 0x28, 0x2a, 0x15, 0x28, 0xa8, 0x55, 0x2a, 0xaa, 0x15, 0x2a, 0x8a, 0x85, 0x2a, 0x12, 0xa1, 0x28, 0x54, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
1161,7 → 1161,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr48[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr48[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
1184,7 → 1184,7
// 17 -##--##--##-
// 000000000011
// 012345678901
const char chr49[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x00,0x15,0x28,0xaa,0x85,0x2a,0xaa,0xa1,0x2a,0x28,0xa8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x41,0x41,0x41};
const char chr49[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x00, 0x15, 0x28, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x2a, 0x28, 0xa8, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x41, 0x41, 0x41};
 
 
// 0 ------------
1207,7 → 1207,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr50[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x00,0x15,0x28,0xaa,0x85,0x2a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr50[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x00, 0x15, 0x28, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
1230,7 → 1230,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr51[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr51[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1253,7 → 1253,7
// 17 -##---------
// 000000000011
// 012345678901
const char chr52[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x00,0x15,0x28,0xaa,0x85,0x2a,0xaa,0xa1,0x2a,0x80,0xa8,0x2a,0x15,0x28,0x2a,0x15,0x28,0x2a,0x15,0x28,0x2a,0x80,0xa8,0x2a,0xaa,0xa1,0x28,0xaa,0x85,0x28,0x00,0x15,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55};
const char chr52[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x00, 0x15, 0x28, 0xaa, 0x85, 0x2a, 0xaa, 0xa1, 0x2a, 0x80, 0xa8, 0x2a, 0x15, 0x28, 0x2a, 0x15, 0x28, 0x2a, 0x15, 0x28, 0x2a, 0x80, 0xa8, 0x2a, 0xaa, 0xa1, 0x28, 0xaa, 0x85, 0x28, 0x00, 0x15, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55};
 
 
// 0 ------------
1276,7 → 1276,7
// 17 ---------##-
// 000000000011
// 012345678901
const char chr53[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x41,0x52,0xaa,0x28,0x4a,0xaa,0xa8,0x2a,0x02,0xa8,0x28,0x54,0xa8,0x28,0x54,0xa8,0x28,0x54,0xa8,0x2a,0x02,0xa8,0x4a,0xaa,0xa8,0x52,0xa8,0xa8,0x54,0x01,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41};
const char chr53[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x41, 0x52, 0xaa, 0x28, 0x4a, 0xaa, 0xa8, 0x2a, 0x02, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x54, 0xa8, 0x2a, 0x02, 0xa8, 0x4a, 0xaa, 0xa8, 0x52, 0xa8, 0xa8, 0x54, 0x01, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41};
 
 
// 0 ------------
1299,7 → 1299,7
// 17 -##---------
// 000000000011
// 012345678901
const char chr54[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x40,0x15,0x28,0x2a,0x85,0x28,0xaa,0xa1,0x2a,0xa0,0xa8,0x2a,0x85,0x28,0x2a,0x15,0x41,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55};
const char chr54[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x40, 0x15, 0x28, 0x2a, 0x85, 0x28, 0xaa, 0xa1, 0x2a, 0xa0, 0xa8, 0x2a, 0x85, 0x28, 0x2a, 0x15, 0x41, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55};
 
 
// 0 ------------
1322,7 → 1322,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr55[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x2a,0x01,0x28,0x4a,0xa8,0x01,0x50,0xaa,0x85,0x41,0x0a,0xa1,0x28,0x50,0xa8,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr55[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x2a, 0x01, 0x28, 0x4a, 0xa8, 0x01, 0x50, 0xaa, 0x85, 0x41, 0x0a, 0xa1, 0x28, 0x50, 0xa8, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1345,7 → 1345,7
// 17 -------##---
// 000000000011
// 012345678901
const char chr56[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0x28,0x15,0x52,0xaa,0x85,0x52,0xaa,0x85,0x54,0x28,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x2a,0x15,0x55,0x4a,0x85,0x55,0x52,0x85,0x55,0x54,0x15};
const char chr56[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0x28, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x54, 0x28, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x2a, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15};
 
 
// 0 ------------
1368,7 → 1368,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr57[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x00,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr57[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x00, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1391,7 → 1391,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr58[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr58[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
1414,7 → 1414,7
// 17 ---##--##---
// 000000000011
// 012345678901
const char chr59[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x41,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x2a,0x28,0xa8,0x4a,0xaa,0xa1,0x52,0x82,0x85,0x54,0x14,0x15};
const char chr59[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x41, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x2a, 0x28, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0x82, 0x85, 0x54, 0x14, 0x15};
 
 
// 0 ------------
1437,7 → 1437,7
// 17 -##------##-
// 000000000011
// 012345678901
const char chr60[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0x82,0xa1,0x2a,0x14,0xa8,0x28,0x55,0x28,0x41,0x55,0x41};
const char chr60[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0x82, 0xa1, 0x2a, 0x14, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x41};
 
 
// 0 ------------
1460,7 → 1460,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr61[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x41,0x28,0x55,0x28,0x28,0x55,0x28,0x28,0x54,0xa8,0x28,0x54,0xa8,0x28,0x52,0xa8,0x2a,0x0a,0xa8,0x4a,0xaa,0x28,0x52,0xa8,0x28,0x54,0x01,0x28,0x54,0x00,0xa8,0x52,0xaa,0xa1,0x52,0xaa,0x85,0x54,0x00,0x15};
const char chr61[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x41, 0x28, 0x55, 0x28, 0x28, 0x55, 0x28, 0x28, 0x54, 0xa8, 0x28, 0x54, 0xa8, 0x28, 0x52, 0xa8, 0x2a, 0x0a, 0xa8, 0x4a, 0xaa, 0x28, 0x52, 0xa8, 0x28, 0x54, 0x01, 0x28, 0x54, 0x00, 0xa8, 0x52, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15};
 
 
// 0 ------------
1483,7 → 1483,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr62[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x80,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr62[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x80, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
1506,7 → 1506,7
// 17 --------##--
// 000000000011
// 012345678901
const char chr63[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x05,0x55,0x54,0xa1,0x55,0x52,0x85,0x55,0x4a,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x4a,0x15,0x55,0x52,0x85,0x55,0x54,0xa1,0x55,0x55,0x05};
const char chr63[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x54, 0xa1, 0x55, 0x52, 0x85, 0x55, 0x4a, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x52, 0x85, 0x55, 0x54, 0xa1, 0x55, 0x55, 0x05};
 
 
// 0 ------------
1529,7 → 1529,7
// 17 ---##-------
// 000000000011
// 012345678901
const char chr64[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x15,0x55,0x52,0x85,0x55,0x54,0xa1,0x55,0x55,0x28,0x55,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x4a,0x15,0x55,0x28,0x55,0x54,0xa1,0x55,0x52,0x85,0x55,0x54,0x15,0x55};
const char chr64[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55, 0x52, 0x85, 0x55, 0x54, 0xa1, 0x55, 0x55, 0x28, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x28, 0x55, 0x54, 0xa1, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15, 0x55};
 
 
// 0 ------------
1552,7 → 1552,7
// 17 -------##---
// 000000000011
// 012345678901
const char chr65[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x15,0x55,0x52,0x85,0x55,0x52,0x85,0x55,0x54,0x15};
const char chr65[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x55, 0x52, 0x85, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15};
 
 
// 0 ------------
1575,7 → 1575,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr66[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0x00,0xa8,0x28,0x55,0x28,0x41,0x55,0x28,0x55,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr66[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0x00, 0xa8, 0x28, 0x55, 0x28, 0x41, 0x55, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ------------
1598,7 → 1598,7
// 17 ------------
// 000000000011
// 012345678901
const char chr67[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0xa1,0x55,0x52,0x85,0x55,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr67[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0xa1, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1621,7 → 1621,7
// 17 ------------
// 000000000011
// 012345678901
const char chr68[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr68[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1644,7 → 1644,7
// 17 ---##-------
// 000000000011
// 012345678901
const char chr69[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0xa1,0x55,0x52,0x85,0x55,0x54,0x15,0x55};
const char chr69[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0xa1, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15, 0x55};
 
 
// 0 ------------
1667,7 → 1667,7
// 17 ------------
// 000000000011
// 012345678901
const char chr70[] PROGMEM = {0x55,0x55,0x55,0x55,0x51,0x55,0x55,0x48,0x55,0x55,0x2a,0x15,0x55,0x4a,0x15,0x55,0x52,0x15,0x55,0x52,0x15,0x55,0x48,0x55,0x55,0x51,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr70[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x51, 0x55, 0x55, 0x48, 0x55, 0x55, 0x2a, 0x15, 0x55, 0x4a, 0x15, 0x55, 0x52, 0x15, 0x55, 0x52, 0x15, 0x55, 0x48, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1690,7 → 1690,7
// 17 ------------
// 000000000011
// 012345678901
const char chr71[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr71[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1713,7 → 1713,7
// 17 ------------
// 000000000011
// 012345678901
const char chr72[] PROGMEM = {0x55,0x55,0x55,0x54,0x55,0x15,0x52,0x14,0x85,0x4a,0x82,0xa1,0x52,0x84,0xa1,0x54,0x85,0x21,0x54,0x85,0x21,0x52,0x14,0x85,0x54,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr72[] PROGMEM = {0x55, 0x55, 0x55, 0x54, 0x55, 0x15, 0x52, 0x14, 0x85, 0x4a, 0x82, 0xa1, 0x52, 0x84, 0xa1, 0x54, 0x85, 0x21, 0x54, 0x85, 0x21, 0x52, 0x14, 0x85, 0x54, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1736,7 → 1736,7
// 17 ------------
// 000000000011
// 012345678901
const char chr73[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,0x54,0xaa,0xa1,0x54,0xaa,0xa1,0x55,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr73[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x05, 0x54, 0xaa, 0xa1, 0x54, 0xaa, 0xa1, 0x55, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1759,7 → 1759,7
// 17 --------##--
// 000000000011
// 012345678901
const char chr74[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x05,0x55,0x54,0xa1,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x4a,0x85,0x55,0x52,0xa1,0x55,0x54,0xa8,0x55,0x55,0x2a,0x15,0x55,0x4a,0x85,0x55,0x52,0xa1,0x55,0x54,0xa1,0x55,0x55,0x05};
const char chr74[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x54, 0xa1, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x54, 0xa8, 0x55, 0x55, 0x2a, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x54, 0xa1, 0x55, 0x55, 0x05};
 
 
// 0 ------------
1782,7 → 1782,7
// 17 --##--------
// 000000000011
// 012345678901
const char chr75[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x55,0x55,0x4a,0x15,0x55,0x4a,0x85,0x55,0x52,0xa1,0x55,0x54,0xa8,0x55,0x55,0x2a,0x15,0x55,0x4a,0x85,0x55,0x52,0xa1,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x2a,0x15,0x54,0xa8,0x55,0x52,0xa1,0x55,0x4a,0x85,0x55,0x4a,0x15,0x55,0x50,0x55,0x55};
const char chr75[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x54, 0xa8, 0x55, 0x55, 0x2a, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x2a, 0x15, 0x54, 0xa8, 0x55, 0x52, 0xa1, 0x55, 0x4a, 0x85, 0x55, 0x4a, 0x15, 0x55, 0x50, 0x55, 0x55};
 
 
// 0 ------------
1805,7 → 1805,7
// 17 ----#####---
// 000000000011
// 012345678901
const char chr76[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x54,0xaa,0x15,0x52,0x00,0x85,0x48,0x04,0x21,0x20,0xa2,0x08,0x22,0x0a,0x08,0x22,0x02,0x08,0x22,0x0a,0x08,0x20,0xa2,0x21,0x21,0x04,0x85,0x48,0x55,0x05,0x52,0x00,0x21,0x54,0xaa,0x85,0x55,0x00,0x15};
const char chr76[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x54, 0xaa, 0x15, 0x52, 0x00, 0x85, 0x48, 0x04, 0x21, 0x20, 0xa2, 0x08, 0x22, 0x0a, 0x08, 0x22, 0x02, 0x08, 0x22, 0x0a, 0x08, 0x20, 0xa2, 0x21, 0x21, 0x04, 0x85, 0x48, 0x55, 0x05, 0x52, 0x00, 0x21, 0x54, 0xaa, 0x85, 0x55, 0x00, 0x15};
 
 
// 0 ------------
1828,7 → 1828,7
// 17 ------------
// 000000000011
// 012345678901
const char chr77[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xaa,0x55,0x55,0x56,0x55,0x59,0x56,0x55,0x59,0x59,0x55,0x59,0x65,0x55,0x5a,0x95,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x55,0x55,0x55};
const char chr77[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x55, 0x56, 0x55, 0x59, 0x56, 0x55, 0x59, 0x59, 0x55, 0x59, 0x65, 0x55, 0x5a, 0x95, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1851,7 → 1851,7
// 17 ------------
// 000000000011
// 012345678901
const char chr78[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x56,0x95,0x55,0x6a,0x55,0x56,0x96,0x55,0x69,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x55,0x55};
const char chr78[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x56, 0x95, 0x55, 0x6a, 0x55, 0x56, 0x96, 0x55, 0x69, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1874,7 → 1874,7
// 17 ------------
// 000000000011
// 012345678901
const char chr79[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x6a,0xaa,0xaa,0x65,0x55,0x56,0x65,0x55,0x56,0x65,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr79[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x6a, 0xaa, 0xaa, 0x65, 0x55, 0x56, 0x65, 0x55, 0x56, 0x65, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1897,7 → 1897,7
// 17 ------------
// 000000000011
// 012345678901
const char chr80[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xaa,0xa9,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x6a,0xaa,0xaa,0x55,0x55,0x55};
const char chr80[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xa9, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1920,7 → 1920,7
// 17 ------------
// 000000000011
// 012345678901
const char chr81[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x6a,0xaa,0xaa,0x55,0x5a,0x55,0x55,0x66,0x55,0x55,0x66,0x55,0x55,0x96,0x55,0x55,0x96,0x55,0x56,0x56,0x55,0x59,0x56,0x55,0x65,0x56,0x55,0x55,0x56,0x55,0x55,0x5a,0x55,0x55,0x55,0x55};
const char chr81[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x5a, 0x55, 0x55, 0x66, 0x55, 0x55, 0x66, 0x55, 0x55, 0x96, 0x55, 0x55, 0x96, 0x55, 0x56, 0x56, 0x55, 0x59, 0x56, 0x55, 0x65, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1943,7 → 1943,7
// 17 ------------
// 000000000011
// 012345678901
const char chr82[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x6a,0xaa,0xaa,0x55,0x59,0x56,0x55,0x59,0x56,0x55,0x65,0x56,0x55,0x65,0x56,0x55,0x65,0x56,0x55,0x95,0x56,0x55,0x95,0x56,0x56,0x55,0x56,0x56,0x55,0x56,0x59,0x55,0x69,0x55,0x55,0x55};
const char chr82[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x59, 0x56, 0x55, 0x59, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x56, 0x55, 0x95, 0x56, 0x55, 0x95, 0x56, 0x56, 0x55, 0x56, 0x56, 0x55, 0x56, 0x59, 0x55, 0x69, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1966,7 → 1966,7
// 17 ------------
// 000000000011
// 012345678901
const char chr83[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x5a,0xaa,0xa5,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x59,0x55,0x6a,0xaa,0xaa,0x55,0x59,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x55,0x55};
const char chr83[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x5a, 0xaa, 0xa5, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x59, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x59, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55};
 
 
// 0 ------------
1989,7 → 1989,7
// 17 ------------
// 000000000011
// 012345678901
const char chr84[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0xaa,0xaa,0x55,0x95,0x56,0x56,0x55,0x56,0x59,0x55,0x56,0x65,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x6a,0x55,0x5a,0x95,0x55,0x55,0x55,0x55};
const char chr84[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x95, 0x56, 0x56, 0x55, 0x56, 0x59, 0x55, 0x56, 0x65, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x6a, 0x55, 0x5a, 0x95, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2012,7 → 2012,7
// 17 ------------
// 000000000011
// 012345678901
const char chr85[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x5a,0xaa,0xaa,0x59,0x56,0x55,0x65,0x56,0x55,0x65,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x56,0x95,0x55,0x55,0x55,0x55};
const char chr85[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x5a, 0xaa, 0xaa, 0x59, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x56, 0x95, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2035,7 → 2035,7
// 17 ------------
// 000000000011
// 012345678901
const char chr86[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xaa,0xa9,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x5a,0xaa,0xa9,0x55,0x55,0x55};
const char chr86[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xa9, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x5a, 0xaa, 0xa9, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2058,7 → 2058,7
// 17 ------------
// 000000000011
// 012345678901
const char chr87[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x65,0x56,0x55,0x65,0x6a,0xaa,0xaa,0x56,0x55,0x65,0x56,0x55,0x65,0x56,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0xa5,0x55,0x55,0x55,0x55};
const char chr87[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x6a, 0xaa, 0xaa, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x56, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2081,7 → 2081,7
// 17 ------------
// 000000000011
// 012345678901
const char chr88[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0x95,0x55,0x55,0x65,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x6a,0x95,0x56,0x55,0x65,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x56,0x95,0x6a,0xa9,0x55,0x55,0x55,0x55};
const char chr88[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0x95, 0x55, 0x55, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x6a, 0x95, 0x56, 0x55, 0x65, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x56, 0x95, 0x6a, 0xa9, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2104,7 → 2104,7
// 17 ------------
// 000000000011
// 012345678901
const char chr89[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xa9,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x5a,0x55,0x55,0x65,0x95,0x55,0x95,0x65,0x56,0x55,0x59,0x69,0x55,0x56,0x55,0x55,0x55};
const char chr89[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xa9, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x65, 0x95, 0x55, 0x95, 0x65, 0x56, 0x55, 0x59, 0x69, 0x55, 0x56, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2127,7 → 2127,7
// 17 ------------
// 000000000011
// 012345678901
const char chr90[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x6a,0xaa,0x6a,0x95,0x56,0x56,0x55,0x59,0x56,0x55,0x65,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x55,0x95,0x55,0x55,0x6a,0xa9,0x55,0x55,0x55};
const char chr90[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x6a, 0xaa, 0x6a, 0x95, 0x56, 0x56, 0x55, 0x59, 0x56, 0x55, 0x65, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x6a, 0xa9, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2150,7 → 2150,7
// 17 ------------
// 000000000011
// 012345678901
const char chr91[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x65,0x55,0x56,0x59,0x55,0x56,0x59,0x55,0x56,0x56,0x55,0x56,0x55,0x95,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x69,0x55,0x5a,0x95,0x55,0x55,0x55,0x55};
const char chr91[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x65, 0x55, 0x56, 0x59, 0x55, 0x56, 0x59, 0x55, 0x56, 0x56, 0x55, 0x56, 0x55, 0x95, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x69, 0x55, 0x5a, 0x95, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2173,7 → 2173,7
// 17 ------------
// 000000000011
// 012345678901
const char chr92[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x6a,0xaa,0x55,0x95,0x56,0x55,0x95,0x56,0x56,0x55,0x56,0x69,0x65,0x59,0x55,0x5a,0x59,0x55,0x55,0xa5,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0xa5,0x55,0x6a,0x55,0x55,0x55,0x55,0x55};
const char chr92[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x6a, 0xaa, 0x55, 0x95, 0x56, 0x55, 0x95, 0x56, 0x56, 0x55, 0x56, 0x69, 0x65, 0x59, 0x55, 0x5a, 0x59, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0xa5, 0x55, 0x6a, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2196,7 → 2196,7
// 17 ------------
// 000000000011
// 012345678901
const char chr93[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x55,0x56,0x95,0x55,0x69,0x55,0x56,0x96,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x6a,0xaa,0xaa,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0x55,0x55,0x55};
const char chr93[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x56, 0x95, 0x55, 0x69, 0x55, 0x56, 0x96, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2219,7 → 2219,7
// 17 ------------
// 000000000011
// 012345678901
const char chr94[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x95,0x59,0x65,0x95,0x59,0x59,0x65,0x59,0x59,0x65,0x59,0x59,0x65,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0xa5,0x55,0x55,0x55,0x55};
const char chr94[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x95, 0x59, 0x65, 0x95, 0x59, 0x59, 0x65, 0x59, 0x59, 0x65, 0x59, 0x59, 0x65, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2242,7 → 2242,7
// 17 ------------
// 000000000011
// 012345678901
const char chr95[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0xaa,0xa5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xaa,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0x55,0x55,0x55};
const char chr95[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xa5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2265,7 → 2265,7
// 17 ------------
// 000000000011
// 012345678901
const char chr96[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x95,0x55,0x56,0x69,0x55,0x56,0x56,0x55,0x56,0x55,0x95,0x56,0x55,0x65,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x55,0x55,0x55};
const char chr96[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x95, 0x55, 0x56, 0x69, 0x55, 0x56, 0x56, 0x55, 0x56, 0x55, 0x95, 0x56, 0x55, 0x65, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2288,7 → 2288,7
// 17 ------------
// 000000000011
// 012345678901
const char chr97[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x6a,0xaa,0xaa,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0x55,0x55,0x55};
const char chr97[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2311,7 → 2311,7
// 17 ------------
// 000000000011
// 012345678901
const char chr98[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0xaa,0xa5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xaa,0x55,0x55,0x55};
const char chr98[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xa5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2334,7 → 2334,7
// 17 ------------
// 000000000011
// 012345678901
const char chr99[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0xaa,0xa9,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x95,0x65,0x55,0x65,0x65,0x55,0x59,0x95,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x95,0x55,0xa5,0x65,0x5a,0x55,0x59,0x55,0x55,0x55};
const char chr99[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xa9, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x95, 0x65, 0x55, 0x65, 0x65, 0x55, 0x59, 0x95, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x95, 0x55, 0xa5, 0x65, 0x5a, 0x55, 0x59, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2357,7 → 2357,7
// 17 ------------
// 000000000011
// 012345678901
const char chr100[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x69,0x55,0x55,0x56,0x55,0x55,0x55,0x55,0x5a,0xaa,0xa9,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x5a,0x55,0x55,0x69,0xa5,0x56,0x99,0x59,0x69,0x59,0x56,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x55,0x55};
const char chr100[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xa9, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x69, 0xa5, 0x56, 0x99, 0x59, 0x69, 0x59, 0x56, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2380,7 → 2380,7
// 17 ------------
// 000000000011
// 012345678901
const char chr101[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x5a,0x55,0x55,0x55,0x55,0x55};
const char chr101[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x5a, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2403,7 → 2403,7
// 17 ------------
// 000000000011
// 012345678901
const char chr102[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x95,0x55,0x65,0x95,0x55,0x65,0x65,0x55,0x95,0x65,0x55,0x95,0x65,0x55,0x95,0x65,0x56,0x55,0x59,0x56,0x55,0x59,0x56,0x55,0x59,0x59,0x55,0x56,0x59,0x55,0x56,0x59,0x55,0x56,0x65,0x55,0x56,0x55,0x55,0x55};
const char chr102[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x95, 0x55, 0x65, 0x95, 0x55, 0x65, 0x65, 0x55, 0x95, 0x65, 0x55, 0x95, 0x65, 0x55, 0x95, 0x65, 0x56, 0x55, 0x59, 0x56, 0x55, 0x59, 0x56, 0x55, 0x59, 0x59, 0x55, 0x56, 0x59, 0x55, 0x56, 0x59, 0x55, 0x56, 0x65, 0x55, 0x56, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2426,7 → 2426,7
// 17 ------------
// 000000000011
// 012345678901
const char chr103[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0xa9,0x6a,0xaa,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x59,0x55,0x56,0x56,0xaa,0xa9,0x55,0x55,0x55};
const char chr103[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0xa9, 0x6a, 0xaa, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x59, 0x55, 0x56, 0x56, 0xaa, 0xa9, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2449,7 → 2449,7
// 17 ------------
// 000000000011
// 012345678901
const char chr104[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xa9,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x69,0x55,0x56,0x95,0x55,0x55,0x55,0x55};
const char chr104[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xa9, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x69, 0x55, 0x56, 0x95, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2472,7 → 2472,7
// 17 ------------
// 000000000011
// 012345678901
const char chr105[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x55,0x55,0xa5,0x55,0x56,0x65,0x55,0x56,0x59,0x55,0x59,0x56,0x55,0x59,0x56,0x55,0x65,0x55,0x95,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x59,0x55,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr105[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0xa5, 0x55, 0x56, 0x65, 0x55, 0x56, 0x59, 0x55, 0x59, 0x56, 0x55, 0x59, 0x56, 0x55, 0x65, 0x55, 0x95, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x59, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2495,7 → 2495,7
// 17 ------------
// 000000000011
// 012345678901
const char chr106[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x6a,0xaa,0xaa,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x56,0x59,0x65,0x56,0x59,0x65,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x65,0x59,0x56,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x55,0x55};
const char chr106[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x56, 0x59, 0x65, 0x56, 0x59, 0x65, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x65, 0x59, 0x56, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2518,7 → 2518,7
// 17 ------------
// 000000000011
// 012345678901
const char chr107[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x6a,0xaa,0xaa,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x59,0x55,0x55,0x59,0x56,0x55,0x65,0x55,0x95,0x95,0x55,0x6a,0x55,0x55,0x59,0x55,0x55,0x56,0x55,0x55,0x55,0x95,0x55,0x55,0x65,0x55,0x55,0x55};
const char chr107[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x56, 0x55, 0x65, 0x55, 0x95, 0x95, 0x55, 0x6a, 0x55, 0x55, 0x59, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x65, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2541,7 → 2541,7
// 17 ------------
// 000000000011
// 012345678901
const char chr108[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xa5,0x55,0x55,0x5a,0x55,0x55,0x55,0xa5,0x55,0x55,0x55,0x5a,0xa5,0x55,0x55,0x5a,0x55,0x55,0x55,0xa5,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xa5,0x55,0x55,0x5a,0x55,0x55,0x55,0xa5,0x55,0x55,0x55};
const char chr108[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xa5, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x55, 0x5a, 0xa5, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xa5, 0x55, 0x55, 0x5a, 0x55, 0x55, 0x55, 0xa5, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2564,7 → 2564,7
// 17 ------------
// 000000000011
// 012345678901
const char chr109[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x55,0x96,0x55,0x56,0x55,0x95,0x56,0x55,0x95,0x59,0x55,0x65,0x59,0x5a,0xa5,0x6a,0xa5,0x59,0x55,0x55,0x56,0x55,0x55,0x55};
const char chr109[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x55, 0x96, 0x55, 0x56, 0x55, 0x95, 0x56, 0x55, 0x95, 0x59, 0x55, 0x65, 0x59, 0x5a, 0xa5, 0x6a, 0xa5, 0x59, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2587,7 → 2587,7
// 17 ------------
// 000000000011
// 012345678901
const char chr110[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x95,0x65,0x55,0x69,0x65,0x55,0x56,0x95,0x55,0x55,0x95,0x55,0x56,0x65,0x55,0x56,0x59,0x55,0x59,0x56,0x55,0x65,0x55,0x56,0x95,0x55,0x69,0x55,0x55,0x55,0x55,0x55};
const char chr110[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x95, 0x65, 0x55, 0x69, 0x65, 0x55, 0x56, 0x95, 0x55, 0x55, 0x95, 0x55, 0x56, 0x65, 0x55, 0x56, 0x59, 0x55, 0x59, 0x56, 0x55, 0x65, 0x55, 0x56, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2610,7 → 2610,7
// 17 ------------
// 000000000011
// 012345678901
const char chr111[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xaa,0xa9,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x6a,0xaa,0xaa,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x5a,0xa9,0x55,0x55,0x55};
const char chr111[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xa9, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x6a, 0xaa, 0xaa, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x5a, 0xa9, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2633,7 → 2633,7
// 17 ############
// 000000000011
// 012345678901
const char chr112[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00};
const char chr112[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00};
 
 
// 0 ------------
2656,7 → 2656,7
// 17 ############
// 000000000011
// 012345678901
const char chr113[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00};
const char chr113[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00};
 
 
// 0 ----# #----
2679,7 → 2679,7
// 17 ############
// 000000000011
// 012345678901
const char chr114[] PROGMEM = {0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x00,0x00,0x00};
const char chr114[] PROGMEM = {0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00};
 
 
// 0 ----####----
2702,7 → 2702,7
// 17 ############
// 000000000011
// 012345678901
const char chr115[] PROGMEM = {0x55,0x00,0x55,0x54,0x00,0x15,0x50,0x00,0x05,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x55,0x54,0x00,0x15,0x50,0x00,0x05,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x55,0x54,0x00,0x15,0x50,0x00,0x05,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00};
const char chr115[] PROGMEM = {0x55, 0x00, 0x55, 0x54, 0x00, 0x15, 0x50, 0x00, 0x05, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x54, 0x00, 0x15, 0x50, 0x00, 0x05, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x54, 0x00, 0x15, 0x50, 0x00, 0x05, 0x40, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
 
 
// 0 ############
2725,7 → 2725,7
// 17 ----####----
// 000000000011
// 012345678901
const char chr116[] PROGMEM = {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x50,0x00,0x05,0x54,0x00,0x15,0x55,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x50,0x00,0x05,0x54,0x00,0x15,0x55,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x50,0x00,0x05,0x54,0x00,0x15,0x55,0x00,0x55};
const char chr116[] PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x50, 0x00, 0x05, 0x54, 0x00, 0x15, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x50, 0x00, 0x05, 0x54, 0x00, 0x15, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x01, 0x50, 0x00, 0x05, 0x54, 0x00, 0x15, 0x55, 0x00, 0x55};
 
 
// 0 ############
2748,7 → 2748,7
// 17 ----# #----
// 000000000011
// 012345678901
const char chr117[] PROGMEM = {0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55};
const char chr117[] PROGMEM = {0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55};
 
 
// 0 ############
2771,7 → 2771,7
// 17 ------------
// 000000000011
// 012345678901
const char chr118[] PROGMEM = {0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr118[] PROGMEM = {0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ############
2794,7 → 2794,7
// 17 ------------
// 000000000011
// 012345678901
const char chr119[] PROGMEM = {0x00,0x00,0x00,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr119[] PROGMEM = {0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 -##########-
2817,7 → 2817,7
// 17 ------------
// 000000000011
// 012345678901
const char chr120[] PROGMEM = {0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr120[] PROGMEM = {0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2840,7 → 2840,7
// 17 ------------
// 000000000011
// 012345678901
const char chr121[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr121[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2863,7 → 2863,7
// 17 ------------
// 000000000011
// 012345678901
const char chr122[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr122[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2886,7 → 2886,7
// 17 ------------
// 000000000011
// 012345678901
const char chr123[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr123[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
2909,7 → 2909,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr124[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr124[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
2932,7 → 2932,7
// 17 -------##-##
// 000000000011
// 012345678901
const char chr125[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x01,0x55,0x2a,0xa1,0x55,0x22,0x21,0x55,0x22,0x21,0x55,0x00,0x00,0x55,0x55,0x28,0x55,0x55,0x22,0x15,0x55,0x28,0x55,0x55,0x20,0x15,0x55,0x20,0x85,0x55,0x00,0x80,0x55,0x54,0xa8,0x55,0x54,0x88,0x55,0x54,0x88,0x55,0x54,0x10};
const char chr125[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0x55, 0x2a, 0xa1, 0x55, 0x22, 0x21, 0x55, 0x22, 0x21, 0x55, 0x00, 0x00, 0x55, 0x55, 0x28, 0x55, 0x55, 0x22, 0x15, 0x55, 0x28, 0x55, 0x55, 0x20, 0x15, 0x55, 0x20, 0x85, 0x55, 0x00, 0x80, 0x55, 0x54, 0xa8, 0x55, 0x54, 0x88, 0x55, 0x54, 0x88, 0x55, 0x54, 0x10};
 
 
// 0 ------------
2955,7 → 2955,7
// 17 -#----#-----
// 000000000011
// 012345678901
const char chr126[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x40,0x55,0x4a,0x48,0x55,0x20,0x2a,0x15,0x28,0x48,0x55,0x21,0x48,0x55,0x21,0x48,0x55,0x45,0x51,0x55};
const char chr126[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x40, 0x55, 0x4a, 0x48, 0x55, 0x20, 0x2a, 0x15, 0x28, 0x48, 0x55, 0x21, 0x48, 0x55, 0x21, 0x48, 0x55, 0x45, 0x51, 0x55};
 
 
// 0 ---------- -
2978,7 → 2978,7
// 17 ------------
// 000000000011
// 012345678901
const char chr127[] PROGMEM = {0x55,0x55,0x59,0x55,0x55,0x96,0x55,0x55,0x65,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0xaa,0xaa,0x55,0x95,0x56,0x56,0x55,0x56,0x59,0x55,0x56,0x65,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x6a,0x55,0x5a,0x95,0x55,0x55,0x55,0x55};
const char chr127[] PROGMEM = {0x55, 0x55, 0x59, 0x55, 0x55, 0x96, 0x55, 0x55, 0x65, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x95, 0x56, 0x56, 0x55, 0x56, 0x59, 0x55, 0x56, 0x65, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x6a, 0x55, 0x5a, 0x95, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3001,7 → 3001,7
// 17 ------------
// 000000000011
// 012345678901
const char chr128[] PROGMEM = {0x55,0x55,0x55,0x45,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x20,0x15,0x55,0x22,0x15,0x55,0x28,0x00,0x55,0x22,0x28,0x55,0x04,0x22,0x15,0x55,0x28,0x55,0x55,0x20,0x15,0x55,0x20,0x85,0x55,0x00,0x80,0x55,0x54,0xa8,0x55,0x54,0x88,0x55,0x54,0x88,0x55,0x54,0x10,0x55,0x55,0x55};
const char chr128[] PROGMEM = {0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x20, 0x15, 0x55, 0x22, 0x15, 0x55, 0x28, 0x00, 0x55, 0x22, 0x28, 0x55, 0x04, 0x22, 0x15, 0x55, 0x28, 0x55, 0x55, 0x20, 0x15, 0x55, 0x20, 0x85, 0x55, 0x00, 0x80, 0x55, 0x54, 0xa8, 0x55, 0x54, 0x88, 0x55, 0x54, 0x88, 0x55, 0x54, 0x10, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3024,7 → 3024,7
// 17 - # -- ## --
// 000000000011
// 012345678901
const char chr129[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0x55,0x95,0x60,0x96,0x25,0x8a,0x28,0x89,0x8a,0x22,0x25,0x60,0x88,0x95,0x5a,0x22,0x95,0x58,0x88,0x25,0x62,0x22,0x89,0x88,0xa2,0x89,0x62,0x58,0x25};
const char chr129[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0x55, 0x95, 0x60, 0x96, 0x25, 0x8a, 0x28, 0x89, 0x8a, 0x22, 0x25, 0x60, 0x88, 0x95, 0x5a, 0x22, 0x95, 0x58, 0x88, 0x25, 0x62, 0x22, 0x89, 0x88, 0xa2, 0x89, 0x62, 0x58, 0x25};
 
 
// 0 ------------
3047,7 → 3047,7
// 17 #### # # # #
// 000000000011
// 012345678901
const char chr130[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x22,0x22,0x00,0x95,0x54,0xa8,0x15,0x55,0x28,0x95,0x54,0x88,0x15,0x52,0x12,0x95,0x48,0x54,0x15,0x21,0x56,0x84,0x85,0x54,0x22,0x15,0x56,0x28,0x55,0x54,0x2a,0x15,0x56,0x00,0x88,0x88};
const char chr130[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x22, 0x22, 0x00, 0x95, 0x54, 0xa8, 0x15, 0x55, 0x28, 0x95, 0x54, 0x88, 0x15, 0x52, 0x12, 0x95, 0x48, 0x54, 0x15, 0x21, 0x56, 0x84, 0x85, 0x54, 0x22, 0x15, 0x56, 0x28, 0x55, 0x54, 0x2a, 0x15, 0x56, 0x00, 0x88, 0x88};
 
 
// 0 ------------
3070,7 → 3070,7
// 17 ------------
// 000000000011
// 012345678901
const char chr131[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x65,0x55,0x55,0x89,0x55,0x56,0x22,0x55,0x58,0xa8,0x95,0x62,0xaa,0x25,0x58,0xa8,0x95,0x56,0x22,0x55,0x55,0x89,0x55,0x55,0x65,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr131[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x55, 0x89, 0x55, 0x56, 0x22, 0x55, 0x58, 0xa8, 0x95, 0x62, 0xaa, 0x25, 0x58, 0xa8, 0x95, 0x56, 0x22, 0x55, 0x55, 0x89, 0x55, 0x55, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 -#######----
3093,7 → 3093,7
// 17 --#---#-----
// 000000000011
// 012345678901
const char chr132[] PROGMEM = {0x40,0x00,0x55,0x2a,0xaa,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x21,0x12,0x15,0x44,0x04,0x55,0x42,0xa0,0x55,0x48,0x08,0x55,0x4a,0xa8,0x55,0x48,0x08,0x55,0x48,0x48,0x55,0x51,0x51,0x55,0x48,0x55,0x55,0x48,0x00,0x55,0x4a,0xa8,0x55,0x48,0x08,0x55,0x48,0x48,0x55,0x51,0x51,0x55};
const char chr132[] PROGMEM = {0x40, 0x00, 0x55, 0x2a, 0xaa, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x21, 0x12, 0x15, 0x44, 0x04, 0x55, 0x42, 0xa0, 0x55, 0x48, 0x08, 0x55, 0x4a, 0xa8, 0x55, 0x48, 0x08, 0x55, 0x48, 0x48, 0x55, 0x51, 0x51, 0x55, 0x48, 0x55, 0x55, 0x48, 0x00, 0x55, 0x4a, 0xa8, 0x55, 0x48, 0x08, 0x55, 0x48, 0x48, 0x55, 0x51, 0x51, 0x55};
 
 
// 0 ------------
3116,7 → 3116,7
// 17 ------------
// 000000000011
// 012345678901
const char chr133[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0x08,0x28,0x28,0x28,0xaa,0x00,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr133[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0x08, 0x28, 0x28, 0x28, 0xaa, 0x00, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3139,7 → 3139,7
// 17 ------------
// 000000000011
// 012345678901
const char chr134[] PROGMEM = {0x55,0x55,0x55,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x0a,0x82,0x80,0x00,0x82,0x20,0x02,0x82,0x20,0x00,0x82,0x20,0x0a,0x82,0x80,0x00,0x00,0x00,0x0a,0x88,0x00,0x08,0x00,0x00,0x0a,0x08,0x88,0x08,0x08,0x20,0x08,0x08,0x88,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr134[] PROGMEM = {0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x0a, 0x82, 0x80, 0x00, 0x82, 0x20, 0x02, 0x82, 0x20, 0x00, 0x82, 0x20, 0x0a, 0x82, 0x80, 0x00, 0x00, 0x00, 0x0a, 0x88, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x08, 0x88, 0x08, 0x08, 0x20, 0x08, 0x08, 0x88, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 --##--------
3162,7 → 3162,7
// 17 ---------#--
// 000000000011
// 012345678901
const char chr135[] PROGMEM = {0x50,0x55,0x55,0x4a,0x15,0x55,0x20,0x85,0x55,0x20,0x85,0x55,0x2a,0x85,0x55,0x20,0x85,0x55,0x20,0x85,0x55,0x45,0x15,0x55,0x54,0x85,0x55,0x54,0x85,0x55,0x54,0x85,0x55,0x54,0x81,0x01,0x54,0xa8,0xa8,0x55,0x01,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x45};
const char chr135[] PROGMEM = {0x50, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x20, 0x85, 0x55, 0x20, 0x85, 0x55, 0x2a, 0x85, 0x55, 0x20, 0x85, 0x55, 0x20, 0x85, 0x55, 0x45, 0x15, 0x55, 0x54, 0x85, 0x55, 0x54, 0x85, 0x55, 0x54, 0x85, 0x55, 0x54, 0x81, 0x01, 0x54, 0xa8, 0xa8, 0x55, 0x01, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x45};
 
 
// 0 -#---#------
3185,7 → 3185,7
// 17 --------####
// 000000000011
// 012345678901
const char chr136[] PROGMEM = {0x45,0x45,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x48,0x85,0x55,0x52,0x00,0x55,0x54,0xaa,0x15,0x54,0x80,0x55,0x54,0xa8,0x55,0x54,0x81,0x15,0x54,0x80,0x85,0x54,0xaa,0x85,0x55,0x00,0x85,0x55,0x54,0x85,0x55,0x54,0x80,0x55,0x54,0xaa,0x55,0x55,0x00};
const char chr136[] PROGMEM = {0x45, 0x45, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x48, 0x85, 0x55, 0x52, 0x00, 0x55, 0x54, 0xaa, 0x15, 0x54, 0x80, 0x55, 0x54, 0xa8, 0x55, 0x54, 0x81, 0x15, 0x54, 0x80, 0x85, 0x54, 0xaa, 0x85, 0x55, 0x00, 0x85, 0x55, 0x54, 0x85, 0x55, 0x54, 0x80, 0x55, 0x54, 0xaa, 0x55, 0x55, 0x00};
 
 
// 0 ------------
3208,7 → 3208,7
// 17 --------#---
// 000000000011
// 012345678901
const char chr137[] PROGMEM = {0x55,0x55,0x55,0x40,0x15,0x55,0x2a,0x05,0x55,0x20,0x85,0x55,0x20,0x85,0x55,0x20,0x85,0x55,0x2a,0x00,0x55,0x40,0xaa,0x15,0x54,0x80,0x55,0x54,0xaa,0x15,0x54,0x02,0x15,0x54,0xaa,0x01,0x55,0x0a,0xa8,0x55,0x50,0x81,0x55,0x54,0x85,0x55,0x54,0x85,0x55,0x54,0x85,0x55,0x55,0x15};
const char chr137[] PROGMEM = {0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x2a, 0x05, 0x55, 0x20, 0x85, 0x55, 0x20, 0x85, 0x55, 0x20, 0x85, 0x55, 0x2a, 0x00, 0x55, 0x40, 0xaa, 0x15, 0x54, 0x80, 0x55, 0x54, 0xaa, 0x15, 0x54, 0x02, 0x15, 0x54, 0xaa, 0x01, 0x55, 0x0a, 0xa8, 0x55, 0x50, 0x81, 0x55, 0x54, 0x85, 0x55, 0x54, 0x85, 0x55, 0x54, 0x85, 0x55, 0x55, 0x15};
 
 
// 0 -#######----
3231,7 → 3231,7
// 17 --#####-----
// 000000000011
// 012345678901
const char chr138[] PROGMEM = {0x40,0x00,0x55,0x2a,0xaa,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x21,0x12,0x15,0x45,0x54,0x55,0x40,0x00,0x55,0x2a,0xaa,0x15,0x2a,0xaa,0x15,0x40,0x00,0x55,0x50,0x01,0x55,0x4a,0xa8,0x55,0x48,0x00,0x55,0x4a,0xa8,0x55,0x40,0x08,0x55,0x4a,0xa8,0x55,0x50,0x01,0x55};
const char chr138[] PROGMEM = {0x40, 0x00, 0x55, 0x2a, 0xaa, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x21, 0x12, 0x15, 0x45, 0x54, 0x55, 0x40, 0x00, 0x55, 0x2a, 0xaa, 0x15, 0x2a, 0xaa, 0x15, 0x40, 0x00, 0x55, 0x50, 0x01, 0x55, 0x4a, 0xa8, 0x55, 0x48, 0x00, 0x55, 0x4a, 0xa8, 0x55, 0x40, 0x08, 0x55, 0x4a, 0xa8, 0x55, 0x50, 0x01, 0x55};
 
 
// 0 -- -------
3254,7 → 3254,7
// 17 ------------
// 000000000011
// 012345678901
const char chr139[] PROGMEM = {0x5a,0x95,0x55,0x60,0x25,0x55,0x82,0x09,0x55,0x89,0x89,0x55,0x82,0x09,0x55,0x60,0x25,0x55,0x5a,0x95,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr139[] PROGMEM = {0x5a, 0x95, 0x55, 0x60, 0x25, 0x55, 0x82, 0x09, 0x55, 0x89, 0x89, 0x55, 0x82, 0x09, 0x55, 0x60, 0x25, 0x55, 0x5a, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3277,7 → 3277,7
// 17 -#-----#----
// 000000000011
// 012345678901
const char chr140[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x2a,0xaa,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x21,0x12,0x15,0x45,0x54,0x55};
const char chr140[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x55, 0x2a, 0xaa, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x21, 0x12, 0x15, 0x45, 0x54, 0x55};
 
 
// 0 ############
3300,7 → 3300,7
// 17 ############
// 000000000011
// 012345678901
const char chr141[] PROGMEM = {0x00,0x00,0x00,0x58,0x95,0x55,0x62,0x25,0x55,0x8a,0x8a,0xa9,0x02,0x00,0x09,0xa2,0x28,0x89,0x62,0x28,0x8a,0x62,0x28,0x80,0x62,0x28,0xa8,0x62,0x28,0x88,0x62,0x28,0x88,0x62,0x28,0x88,0xa2,0x28,0x00,0x02,0x02,0xaa,0x8a,0x89,0x55,0x62,0x25,0x55,0x58,0x95,0x55,0x00,0x00,0x00};
const char chr141[] PROGMEM = {0x00, 0x00, 0x00, 0x58, 0x95, 0x55, 0x62, 0x25, 0x55, 0x8a, 0x8a, 0xa9, 0x02, 0x00, 0x09, 0xa2, 0x28, 0x89, 0x62, 0x28, 0x8a, 0x62, 0x28, 0x80, 0x62, 0x28, 0xa8, 0x62, 0x28, 0x88, 0x62, 0x28, 0x88, 0x62, 0x28, 0x88, 0xa2, 0x28, 0x00, 0x02, 0x02, 0xaa, 0x8a, 0x89, 0x55, 0x62, 0x25, 0x55, 0x58, 0x95, 0x55, 0x00, 0x00, 0x00};
 
 
// 0 ------- ----
3323,7 → 3323,7
// 17 - -------- -
// 000000000011
// 012345678901
const char chr142[] PROGMEM = {0x55,0x56,0x55,0x55,0x58,0x95,0x55,0x58,0x95,0x55,0xa8,0x95,0x56,0x00,0x95,0x58,0xa8,0x95,0x58,0x98,0x95,0x58,0xa8,0x95,0x56,0x00,0x95,0x55,0xaa,0x55,0x65,0x55,0x59,0x89,0x55,0x62,0x89,0x14,0x62,0x88,0x82,0x22,0x82,0xaa,0x82,0x88,0x82,0x22,0x89,0x14,0x62,0x65,0x55,0x59};
const char chr142[] PROGMEM = {0x55, 0x56, 0x55, 0x55, 0x58, 0x95, 0x55, 0x58, 0x95, 0x55, 0xa8, 0x95, 0x56, 0x00, 0x95, 0x58, 0xa8, 0x95, 0x58, 0x98, 0x95, 0x58, 0xa8, 0x95, 0x56, 0x00, 0x95, 0x55, 0xaa, 0x55, 0x65, 0x55, 0x59, 0x89, 0x55, 0x62, 0x89, 0x14, 0x62, 0x88, 0x82, 0x22, 0x82, 0xaa, 0x82, 0x88, 0x82, 0x22, 0x89, 0x14, 0x62, 0x65, 0x55, 0x59};
 
 
// 0 ------------
3346,7 → 3346,7
// 17 ------------
// 000000000011
// 012345678901
const char chr143[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x55,0x55,0x65,0x55,0x55,0x95,0x55,0x56,0x55,0x55,0x69,0x55,0x56,0x95,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x56,0x95,0x55,0x55,0x69,0x55,0x55,0x56,0x95,0x55,0x55,0x65,0x55,0x55,0x59,0x55,0x55,0x59,0x55,0x55,0x55};
const char chr143[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x65, 0x55, 0x55, 0x95, 0x55, 0x56, 0x55, 0x55, 0x69, 0x55, 0x56, 0x95, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x56, 0x95, 0x55, 0x55, 0x69, 0x55, 0x55, 0x56, 0x95, 0x55, 0x55, 0x65, 0x55, 0x55, 0x59, 0x55, 0x55, 0x59, 0x55, 0x55, 0x55};
 
 
// 0 ---######---
3369,7 → 3369,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr144[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr144[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3392,7 → 3392,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr145[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr145[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3415,7 → 3415,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr146[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr146[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3438,7 → 3438,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr147[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr147[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3461,7 → 3461,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr148[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr148[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3484,7 → 3484,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr149[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr149[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3507,7 → 3507,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr150[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr150[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3530,7 → 3530,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr151[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr151[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3553,7 → 3553,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr152[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr152[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3576,7 → 3576,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr153[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr153[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3599,7 → 3599,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr154[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr154[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3622,7 → 3622,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr155[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr155[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3645,7 → 3645,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr156[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x00,0x21,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr156[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x00, 0x21, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ---######---
3668,7 → 3668,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr157[] PROGMEM = {0x54,0x00,0x15,0x40,0xaa,0x01,0x4a,0x82,0xa1,0x4a,0x82,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x40,0x00,0x01};
const char chr157[] PROGMEM = {0x54, 0x00, 0x15, 0x40, 0xaa, 0x01, 0x4a, 0x82, 0xa1, 0x4a, 0x82, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 ------------
3691,7 → 3691,7
// 17 --###-------
// 000000000011
// 012345678901
const char chr158[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x45,0x45,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x21,0x21,0x55,0x08,0x81,0x55,0x42,0x05,0x55,0x50,0x15,0x55};
const char chr158[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x45, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x21, 0x21, 0x55, 0x08, 0x81, 0x55, 0x42, 0x05, 0x55, 0x50, 0x15, 0x55};
 
 
// 0 ------------
3714,7 → 3714,7
// 17 -#---#------
// 000000000011
// 012345678901
const char chr159[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x55,0x4a,0x85,0x55,0x20,0x21,0x55,0x20,0x21,0x55,0x2a,0xa1,0x55,0x20,0x21,0x55,0x21,0x21,0x55,0x45,0x45,0x55};
const char chr159[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x20, 0x21, 0x55, 0x20, 0x21, 0x55, 0x2a, 0xa1, 0x55, 0x20, 0x21, 0x55, 0x21, 0x21, 0x55, 0x45, 0x45, 0x55};
 
 
// 0 ------------
3737,7 → 3737,7
// 17 ------------
// 000000000011
// 012345678901
const char chr160[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0x82,0x89,0x8a,0x82,0xa2,0x2a,0x82,0xa8,0x2a,0x82,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr160[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0x82, 0x89, 0x8a, 0x82, 0xa2, 0x2a, 0x82, 0xa8, 0x2a, 0x82, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3760,7 → 3760,7
// 17 ------------
// 000000000011
// 012345678901
const char chr161[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x09,0x8a,0xa8,0x22,0x2a,0xa0,0xa8,0x2a,0xa0,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr161[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x09, 0x8a, 0xa8, 0x22, 0x2a, 0xa0, 0xa8, 0x2a, 0xa0, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3783,7 → 3783,7
// 17 ------------
// 000000000011
// 012345678901
const char chr162[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0x02,0x2a,0xa8,0x08,0x2a,0xa0,0x28,0xaa,0x80,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr162[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0x02, 0x2a, 0xa8, 0x08, 0x2a, 0xa0, 0x28, 0xaa, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3806,7 → 3806,7
// 17 ------------
// 000000000011
// 012345678901
const char chr163[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0x80,0x2a,0xa8,0x08,0xaa,0x80,0x2a,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr163[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0x80, 0x2a, 0xa8, 0x08, 0xaa, 0x80, 0x2a, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3829,7 → 3829,7
// 17 ------------
// 000000000011
// 012345678901
const char chr164[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x80,0x02,0xaa,0x80,0x02,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr164[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x80, 0x02, 0xaa, 0x80, 0x02, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3852,7 → 3852,7
// 17 ------------
// 000000000011
// 012345678901
const char chr165[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x80,0x2a,0x2a,0xa8,0x08,0x2a,0xaa,0x80,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr165[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x80, 0x2a, 0x2a, 0xa8, 0x08, 0x2a, 0xaa, 0x80, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3875,7 → 3875,7
// 17 ------------
// 000000000011
// 012345678901
const char chr166[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x80,0xaa,0x2a,0xa0,0x28,0x2a,0xa8,0x08,0x8a,0xaa,0x02,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr166[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x80, 0xaa, 0x2a, 0xa0, 0x28, 0x2a, 0xa8, 0x08, 0x8a, 0xaa, 0x02, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3898,7 → 3898,7
// 17 ------------
// 000000000011
// 012345678901
const char chr167[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0xa0,0xa8,0x2a,0xa0,0xa8,0x8a,0xa8,0x22,0x62,0xaa,0x09,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr167[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0xa8, 0x2a, 0xa0, 0xa8, 0x8a, 0xa8, 0x22, 0x62, 0xaa, 0x09, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3921,7 → 3921,7
// 17 ------------
// 000000000011
// 012345678901
const char chr168[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0x82,0xa8,0x2a,0x82,0xa8,0x8a,0x82,0xa2,0x62,0x82,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr168[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0x82, 0xa8, 0x2a, 0x82, 0xa8, 0x8a, 0x82, 0xa2, 0x62, 0x82, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3944,7 → 3944,7
// 17 ------------
// 000000000011
// 012345678901
const char chr169[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0x0a,0xa8,0x2a,0x0a,0xa8,0x88,0x2a,0xa2,0x60,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr169[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0x0a, 0xa8, 0x2a, 0x0a, 0xa8, 0x88, 0x2a, 0xa2, 0x60, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3967,7 → 3967,7
// 17 ------------
// 000000000011
// 012345678901
const char chr170[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x02,0xaa,0x28,0x0a,0xa8,0x20,0x2a,0xa8,0x80,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr170[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x02, 0xaa, 0x28, 0x0a, 0xa8, 0x20, 0x2a, 0xa8, 0x80, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
3990,7 → 3990,7
// 17 ------------
// 000000000011
// 012345678901
const char chr171[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xa8,0x02,0xaa,0x20,0x2a,0xa8,0x02,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr171[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xa8, 0x02, 0xaa, 0x20, 0x2a, 0xa8, 0x02, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4013,7 → 4013,7
// 17 ------------
// 000000000011
// 012345678901
const char chr172[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x80,0x02,0xaa,0x80,0x02,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr172[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x80, 0x02, 0xaa, 0x80, 0x02, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4036,7 → 4036,7
// 17 ------------
// 000000000011
// 012345678901
const char chr173[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x02,0xaa,0xa8,0x20,0x2a,0xa8,0xa8,0x02,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr173[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x02, 0xaa, 0xa8, 0x20, 0x2a, 0xa8, 0xa8, 0x02, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4059,7 → 4059,7
// 17 ------------
// 000000000011
// 012345678901
const char chr174[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x80,0xaa,0xa2,0x20,0x2a,0xa8,0x28,0x0a,0xa8,0xaa,0x02,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr174[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x80, 0xaa, 0xa2, 0x20, 0x2a, 0xa8, 0x28, 0x0a, 0xa8, 0xaa, 0x02, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4082,7 → 4082,7
// 17 ------------
// 000000000011
// 012345678901
const char chr175[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x60,0xaa,0x89,0x88,0x2a,0xa2,0x2a,0x0a,0xa8,0x2a,0x0a,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr175[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x60, 0xaa, 0x89, 0x88, 0x2a, 0xa2, 0x2a, 0x0a, 0xa8, 0x2a, 0x0a, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4105,7 → 4105,7
// 17 ------------
// 000000000011
// 012345678901
const char chr176[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x58,0x55,0x55,0x58,0x55,0x55,0x56,0x55,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr176[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x58, 0x55, 0x55, 0x58, 0x55, 0x55, 0x56, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4128,7 → 4128,7
// 17 ------------
// 000000000011
// 012345678901
const char chr177[] PROGMEM = {0x55,0x55,0x55,0x55,0x69,0x55,0x56,0x82,0x95,0x58,0x28,0x25,0x62,0xaa,0x89,0x8a,0xaa,0xa2,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0xaa,0x82,0xaa,0xaa,0x82,0xaa,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x8a,0xaa,0xa2,0x62,0xaa,0x89,0x58,0x28,0x25,0x56,0x82,0x95,0x55,0x69,0x55,0x55,0x55,0x55};
const char chr177[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x56, 0x82, 0x95, 0x58, 0x28, 0x25, 0x62, 0xaa, 0x89, 0x8a, 0xaa, 0xa2, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0xaa, 0x82, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x8a, 0xaa, 0xa2, 0x62, 0xaa, 0x89, 0x58, 0x28, 0x25, 0x56, 0x82, 0x95, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4151,7 → 4151,7
// 17 ------------
// 000000000011
// 012345678901
const char chr178[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x55,0x25,0x55,0x55,0x25,0x55,0x55,0x95,0x55,0x55,0x95,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr178[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x55, 0x25, 0x55, 0x55, 0x25, 0x55, 0x55, 0x95, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4174,7 → 4174,7
// 17 ------------
// 000000000011
// 012345678901
const char chr179[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xaa,0x55,0x55,0x82,0x55,0x55,0x82,0x55,0x55,0x82,0x55,0xaa,0x82,0xaa,0x80,0x00,0x02,0x8a,0xaa,0xa2,0x88,0x28,0x22,0x88,0x28,0x22,0x8a,0xaa,0xa2,0x8a,0xaa,0xa2,0x80,0x00,0x02,0xaa,0xaa,0xaa,0x55,0x55,0x55};
const char chr179[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xaa, 0x55, 0x55, 0x82, 0x55, 0x55, 0x82, 0x55, 0x55, 0x82, 0x55, 0xaa, 0x82, 0xaa, 0x80, 0x00, 0x02, 0x8a, 0xaa, 0xa2, 0x88, 0x28, 0x22, 0x88, 0x28, 0x22, 0x8a, 0xaa, 0xa2, 0x8a, 0xaa, 0xa2, 0x80, 0x00, 0x02, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55};
 
 
// 0 ---------- -
4197,7 → 4197,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr180[] PROGMEM = {0x55,0x55,0x59,0x55,0x55,0x65,0x55,0x55,0x15,0x55,0x41,0x15,0x55,0x00,0x15,0x54,0x00,0x15,0x50,0x00,0x05,0x40,0x00,0x01,0x0a,0xaa,0xa0,0x4a,0xa0,0x21,0x4a,0xa1,0x21,0x4a,0xa0,0x21,0x4a,0xaa,0xa1,0x4a,0xaa,0xa1,0x48,0x0a,0xa1,0x48,0x4a,0xa1,0x48,0x4a,0xa1,0x40,0x00,0x01};
const char chr180[] PROGMEM = {0x55, 0x55, 0x59, 0x55, 0x55, 0x65, 0x55, 0x55, 0x15, 0x55, 0x41, 0x15, 0x55, 0x00, 0x15, 0x54, 0x00, 0x15, 0x50, 0x00, 0x05, 0x40, 0x00, 0x01, 0x0a, 0xaa, 0xa0, 0x4a, 0xa0, 0x21, 0x4a, 0xa1, 0x21, 0x4a, 0xa0, 0x21, 0x4a, 0xaa, 0xa1, 0x4a, 0xaa, 0xa1, 0x48, 0x0a, 0xa1, 0x48, 0x4a, 0xa1, 0x48, 0x4a, 0xa1, 0x40, 0x00, 0x01};
 
 
// 0 #######-----
4220,7 → 4220,7
// 17 -------#####
// 000000000011
// 012345678901
const char chr181[] PROGMEM = {0x00,0x01,0x55,0x2a,0xa1,0x55,0x22,0x21,0x55,0x22,0x21,0x55,0x00,0x01,0x55,0x55,0x48,0x55,0x55,0x22,0x15,0x54,0x80,0x85,0x54,0xaa,0x85,0x54,0x80,0x85,0x54,0x84,0x85,0x55,0x04,0x05,0x55,0x54,0x85,0x55,0x54,0x80,0x55,0x54,0xa8,0x55,0x54,0x88,0x55,0x54,0x88,0x55,0x54,0x00};
const char chr181[] PROGMEM = {0x00, 0x01, 0x55, 0x2a, 0xa1, 0x55, 0x22, 0x21, 0x55, 0x22, 0x21, 0x55, 0x00, 0x01, 0x55, 0x55, 0x48, 0x55, 0x55, 0x22, 0x15, 0x54, 0x80, 0x85, 0x54, 0xaa, 0x85, 0x54, 0x80, 0x85, 0x54, 0x84, 0x85, 0x55, 0x04, 0x05, 0x55, 0x54, 0x85, 0x55, 0x54, 0x80, 0x55, 0x54, 0xa8, 0x55, 0x54, 0x88, 0x55, 0x54, 0x88, 0x55, 0x54, 0x00};
 
 
// 0 -- -------
4243,7 → 4243,7
// 17 -- -
// 000000000011
// 012345678901
const char chr182[] PROGMEM = {0x5a,0x95,0x55,0x60,0x25,0x69,0x62,0x09,0x89,0x62,0x82,0x25,0x60,0xa0,0x95,0x58,0x28,0x25,0x56,0x0a,0x09,0x55,0x82,0x82,0x55,0x80,0xa2,0x55,0x88,0x02,0x55,0x88,0xa9,0x55,0x88,0x95,0x55,0x88,0x95,0x56,0x08,0x25,0x58,0xaa,0x89,0x62,0xaa,0xa2,0x60,0x00,0x02,0x5a,0xaa,0xa9};
const char chr182[] PROGMEM = {0x5a, 0x95, 0x55, 0x60, 0x25, 0x69, 0x62, 0x09, 0x89, 0x62, 0x82, 0x25, 0x60, 0xa0, 0x95, 0x58, 0x28, 0x25, 0x56, 0x0a, 0x09, 0x55, 0x82, 0x82, 0x55, 0x80, 0xa2, 0x55, 0x88, 0x02, 0x55, 0x88, 0xa9, 0x55, 0x88, 0x95, 0x55, 0x88, 0x95, 0x56, 0x08, 0x25, 0x58, 0xaa, 0x89, 0x62, 0xaa, 0xa2, 0x60, 0x00, 0x02, 0x5a, 0xaa, 0xa9};
 
 
// 0 -----##-----
4266,7 → 4266,7
// 17 ------------
// 000000000011
// 012345678901
const char chr183[] PROGMEM = {0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x50,0x28,0x05,0x55,0x28,0x55,0x55,0x28,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr183[] PROGMEM = {0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x50, 0x28, 0x05, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4289,7 → 4289,7
// 17 ------------
// 000000000011
// 012345678901
const char chr184[] PROGMEM = {0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x50,0x28,0x05,0x55,0x28,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr184[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x50, 0x28, 0x05, 0x55, 0x28, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4312,7 → 4312,7
// 17 ------------
// 000000000011
// 012345678901
const char chr185[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr185[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4335,7 → 4335,7
// 17 ------------
// 000000000011
// 012345678901
const char chr186[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr186[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4358,7 → 4358,7
// 17 ------------
// 000000000011
// 012345678901
const char chr187[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr187[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4381,7 → 4381,7
// 17 ------------
// 000000000011
// 012345678901
const char chr188[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr188[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4404,7 → 4404,7
// 17 ------------
// 000000000011
// 012345678901
const char chr189[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr189[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4427,7 → 4427,7
// 17 ------------
// 000000000011
// 012345678901
const char chr190[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x28,0x55,0x50,0x28,0x05,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55};
const char chr190[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x50, 0x28, 0x05, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4450,7 → 4450,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr191[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x28,0x55,0x55,0x28,0x55,0x50,0x28,0x05,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr191[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x50, 0x28, 0x05, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0
4473,7 → 4473,7
// 17 ------------
// 000000000011
// 012345678901
const char chr192[] PROGMEM = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr192[] PROGMEM = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0
4496,7 → 4496,7
// 17 ------------
// 000000000011
// 012345678901
const char chr193[] PROGMEM = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr193[] PROGMEM = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4519,7 → 4519,7
// 17
// 000000000011
// 012345678901
const char chr194[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
const char chr194[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
 
 
// 0
4542,7 → 4542,7
// 17 ------------
// 000000000011
// 012345678901
const char chr195[] PROGMEM = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr195[] PROGMEM = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4565,7 → 4565,7
// 17
// 000000000011
// 012345678901
const char chr196[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
const char chr196[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
 
 
// 0 ------------
4588,7 → 4588,7
// 17
// 000000000011
// 012345678901
const char chr197[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
const char chr197[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
 
 
// 0 ------------
4611,7 → 4611,7
// 17 ############
// 000000000011
// 012345678901
const char chr198[] PROGMEM = {0x55,0x55,0x55,0x40,0x00,0x01,0x4a,0xaa,0xa1,0x48,0x28,0x21,0x48,0x88,0xa1,0x48,0x28,0xa1,0x48,0xa8,0xa1,0x48,0xa8,0x21,0x4a,0xaa,0xa1,0x00,0x28,0x00,0x2a,0xaa,0xa8,0x20,0x00,0x08,0x22,0x22,0x28,0x28,0x88,0x88,0x22,0x22,0x28,0x28,0x00,0x28,0x2a,0xaa,0xa8,0x00,0x00,0x00};
const char chr198[] PROGMEM = {0x55, 0x55, 0x55, 0x40, 0x00, 0x01, 0x4a, 0xaa, 0xa1, 0x48, 0x28, 0x21, 0x48, 0x88, 0xa1, 0x48, 0x28, 0xa1, 0x48, 0xa8, 0xa1, 0x48, 0xa8, 0x21, 0x4a, 0xaa, 0xa1, 0x00, 0x28, 0x00, 0x2a, 0xaa, 0xa8, 0x20, 0x00, 0x08, 0x22, 0x22, 0x28, 0x28, 0x88, 0x88, 0x22, 0x22, 0x28, 0x28, 0x00, 0x28, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00};
 
 
// 0 ------------
4634,7 → 4634,7
// 17 ------------
// 000000000011
// 012345678901
const char chr199[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5a,0xaa,0xa9,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x5a,0xaa,0xa9,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x59,0x55,0x59,0x5a,0xaa,0xa9,0x55,0x55,0x55};
const char chr199[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5a, 0xaa, 0xa9, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x5a, 0xaa, 0xa9, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x59, 0x55, 0x59, 0x5a, 0xaa, 0xa9, 0x55, 0x55, 0x55};
 
 
// 0 ------##----
4657,7 → 4657,7
// 17 -------##---
// 000000000011
// 012345678901
const char chr200[] PROGMEM = {0x55,0x50,0x55,0x55,0x4a,0x15,0x55,0x2a,0x85,0x55,0x2a,0xa1,0x55,0x4a,0xa8,0x55,0x52,0xa8,0x55,0x54,0xaa,0x55,0x55,0x09,0x55,0x55,0x52,0x55,0x55,0x1a,0x55,0x51,0x96,0x55,0x18,0x85,0x54,0x88,0x28,0x54,0x82,0x05,0x55,0x20,0xa1,0x55,0x48,0x15,0x55,0x52,0x85,0x55,0x54,0x15};
const char chr200[] PROGMEM = {0x55, 0x50, 0x55, 0x55, 0x4a, 0x15, 0x55, 0x2a, 0x85, 0x55, 0x2a, 0xa1, 0x55, 0x4a, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x54, 0xaa, 0x55, 0x55, 0x09, 0x55, 0x55, 0x52, 0x55, 0x55, 0x1a, 0x55, 0x51, 0x96, 0x55, 0x18, 0x85, 0x54, 0x88, 0x28, 0x54, 0x82, 0x05, 0x55, 0x20, 0xa1, 0x55, 0x48, 0x15, 0x55, 0x52, 0x85, 0x55, 0x54, 0x15};
 
 
// 0 ------------
4680,7 → 4680,7
// 17 ------------
// 000000000011
// 012345678901
const char chr201[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x21,0x55,0x55,0xa8,0x55,0x55,0xa1,0x55,0x55,0x98,0x15,0x55,0x2a,0x85,0x55,0x4a,0xa1,0x55,0x4a,0xa8,0x55,0x52,0xaa,0x15,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55};
const char chr201[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x21, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa1, 0x55, 0x55, 0x98, 0x15, 0x55, 0x2a, 0x85, 0x55, 0x4a, 0xa1, 0x55, 0x4a, 0xa8, 0x55, 0x52, 0xaa, 0x15, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ---# #--
4703,7 → 4703,7
// 17 ---# #--
// 000000000011
// 012345678901
const char chr202[] PROGMEM = {0x54,0xaa,0x85,0x52,0x00,0x21,0x48,0x2a,0x08,0x60,0x80,0x82,0x62,0x08,0x22,0x62,0x2a,0x22,0x62,0x08,0x22,0x60,0x88,0x82,0x48,0x08,0x08,0x52,0x08,0x21,0x54,0x48,0x45,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x2a,0x15,0x54,0xaa,0x85};
const char chr202[] PROGMEM = {0x54, 0xaa, 0x85, 0x52, 0x00, 0x21, 0x48, 0x2a, 0x08, 0x60, 0x80, 0x82, 0x62, 0x08, 0x22, 0x62, 0x2a, 0x22, 0x62, 0x08, 0x22, 0x60, 0x88, 0x82, 0x48, 0x08, 0x08, 0x52, 0x08, 0x21, 0x54, 0x48, 0x45, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x2a, 0x15, 0x54, 0xaa, 0x85};
 
 
// 0 ------------
4726,7 → 4726,7
// 17 -------#####
// 000000000011
// 012345678901
const char chr203[] PROGMEM = {0x55,0x55,0x55,0x01,0x55,0x55,0x21,0x55,0x55,0x20,0x15,0x55,0x22,0x15,0x55,0x28,0x15,0x55,0x22,0x15,0x55,0x00,0x00,0x15,0x52,0xaa,0x15,0x52,0x22,0x15,0x52,0x22,0x15,0x50,0x00,0x05,0x55,0x54,0x85,0x55,0x54,0x80,0x55,0x54,0xa8,0x55,0x54,0x88,0x55,0x54,0x88,0x55,0x54,0x00};
const char chr203[] PROGMEM = {0x55, 0x55, 0x55, 0x01, 0x55, 0x55, 0x21, 0x55, 0x55, 0x20, 0x15, 0x55, 0x22, 0x15, 0x55, 0x28, 0x15, 0x55, 0x22, 0x15, 0x55, 0x00, 0x00, 0x15, 0x52, 0xaa, 0x15, 0x52, 0x22, 0x15, 0x52, 0x22, 0x15, 0x50, 0x00, 0x05, 0x55, 0x54, 0x85, 0x55, 0x54, 0x80, 0x55, 0x54, 0xa8, 0x55, 0x54, 0x88, 0x55, 0x54, 0x88, 0x55, 0x54, 0x00};
 
 
// 0 ------------
4749,7 → 4749,7
// 17 #########---
// 000000000011
// 012345678901
const char chr204[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x15,0x22,0x8a,0x15,0x28,0xa2,0x15,0x20,0x82,0x15,0x20,0x82,0x15,0x00,0x00,0x15};
const char chr204[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x15, 0x22, 0x8a, 0x15, 0x28, 0xa2, 0x15, 0x20, 0x82, 0x15, 0x20, 0x82, 0x15, 0x00, 0x00, 0x15};
 
 
// 0 ----####----
4772,7 → 4772,7
// 17 ----####----
// 000000000011
// 012345678901
const char chr205[] PROGMEM = {0x55,0x00,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x00,0x28,0x00,0x2a,0xaa,0xa8,0x0a,0xaa,0xa0,0x42,0xaa,0x81,0x50,0xaa,0x05,0x54,0x28,0x15,0x55,0x00,0x55};
const char chr205[] PROGMEM = {0x55, 0x00, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x00, 0x28, 0x00, 0x2a, 0xaa, 0xa8, 0x0a, 0xaa, 0xa0, 0x42, 0xaa, 0x81, 0x50, 0xaa, 0x05, 0x54, 0x28, 0x15, 0x55, 0x00, 0x55};
 
 
// 0 ------------
4795,7 → 4795,7
// 17 ------------
// 000000000011
// 012345678901
const char chr206[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr206[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ----####----
4818,7 → 4818,7
// 17 ----####----
// 000000000011
// 012345678901
const char chr207[] PROGMEM = {0x55,0x00,0x55,0x54,0x28,0x15,0x50,0xaa,0x05,0x42,0xaa,0x81,0x0a,0xaa,0xa0,0x2a,0xaa,0xa8,0x00,0x28,0x00,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x00,0x55};
const char chr207[] PROGMEM = {0x55, 0x00, 0x55, 0x54, 0x28, 0x15, 0x50, 0xaa, 0x05, 0x42, 0xaa, 0x81, 0x0a, 0xaa, 0xa0, 0x2a, 0xaa, 0xa8, 0x00, 0x28, 0x00, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x00, 0x55};
 
 
// 0 ------------
4841,7 → 4841,7
// 17 ------------
// 000000000011
// 012345678901
const char chr208[] PROGMEM = {0x55,0x55,0x55,0x54,0x01,0x55,0x52,0xa8,0x55,0x48,0x02,0x15,0x48,0x52,0x15,0x48,0x52,0x15,0x48,0x02,0x15,0x52,0xa8,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr208[] PROGMEM = {0x55, 0x55, 0x55, 0x54, 0x01, 0x55, 0x52, 0xa8, 0x55, 0x48, 0x02, 0x15, 0x48, 0x52, 0x15, 0x48, 0x52, 0x15, 0x48, 0x02, 0x15, 0x52, 0xa8, 0x55, 0x54, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ---##--#--#-
4864,7 → 4864,7
// 17 -----###----
// 000000000011
// 012345678901
const char chr209[] PROGMEM = {0x54,0x14,0x51,0x52,0x82,0x08,0x48,0x22,0x88,0x48,0x22,0x28,0x48,0x22,0x28,0x52,0x82,0x08,0x54,0x14,0x51,0x55,0x40,0x55,0x55,0x2a,0x15,0x54,0x88,0x85,0x52,0x08,0x21,0x48,0x48,0x08,0x48,0x4a,0x88,0x48,0x50,0x08,0x52,0x15,0x21,0x54,0x80,0x85,0x55,0x2a,0x15,0x55,0x40,0x55};
const char chr209[] PROGMEM = {0x54, 0x14, 0x51, 0x52, 0x82, 0x08, 0x48, 0x22, 0x88, 0x48, 0x22, 0x28, 0x48, 0x22, 0x28, 0x52, 0x82, 0x08, 0x54, 0x14, 0x51, 0x55, 0x40, 0x55, 0x55, 0x2a, 0x15, 0x54, 0x88, 0x85, 0x52, 0x08, 0x21, 0x48, 0x48, 0x08, 0x48, 0x4a, 0x88, 0x48, 0x50, 0x08, 0x52, 0x15, 0x21, 0x54, 0x80, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x40, 0x55};
 
 
// 0 -###-#--#-#-
4887,7 → 4887,7
// 17 -----###----
// 000000000011
// 012345678901
const char chr210[] PROGMEM = {0x40,0x45,0x11,0x2a,0x20,0x88,0x20,0x20,0x88,0x28,0x21,0x21,0x21,0x20,0x21,0x21,0x2a,0x21,0x45,0x40,0x45,0x55,0x40,0x55,0x55,0x2a,0x15,0x54,0x88,0x85,0x52,0x08,0x21,0x48,0x48,0x08,0x48,0x4a,0x88,0x48,0x50,0x08,0x52,0x15,0x21,0x54,0x80,0x85,0x55,0x2a,0x15,0x55,0x40,0x55};
const char chr210[] PROGMEM = {0x40, 0x45, 0x11, 0x2a, 0x20, 0x88, 0x20, 0x20, 0x88, 0x28, 0x21, 0x21, 0x21, 0x20, 0x21, 0x21, 0x2a, 0x21, 0x45, 0x40, 0x45, 0x55, 0x40, 0x55, 0x55, 0x2a, 0x15, 0x54, 0x88, 0x85, 0x52, 0x08, 0x21, 0x48, 0x48, 0x08, 0x48, 0x4a, 0x88, 0x48, 0x50, 0x08, 0x52, 0x15, 0x21, 0x54, 0x80, 0x85, 0x55, 0x2a, 0x15, 0x55, 0x40, 0x55};
 
 
// 0 ------------
4910,7 → 4910,7
// 17 ------------
// 000000000011
// 012345678901
const char chr211[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x55,0x05,0x4a,0x14,0xa1,0x4a,0x84,0xa1,0x4a,0x80,0xa1,0x4a,0xa0,0xa1,0x0a,0x28,0xa0,0x8a,0x28,0xa2,0x0a,0x0a,0xa0,0x4a,0x02,0xa1,0x4a,0x12,0xa1,0x4a,0x14,0xa1,0x50,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr211[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x05, 0x4a, 0x14, 0xa1, 0x4a, 0x84, 0xa1, 0x4a, 0x80, 0xa1, 0x4a, 0xa0, 0xa1, 0x0a, 0x28, 0xa0, 0x8a, 0x28, 0xa2, 0x0a, 0x0a, 0xa0, 0x4a, 0x02, 0xa1, 0x4a, 0x12, 0xa1, 0x4a, 0x14, 0xa1, 0x50, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4933,7 → 4933,7
// 17 ------------
// 000000000011
// 012345678901
const char chr212[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x52,0x80,0x85,0x52,0x85,0x55,0x02,0xaa,0x00,0xa8,0xaa,0x8a,0x00,0x02,0x80,0x52,0x02,0x85,0x52,0xaa,0x85,0x50,0xaa,0x05,0x55,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr212[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x52, 0x80, 0x85, 0x52, 0x85, 0x55, 0x02, 0xaa, 0x00, 0xa8, 0xaa, 0x8a, 0x00, 0x02, 0x80, 0x52, 0x02, 0x85, 0x52, 0xaa, 0x85, 0x50, 0xaa, 0x05, 0x55, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4956,7 → 4956,7
// 17 ------------
// 000000000011
// 012345678901
const char chr213[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x15,0x52,0xaa,0x85,0x52,0xaa,0x85,0x52,0x80,0x15,0x52,0x85,0x55,0x02,0xa8,0x00,0xa2,0xa8,0xaa,0x02,0x80,0x00,0x52,0x80,0x55,0x52,0xaa,0x85,0x52,0xaa,0x85,0x54,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr213[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x52, 0x80, 0x15, 0x52, 0x85, 0x55, 0x02, 0xa8, 0x00, 0xa2, 0xa8, 0xaa, 0x02, 0x80, 0x00, 0x52, 0x80, 0x55, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0x85, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
4979,7 → 4979,7
// 17 ------------
// 000000000011
// 012345678901
const char chr214[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x55,0x05,0x4a,0x14,0xa1,0x4a,0x14,0xa1,0x4a,0x14,0xa1,0x4a,0x00,0xa1,0x0a,0x28,0xa0,0xa2,0x28,0x8a,0x02,0x28,0x80,0x52,0x82,0x85,0x52,0x82,0x85,0x52,0x82,0x85,0x54,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr214[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x05, 0x4a, 0x14, 0xa1, 0x4a, 0x14, 0xa1, 0x4a, 0x14, 0xa1, 0x4a, 0x00, 0xa1, 0x0a, 0x28, 0xa0, 0xa2, 0x28, 0x8a, 0x02, 0x28, 0x80, 0x52, 0x82, 0x85, 0x52, 0x82, 0x85, 0x52, 0x82, 0x85, 0x54, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5002,7 → 5002,7
// 17 ------------
// 000000000011
// 012345678901
const char chr215[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x21,0x55,0x01,0x21,0x00,0xa8,0x20,0xaa,0x01,0x21,0x00,0x55,0x21,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr215[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x21, 0x55, 0x01, 0x21, 0x00, 0xa8, 0x20, 0xaa, 0x01, 0x21, 0x00, 0x55, 0x21, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5025,7 → 5025,7
// 17 ------------
// 000000000011
// 012345678901
const char chr216[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr216[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5048,7 → 5048,7
// 17 ------------
// 000000000011
// 012345678901
const char chr217[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x55,0x54,0x85,0x40,0x00,0xa1,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x40,0x00,0xa1,0x55,0x54,0x85,0x55,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr217[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x54, 0x85, 0x40, 0x00, 0xa1, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0xa1, 0x55, 0x54, 0x85, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5071,7 → 5071,7
// 17 ------------
// 000000000011
// 012345678901
const char chr218[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x01,0x55,0x2a,0xa8,0x55,0x4a,0xa8,0x55,0x52,0xa8,0x55,0x4a,0xa8,0x55,0x2a,0x28,0x54,0xa8,0x48,0x52,0xa1,0x51,0x4a,0x85,0x55,0x52,0x15,0x55,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr218[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x2a, 0xa8, 0x55, 0x4a, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x4a, 0xa8, 0x55, 0x2a, 0x28, 0x54, 0xa8, 0x48, 0x52, 0xa1, 0x51, 0x4a, 0x85, 0x55, 0x52, 0x15, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5094,7 → 5094,7
// 17 ------------
// 000000000011
// 012345678901
const char chr219[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x54,0x28,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr219[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x54, 0x28, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5117,7 → 5117,7
// 17 ------------
// 000000000011
// 012345678901
const char chr220[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x01,0x55,0x2a,0xa8,0x55,0x2a,0xa1,0x55,0x2a,0x85,0x55,0x2a,0xa1,0x55,0x28,0xa8,0x55,0x21,0x2a,0x15,0x45,0x4a,0x85,0x55,0x52,0xa1,0x55,0x54,0x85,0x55,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr220[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x55, 0x2a, 0xa8, 0x55, 0x2a, 0xa1, 0x55, 0x2a, 0x85, 0x55, 0x2a, 0xa1, 0x55, 0x28, 0xa8, 0x55, 0x21, 0x2a, 0x15, 0x45, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x54, 0x85, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5140,7 → 5140,7
// 17 ------------
// 000000000011
// 012345678901
const char chr221[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x52,0x15,0x55,0x4a,0x00,0x01,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x4a,0x00,0x01,0x52,0x15,0x55,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr221[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x52, 0x15, 0x55, 0x4a, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x4a, 0x00, 0x01, 0x52, 0x15, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5163,7 → 5163,7
// 17 ------------
// 000000000011
// 012345678901
const char chr222[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x55,0x54,0x85,0x55,0x52,0xa1,0x45,0x4a,0x85,0x21,0x2a,0x15,0x28,0xa8,0x55,0x2a,0xa1,0x55,0x2a,0x85,0x55,0x2a,0xa1,0x55,0x2a,0xa8,0x55,0x40,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr222[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x54, 0x85, 0x55, 0x52, 0xa1, 0x45, 0x4a, 0x85, 0x21, 0x2a, 0x15, 0x28, 0xa8, 0x55, 0x2a, 0xa1, 0x55, 0x2a, 0x85, 0x55, 0x2a, 0xa1, 0x55, 0x2a, 0xa8, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5186,7 → 5186,7
// 17 ------------
// 000000000011
// 012345678901
const char chr223[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0x28,0x15,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr223[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0x28, 0x15, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5209,7 → 5209,7
// 17 ------------
// 000000000011
// 012345678901
const char chr224[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x52,0x15,0x55,0x4a,0x85,0x55,0x52,0xa1,0x51,0x54,0xa8,0x48,0x55,0x2a,0x28,0x55,0x4a,0xa8,0x55,0x52,0xa8,0x55,0x4a,0xa8,0x55,0x2a,0xa8,0x55,0x40,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr224[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x52, 0x15, 0x55, 0x4a, 0x85, 0x55, 0x52, 0xa1, 0x51, 0x54, 0xa8, 0x48, 0x55, 0x2a, 0x28, 0x55, 0x4a, 0xa8, 0x55, 0x52, 0xa8, 0x55, 0x4a, 0xa8, 0x55, 0x2a, 0xa8, 0x55, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5232,7 → 5232,7
// 17 ------------
// 000000000011
// 012345678901
const char chr225[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr225[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5255,7 → 5255,7
// 17 ------------
// 000000000011
// 012345678901
const char chr226[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr226[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5278,7 → 5278,7
// 17 ------------
// 000000000011
// 012345678901
const char chr227[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr227[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5301,7 → 5301,7
// 17 ---######---
// 000000000011
// 012345678901
const char chr228[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x14,0x00,0xaa,0x14,0xaa,0xaa,0x82,0xaa,0x00,0xaa,0x00,0x54,0x00,0x15};
const char chr228[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x14, 0x00, 0xaa, 0x14, 0xaa, 0xaa, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x54, 0x00, 0x15};
 
 
// 0 ------------
5324,7 → 5324,7
// 17 -----##-----
// 000000000011
// 012345678901
const char chr229[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x00,0x2a,0x14,0xa8,0x4a,0x82,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55};
const char chr229[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x00, 0x2a, 0x14, 0xa8, 0x4a, 0x82, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55};
 
 
// 0 ----##--#-#-
5347,7 → 5347,7
// 17 ------------
// 000000000011
// 012345678901
const char chr230[] PROGMEM = {0x55,0x05,0x11,0x54,0xa0,0x88,0x54,0x88,0x88,0x54,0xa0,0xa8,0x54,0x84,0x88,0x44,0x84,0x88,0x21,0x15,0x11,0xa8,0x55,0x55,0xa1,0x55,0x55,0x98,0x15,0x55,0x2a,0x85,0x55,0x4a,0xa1,0x55,0x4a,0xa8,0x55,0x52,0xaa,0x15,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55};
const char chr230[] PROGMEM = {0x55, 0x05, 0x11, 0x54, 0xa0, 0x88, 0x54, 0x88, 0x88, 0x54, 0xa0, 0xa8, 0x54, 0x84, 0x88, 0x44, 0x84, 0x88, 0x21, 0x15, 0x11, 0xa8, 0x55, 0x55, 0xa1, 0x55, 0x55, 0x98, 0x15, 0x55, 0x2a, 0x85, 0x55, 0x4a, 0xa1, 0x55, 0x4a, 0xa8, 0x55, 0x52, 0xaa, 0x15, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ---------##-
5370,7 → 5370,7
// 17 ------------
// 000000000011
// 012345678901
const char chr231[] PROGMEM = {0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0x81,0x55,0x54,0x85,0x55,0x54,0x81,0x45,0x55,0x28,0x21,0x55,0x01,0xa8,0x54,0x88,0xa1,0x54,0x88,0x98,0x14,0xa8,0x2a,0x84,0x88,0x4a,0xa0,0x88,0x4a,0xa8,0x11,0x52,0xaa,0x15,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55};
const char chr231[] PROGMEM = {0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0x81, 0x55, 0x54, 0x85, 0x55, 0x54, 0x81, 0x45, 0x55, 0x28, 0x21, 0x55, 0x01, 0xa8, 0x54, 0x88, 0xa1, 0x54, 0x88, 0x98, 0x14, 0xa8, 0x2a, 0x84, 0x88, 0x4a, 0xa0, 0x88, 0x4a, 0xa8, 0x11, 0x52, 0xaa, 0x15, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5393,7 → 5393,7
// 17 ------------
// 000000000011
// 012345678901
const char chr232[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x0a,0xaa,0xa0,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr232[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x0a, 0xaa, 0xa0, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5416,7 → 5416,7
// 17 ----# #----
// 000000000011
// 012345678901
const char chr233[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x00,0x28,0x00,0x55,0x28,0x55,0x40,0x28,0x01,0x2a,0xaa,0xa8,0x4a,0xaa,0xa1,0x52,0xaa,0x85,0x54,0xaa,0x15,0x55,0x28,0x55};
const char chr233[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x00, 0x28, 0x00, 0x55, 0x28, 0x55, 0x40, 0x28, 0x01, 0x2a, 0xaa, 0xa8, 0x4a, 0xaa, 0xa1, 0x52, 0xaa, 0x85, 0x54, 0xaa, 0x15, 0x55, 0x28, 0x55};
 
 
// 0 ------------
5439,7 → 5439,7
// 17 ------------
// 000000000011
// 012345678901
const char chr234[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x0a,0xaa,0xa0,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr234[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x0a, 0xaa, 0xa0, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ----# #----
5462,7 → 5462,7
// 17 ------------
// 000000000011
// 012345678901
const char chr235[] PROGMEM = {0x55,0x28,0x55,0x54,0xaa,0x15,0x52,0xaa,0x85,0x4a,0xaa,0xa1,0x2a,0xaa,0xa8,0x40,0x28,0x01,0x55,0x28,0x55,0x00,0x28,0x00,0x2a,0xaa,0xa8,0x2a,0xaa,0xa8,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};
const char chr235[] PROGMEM = {0x55, 0x28, 0x55, 0x54, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x4a, 0xaa, 0xa1, 0x2a, 0xaa, 0xa8, 0x40, 0x28, 0x01, 0x55, 0x28, 0x55, 0x00, 0x28, 0x00, 0x2a, 0xaa, 0xa8, 0x2a, 0xaa, 0xa8, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5485,7 → 5485,7
// 17 ------------
// 000000000011
// 012345678901
const char chr236[] PROGMEM = {0x55,0x55,0x55,0x40,0x00,0x00,0x2a,0xaa,0xaa,0x20,0x00,0x08,0x22,0x14,0x88,0x22,0x12,0x88,0x22,0x0a,0x88,0x22,0x2a,0x88,0x22,0xaa,0x88,0x22,0xaa,0x88,0x22,0x2a,0x88,0x22,0x0a,0x88,0x22,0x12,0x88,0x22,0x14,0x88,0x20,0x00,0x08,0x2a,0xaa,0xaa,0x40,0x00,0x00,0x55,0x55,0x55};
const char chr236[] PROGMEM = {0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x2a, 0xaa, 0xaa, 0x20, 0x00, 0x08, 0x22, 0x14, 0x88, 0x22, 0x12, 0x88, 0x22, 0x0a, 0x88, 0x22, 0x2a, 0x88, 0x22, 0xaa, 0x88, 0x22, 0xaa, 0x88, 0x22, 0x2a, 0x88, 0x22, 0x0a, 0x88, 0x22, 0x12, 0x88, 0x22, 0x14, 0x88, 0x20, 0x00, 0x08, 0x2a, 0xaa, 0xaa, 0x40, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5508,7 → 5508,7
// 17 ------------
// 000000000011
// 012345678901
const char chr237[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x50,0x55,0x55,0x4a,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x48,0x55,0x55,0x4a,0x55,0x55,0x50,0x55,0x55,0x55};
const char chr237[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x4a, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x48, 0x55, 0x55, 0x4a, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5531,7 → 5531,7
// 17 ------------
// 000000000011
// 012345678901
const char chr238[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr238[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5554,7 → 5554,7
// 17 ------------
// 000000000011
// 012345678901
const char chr239[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0xaa,0xaa,0x85,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr239[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0xaa, 0xaa, 0x85, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5577,7 → 5577,7
// 17 ------------
// 000000000011
// 012345678901
const char chr240[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr240[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5600,7 → 5600,7
// 17 ------------
// 000000000011
// 012345678901
const char chr241[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0xa8,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr241[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0xa8, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5623,7 → 5623,7
// 17 ------------
// 000000000011
// 012345678901
const char chr242[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x55,0x55,0x55};
const char chr242[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5646,7 → 5646,7
// 17 ------------
// 000000000011
// 012345678901
const char chr243[] PROGMEM = {0x55,0x55,0x55,0x05,0x55,0x55,0xa1,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0x21,0x55,0x55,0xa1,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55};
const char chr243[] PROGMEM = {0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0xa1, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0x21, 0x55, 0x55, 0xa1, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5669,7 → 5669,7
// 17 ------------
// 000000000011
// 012345678901
const char chr244[] PROGMEM = {0x55,0x55,0x55,0x00,0x00,0x01,0xaa,0xaa,0xa8,0x20,0x00,0x08,0x22,0x14,0x88,0x22,0x84,0x88,0x22,0xa0,0x88,0x22,0xa8,0x88,0x22,0xaa,0x88,0x22,0xaa,0x88,0x22,0xa8,0x88,0x22,0xa0,0x88,0x22,0x84,0x88,0x22,0x14,0x88,0x20,0x00,0x08,0xaa,0xaa,0xa8,0x00,0x00,0x01,0x55,0x55,0x55};
const char chr244[] PROGMEM = {0x55, 0x55, 0x55, 0x00, 0x00, 0x01, 0xaa, 0xaa, 0xa8, 0x20, 0x00, 0x08, 0x22, 0x14, 0x88, 0x22, 0x84, 0x88, 0x22, 0xa0, 0x88, 0x22, 0xa8, 0x88, 0x22, 0xaa, 0x88, 0x22, 0xaa, 0x88, 0x22, 0xa8, 0x88, 0x22, 0xa0, 0x88, 0x22, 0x84, 0x88, 0x22, 0x14, 0x88, 0x20, 0x00, 0x08, 0xaa, 0xaa, 0xa8, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55};
 
 
// 0 -----------#
5692,7 → 5692,7
// 17 ----------##
// 000000000011
// 012345678901
const char chr245[] PROGMEM = {0x55,0x55,0x54,0x55,0x55,0x52,0x55,0x50,0x52,0x55,0x4a,0x10,0x55,0x4a,0x0a,0x55,0x50,0x2a,0x55,0x54,0xa0,0x55,0x02,0x85,0x54,0xa2,0x85,0x54,0xa2,0x85,0x55,0x02,0x85,0x55,0x54,0xa0,0x55,0x50,0x2a,0x55,0x4a,0x0a,0x55,0x4a,0x10,0x55,0x50,0x52,0x55,0x55,0x52,0x55,0x55,0x50};
const char chr245[] PROGMEM = {0x55, 0x55, 0x54, 0x55, 0x55, 0x52, 0x55, 0x50, 0x52, 0x55, 0x4a, 0x10, 0x55, 0x4a, 0x0a, 0x55, 0x50, 0x2a, 0x55, 0x54, 0xa0, 0x55, 0x02, 0x85, 0x54, 0xa2, 0x85, 0x54, 0xa2, 0x85, 0x55, 0x02, 0x85, 0x55, 0x54, 0xa0, 0x55, 0x50, 0x2a, 0x55, 0x4a, 0x0a, 0x55, 0x4a, 0x10, 0x55, 0x50, 0x52, 0x55, 0x55, 0x52, 0x55, 0x55, 0x50};
 
 
// 0 #-----------
5715,7 → 5715,7
// 17 #-----------
// 000000000011
// 012345678901
const char chr246[] PROGMEM = {0x15,0x55,0x55,0x85,0x55,0x55,0x85,0x05,0x55,0x04,0xa1,0x55,0xa0,0xa1,0x55,0xa8,0x05,0x55,0x0a,0x15,0x55,0x52,0x80,0x55,0x52,0x8a,0x15,0x52,0x8a,0x15,0x52,0x80,0x55,0x0a,0x15,0x55,0xa8,0x05,0x55,0xa0,0xa1,0x55,0x04,0xa1,0x55,0x85,0x05,0x55,0x85,0x55,0x55,0x15,0x55,0x55};
const char chr246[] PROGMEM = {0x15, 0x55, 0x55, 0x85, 0x55, 0x55, 0x85, 0x05, 0x55, 0x04, 0xa1, 0x55, 0xa0, 0xa1, 0x55, 0xa8, 0x05, 0x55, 0x0a, 0x15, 0x55, 0x52, 0x80, 0x55, 0x52, 0x8a, 0x15, 0x52, 0x8a, 0x15, 0x52, 0x80, 0x55, 0x0a, 0x15, 0x55, 0xa8, 0x05, 0x55, 0xa0, 0xa1, 0x55, 0x04, 0xa1, 0x55, 0x85, 0x05, 0x55, 0x85, 0x55, 0x55, 0x15, 0x55, 0x55};
 
 
// 0 ------------
5738,7 → 5738,7
// 17 ------------
// 000000000011
// 012345678901
const char chr247[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x50,0x55,0x55,0x0a,0x55,0x54,0xaa,0x55,0x52,0xa0,0x55,0x4a,0x04,0x55,0x4a,0x14,0x55,0x28,0x54,0x55,0x28,0x54,0x55,0x28,0x54,0x55,0x28,0x54,0x55,0x4a,0x14,0x55,0x4a,0x04,0x55,0x52,0xa0,0x55,0x54,0xaa,0x55,0x55,0x0a,0x55,0x55,0x50,0x55,0x55,0x55};
const char chr247[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x0a, 0x55, 0x54, 0xaa, 0x55, 0x52, 0xa0, 0x55, 0x4a, 0x04, 0x55, 0x4a, 0x14, 0x55, 0x28, 0x54, 0x55, 0x28, 0x54, 0x55, 0x28, 0x54, 0x55, 0x28, 0x54, 0x55, 0x4a, 0x14, 0x55, 0x4a, 0x04, 0x55, 0x52, 0xa0, 0x55, 0x54, 0xaa, 0x55, 0x55, 0x0a, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55};
 
 
// 0 ------------
5761,7 → 5761,7
// 17 ------------
// 000000000011
// 012345678901
const char chr248[] PROGMEM = {0x55,0x55,0x55,0x05,0x55,0x55,0xa0,0x55,0x55,0xaa,0x15,0x55,0xaa,0x85,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0xa8,0x55,0xaa,0xa8,0x55,0xaa,0xa8,0x55,0xaa,0xa8,0x55,0xaa,0xa1,0x55,0xaa,0xa1,0x55,0xaa,0x85,0x55,0xaa,0x15,0x55,0xa0,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55};
const char chr248[] PROGMEM = {0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0xa0, 0x55, 0x55, 0xaa, 0x15, 0x55, 0xaa, 0x85, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa8, 0x55, 0xaa, 0xa8, 0x55, 0xaa, 0xa8, 0x55, 0xaa, 0xa8, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0xa1, 0x55, 0xaa, 0x85, 0x55, 0xaa, 0x15, 0x55, 0xa0, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 ---------##-
5784,7 → 5784,7
// 17 ------------
// 000000000011
// 012345678901
const char chr249[] PROGMEM = {0x55,0x55,0x41,0x55,0x55,0x28,0x55,0x54,0xa8,0x55,0x52,0x88,0x40,0x0a,0x08,0x2a,0xa8,0x48,0x20,0xa1,0x48,0x20,0xa1,0x48,0x20,0xa1,0x48,0x20,0xa1,0x48,0x20,0xa1,0x48,0x2a,0xa8,0x48,0x40,0x0a,0x08,0x55,0x52,0x88,0x55,0x54,0xa8,0x55,0x55,0x28,0x55,0x55,0x41,0x55,0x55,0x55};
const char chr249[] PROGMEM = {0x55, 0x55, 0x41, 0x55, 0x55, 0x28, 0x55, 0x54, 0xa8, 0x55, 0x52, 0x88, 0x40, 0x0a, 0x08, 0x2a, 0xa8, 0x48, 0x20, 0xa1, 0x48, 0x20, 0xa1, 0x48, 0x20, 0xa1, 0x48, 0x20, 0xa1, 0x48, 0x20, 0xa1, 0x48, 0x2a, 0xa8, 0x48, 0x40, 0x0a, 0x08, 0x55, 0x52, 0x88, 0x55, 0x54, 0xa8, 0x55, 0x55, 0x28, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55};
 
 
// 0 ------#-----
5807,7 → 5807,7
// 17 ------------
// 000000000011
// 012345678901
const char chr250[] PROGMEM = {0x55,0x51,0x55,0x55,0x68,0x55,0x55,0x5a,0x15,0x54,0x12,0x15,0x52,0x82,0x15,0x44,0x82,0x85,0x20,0xa0,0x85,0x28,0x20,0x85,0x48,0x20,0x85,0x28,0x20,0x85,0x20,0xa0,0x85,0x44,0x82,0x85,0x52,0x82,0x15,0x54,0x12,0x15,0x55,0x5a,0x15,0x55,0x68,0x55,0x55,0x51,0x55,0x55,0x55,0x55};
const char chr250[] PROGMEM = {0x55, 0x51, 0x55, 0x55, 0x68, 0x55, 0x55, 0x5a, 0x15, 0x54, 0x12, 0x15, 0x52, 0x82, 0x15, 0x44, 0x82, 0x85, 0x20, 0xa0, 0x85, 0x28, 0x20, 0x85, 0x48, 0x20, 0x85, 0x28, 0x20, 0x85, 0x20, 0xa0, 0x85, 0x44, 0x82, 0x85, 0x52, 0x82, 0x15, 0x54, 0x12, 0x15, 0x55, 0x5a, 0x15, 0x55, 0x68, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55};
 
 
// 0 -##########-
5830,7 → 5830,7
// 17 -##########-
// 000000000011
// 012345678901
const char chr251[] PROGMEM = {0x40,0x00,0x01,0x2a,0xaa,0xa8,0x48,0x00,0x21,0x48,0x55,0x21,0x48,0x55,0x21,0x48,0x55,0x21,0x52,0x14,0x85,0x54,0x82,0x15,0x55,0x28,0x55,0x55,0x28,0x55,0x54,0x82,0x15,0x52,0x14,0x85,0x48,0x55,0x21,0x48,0x55,0x21,0x48,0x55,0x21,0x48,0x00,0x21,0x2a,0xaa,0xa8,0x40,0x00,0x01};
const char chr251[] PROGMEM = {0x40, 0x00, 0x01, 0x2a, 0xaa, 0xa8, 0x48, 0x00, 0x21, 0x48, 0x55, 0x21, 0x48, 0x55, 0x21, 0x48, 0x55, 0x21, 0x52, 0x14, 0x85, 0x54, 0x82, 0x15, 0x55, 0x28, 0x55, 0x55, 0x28, 0x55, 0x54, 0x82, 0x15, 0x52, 0x14, 0x85, 0x48, 0x55, 0x21, 0x48, 0x55, 0x21, 0x48, 0x55, 0x21, 0x48, 0x00, 0x21, 0x2a, 0xaa, 0xa8, 0x40, 0x00, 0x01};
 
 
// 0 ------------
5853,7 → 5853,7
// 17 --------#---
// 000000000011
// 012345678901
const char chr252[] PROGMEM = {0x55,0x55,0x55,0x50,0x55,0x55,0x52,0x15,0x55,0x52,0x85,0x55,0x52,0xa1,0x55,0x52,0xa8,0x55,0x52,0xaa,0x15,0x52,0xaa,0x85,0x52,0xaa,0xa1,0x52,0xaa,0xa8,0x52,0xaa,0x00,0x52,0xaa,0x05,0x52,0x0a,0x85,0x50,0x0a,0x81,0x55,0x52,0xa1,0x55,0x52,0xa1,0x55,0x50,0x81,0x55,0x55,0x15};
const char chr252[] PROGMEM = {0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x52, 0x15, 0x55, 0x52, 0x85, 0x55, 0x52, 0xa1, 0x55, 0x52, 0xa8, 0x55, 0x52, 0xaa, 0x15, 0x52, 0xaa, 0x85, 0x52, 0xaa, 0xa1, 0x52, 0xaa, 0xa8, 0x52, 0xaa, 0x00, 0x52, 0xaa, 0x05, 0x52, 0x0a, 0x85, 0x50, 0x0a, 0x81, 0x55, 0x52, 0xa1, 0x55, 0x52, 0xa1, 0x55, 0x50, 0x81, 0x55, 0x55, 0x15};
 
 
// 0 ------------
5876,7 → 5876,7
// 17 -#--#-#---#-
// 000000000011
// 012345678901
const char chr253[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x51,0x51,0x4a,0x08,0x48,0x20,0x8a,0x28,0x20,0x88,0x88,0x20,0x88,0x88,0x2a,0x88,0x08,0x20,0x88,0x48,0x20,0x88,0x48,0x20,0x88,0x48,0x20,0x88,0x48,0x45,0x11,0x51};
const char chr253[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x51, 0x51, 0x4a, 0x08, 0x48, 0x20, 0x8a, 0x28, 0x20, 0x88, 0x88, 0x20, 0x88, 0x88, 0x2a, 0x88, 0x08, 0x20, 0x88, 0x48, 0x20, 0x88, 0x48, 0x20, 0x88, 0x48, 0x20, 0x88, 0x48, 0x45, 0x11, 0x51};
 
 
// 0 ------------
5899,7 → 5899,7
// 17 -#----#---#-
// 000000000011
// 012345678901
const char chr254[] PROGMEM = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x51,0x51,0x2a,0x08,0x48,0x20,0x8a,0x28,0x20,0x88,0x88,0x20,0x88,0x88,0x2a,0x08,0x08,0x20,0x48,0x48,0x21,0x48,0x48,0x21,0x48,0x48,0x21,0x48,0x48,0x45,0x51,0x51};
const char chr254[] PROGMEM = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x51, 0x51, 0x2a, 0x08, 0x48, 0x20, 0x8a, 0x28, 0x20, 0x88, 0x88, 0x20, 0x88, 0x88, 0x2a, 0x08, 0x08, 0x20, 0x48, 0x48, 0x21, 0x48, 0x48, 0x21, 0x48, 0x48, 0x21, 0x48, 0x48, 0x45, 0x51, 0x51};
 
 
// 0
5922,45 → 5922,44
// 17
// 000000000011
// 012345678901
const char chr255[] PROGMEM = {0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
const char chr255[] PROGMEM = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
 
 
const char *chars[] PROGMEM = { chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10, chr11, chr12, chr13, chr14, chr15, chr16, chr17, chr18, chr19, chr20, chr21, chr22, chr23, chr24, chr25, chr26, chr27, chr28, chr29, chr30, chr31, chr32, chr33, chr34, chr35, chr36, chr37, chr38, chr39, chr40, chr41, chr42, chr43, chr44, chr45, chr46, chr47, chr48, chr49, chr50, chr51, chr52, chr53, chr54, chr55, chr56, chr57, chr58, chr59, chr60, chr61, chr62, chr63, chr64, chr65, chr66, chr67, chr68, chr69, chr70, chr71, chr72, chr73, chr74, chr75, chr76, chr77, chr78, chr79, chr80, chr81, chr82, chr83, chr84, chr85, chr86, chr87, chr88, chr89, chr90, chr91, chr92, chr93, chr94, chr95, chr96, chr97, chr98, chr99, chr100, chr101, chr102, chr103, chr104, chr105, chr106, chr107, chr108, chr109, chr110, chr111, chr112, chr113, chr114, chr115, chr116, chr117, chr118, chr119, chr120, chr121, chr122, chr123, chr124, chr125, chr126, chr127, chr128, chr129, chr130, chr131, chr132, chr133, chr134, chr135, chr136, chr137, chr138, chr139, chr140, chr141, chr142, chr143, chr144, chr145, chr146, chr147, chr148, chr149, chr150, chr151, chr152, chr153, chr154, chr155, chr156, chr157, chr158, chr159, chr160, chr161, chr162, chr163, chr164, chr165, chr166, chr167, chr168, chr169, chr170, chr171, chr172, chr173, chr174, chr175, chr176, chr177, chr178, chr179, chr180, chr181, chr182, chr183, chr184, chr185, chr186, chr187, chr188, chr189, chr190, chr191, chr192, chr193, chr194, chr195, chr196, chr197, chr198, chr199, chr200, chr201, chr202, chr203, chr204, chr205, chr206, chr207, chr208, chr209, chr210, chr211, chr212, chr213, chr214, chr215, chr216, chr217, chr218, chr219, chr220, chr221, chr222, chr223, chr224, chr225, chr226, chr227, chr228, chr229, chr230, chr231, chr232, chr233, chr234, chr235, chr236, chr237, chr238, chr239, chr240, chr241, chr242, chr243, chr244, chr245, chr246, chr247, chr248, chr249, chr250, chr251, chr252, chr253, chr254, chr255};
const char *chars[] PROGMEM = {chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10, chr11, chr12, chr13, chr14, chr15, chr16, chr17, chr18, chr19, chr20, chr21, chr22, chr23, chr24, chr25, chr26, chr27, chr28, chr29, chr30, chr31, chr32, chr33, chr34, chr35, chr36, chr37, chr38, chr39, chr40, chr41, chr42, chr43, chr44, chr45, chr46, chr47, chr48, chr49, chr50, chr51, chr52, chr53, chr54, chr55, chr56, chr57, chr58, chr59, chr60, chr61, chr62, chr63, chr64, chr65, chr66, chr67, chr68, chr69, chr70, chr71, chr72, chr73, chr74, chr75, chr76, chr77, chr78, chr79, chr80, chr81, chr82, chr83, chr84, chr85, chr86, chr87, chr88, chr89, chr90, chr91, chr92, chr93, chr94, chr95, chr96, chr97, chr98, chr99, chr100, chr101, chr102, chr103, chr104, chr105, chr106, chr107, chr108, chr109, chr110, chr111, chr112, chr113, chr114, chr115, chr116, chr117, chr118, chr119, chr120, chr121, chr122, chr123, chr124, chr125, chr126, chr127, chr128, chr129, chr130, chr131, chr132, chr133, chr134, chr135, chr136, chr137, chr138, chr139, chr140, chr141, chr142, chr143, chr144, chr145, chr146, chr147, chr148, chr149, chr150, chr151, chr152, chr153, chr154, chr155, chr156, chr157, chr158, chr159, chr160, chr161, chr162, chr163, chr164, chr165, chr166, chr167, chr168, chr169, chr170, chr171, chr172, chr173, chr174, chr175, chr176, chr177, chr178, chr179, chr180, chr181, chr182, chr183, chr184, chr185, chr186, chr187, chr188, chr189, chr190, chr191, chr192, chr193, chr194, chr195, chr196, chr197, chr198, chr199, chr200, chr201, chr202, chr203, chr204, chr205, chr206, chr207, chr208, chr209, chr210, chr211, chr212, chr213, chr214, chr215, chr216, chr217, chr218, chr219, chr220, chr221, chr222, chr223, chr224, chr225, chr226, chr227, chr228, chr229, chr230, chr231, chr232, chr233, chr234, chr235, chr236, chr237, chr238, chr239, chr240, chr241, chr242, chr243, chr244, chr245, chr246, chr247, chr248, chr249, chr250, chr251, chr252, chr253, chr254, chr255};
 
 
/**
* put the above chars in the memory of the MAX7456
* TODO: read out character, compare and write only if different
*/
void learn_all_chars_pgm(void) {
char *pointer;
for (uint16_t c = 0; c < 256; c++) {
LED3_ON
// select character to write (CMAH)
spi_send_byte(0x09, c);
char *pointer;
for (uint16_t c = 0; c < 256; c++) {
LED3_ON
// select character to write (CMAH)
spi_send_byte(0x09, c);
 
_delay_ms(1);
_delay_ms(1);
 
pointer = (char*) pgm_read_word(&chars[c]);
for (uint8_t i = 0; i < 54; i++) {
// select 4pixel byte of char (CMAL)
spi_send_byte(0x0A, i);
pointer = (char*)pgm_read_word(&chars[c]);
 
_delay_ms(1);
for (uint8_t i = 0; i < 54; i++) {
// select 4pixel byte of char (CMAL)
spi_send_byte(0x0A, i);
 
// write 4pixel byte of char (CMDI)
spi_send_byte(0x0B, pgm_read_byte(pointer++));
_delay_ms(1);
}
_delay_ms(1);
 
// write to the NVM array from the shadow RAM (CMM)
spi_send_byte(0x08, 0b10100000);
// write 4pixel byte of char (CMDI)
spi_send_byte(0x0B, pgm_read_byte(pointer++));
_delay_ms(1);
}
 
LED3_OFF
// according to maxim writing to nvram takes about 12ms, lets wait longer
_delay_ms(50);
}
// write to the NVM array from the shadow RAM (CMM)
spi_send_byte(0x08, 0b10100000);
 
LED3_OFF
// according to maxim writing to nvram takes about 12ms, lets wait longer
_delay_ms(50);
}
}
 
 
/C-OSD/trunk/config.c
23,7 → 23,6
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//#include <avr/delay.h>
#include "max7456_software_spi.h"
#include "config.h"
#include "main.h"
55,19 → 54,19
* read data saved in eeprom, print out message if <verbose> is set
*/
void get_eeprom(uint8_t verbose) {
if (eeprom_read_byte(&ee_checkbyte1) == CHECKBYTE1 && eeprom_read_byte(&ee_checkbyte2) == CHECKBYTE2) {
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[0]); // Loading data
#endif
COSD_FLAGS_MODES = eeprom_read_byte(&ee_COSD_FLAGS_MODES);
COSD_FLAGS_CONFIG = eeprom_read_byte(&ee_COSD_FLAGS_CONFIG);
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE);
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 2, 0);
} else {
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[1]); // Loading data
#endif
}
if (eeprom_read_byte(&ee_checkbyte1) == CHECKBYTE1 && eeprom_read_byte(&ee_checkbyte2) == CHECKBYTE2) {
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[0]); // Loading data
#endif
COSD_FLAGS_MODES = eeprom_read_byte(&ee_COSD_FLAGS_MODES);
COSD_FLAGS_CONFIG = eeprom_read_byte(&ee_COSD_FLAGS_CONFIG);
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE);
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 2, 0);
} else {
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[1]); // Loading data
#endif
}
}
 
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
76,29 → 75,28
* save data to eeprom
*/
void save_eeprom() {
eeprom_write_byte(&ee_checkbyte1, CHECKBYTE1);
eeprom_write_byte(&ee_checkbyte2, CHECKBYTE2);
eeprom_write_byte(&ee_COSD_FLAGS_MODES, COSD_FLAGS_MODES);
eeprom_write_byte(&ee_COSD_FLAGS_CONFIG, COSD_FLAGS_CONFIG);
eeprom_write_byte(&ee_COSD_DISPLAYMODE, COSD_DISPLAYMODE);
eeprom_write_byte(&ee_checkbyte1, CHECKBYTE1);
eeprom_write_byte(&ee_checkbyte2, CHECKBYTE2);
eeprom_write_byte(&ee_COSD_FLAGS_MODES, COSD_FLAGS_MODES);
eeprom_write_byte(&ee_COSD_FLAGS_CONFIG, COSD_FLAGS_CONFIG);
eeprom_write_byte(&ee_COSD_DISPLAYMODE, COSD_DISPLAYMODE);
}
 
 
/**
* auto config some stuff on startup, currently only battery cells
*/
void init_cosd(uint8_t UBat) {
clear();
write_ascii_string_pgm(2, 1, PSTR("C-OSD Initialisation")); // C-OSD Initialisation
write_ascii_string_pgm(2, 1, PSTR("C-OSD Initialisation")); // C-OSD Initialisation
#if FCONLY
write_ascii_string_pgm(2, 2, PSTR("FC only Mode")); // FC only mode
write_ascii_string_pgm(2, 2, PSTR("FC only Mode")); // FC only mode
#else
write_ascii_string_pgm(2, 2, PSTR("NaviCtrl Mode")); // NaviCtrl Mode
write_ascii_string_pgm(2, 2, PSTR("NaviCtrl Mode")); // NaviCtrl Mode
#endif
write_ascii_string_pgm(2, 3, PSTR(BUILDDATE));
uint8_t cellnum = 0;
if (CELL_NUM == -1) {
write_ascii_string_pgm(2, 4, PSTR("Guessing Number of Cells")); // Guessing Number of Cells
write_ascii_string_pgm(2, 4, PSTR("Guessing Number of Cells")); // Guessing Number of Cells
do {
cellnum++;
} while (UBat > ((cellnum * CELL_VOLT_MAX) + 23));
107,66 → 105,66
}
min_voltage = cellnum * CELL_VOLT_MIN;
max_voltage = cellnum * CELL_VOLT_MAX;
write_ascii_string_pgm(2, 5, PSTR("Number of Cells:")); // Number of Cells
write_ascii_string_pgm(2, 5, PSTR("Number of Cells:")); // Number of Cells
write_ndigit_number_u(21, 5, cellnum, 1, 0);
write_ascii_string_pgm(2, 6, PSTR("Warn Voltage :")); // Warn Voltage
write_ascii_string_pgm(2, 6, PSTR("Warn Voltage :")); // Warn Voltage
write_ndigit_number_s_10th(20, 6, min_voltage, 3, 0);
write_ascii_string_pgm(2, 7, PSTR("Max Voltage :")); // Max Voltage
write_ascii_string_pgm(2, 7, PSTR("Max Voltage :")); // Max Voltage
write_ndigit_number_s_10th(20, 7, max_voltage, 3, 0);
 
get_eeprom(1);
get_eeprom(1);
 
//write_ascii_string_pgm(23, 2, vm[COSD_FLAGS & COSD_FLAG_NTSC]);
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(23, 2, VM_NTSC);
} else {
write_ascii_string_pgm(23, 2, VM_PAL);
}
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(23, 2, VM_NTSC);
} else {
write_ascii_string_pgm(23, 2, VM_PAL);
}
 
// request version from board
rxd_buffer_locked = 0;
usart1_EnableTXD();
#if FCONLY
//usart1_request_mk_data(0, 'v', 0);
write_ascii_string_pgm(2, 11, PSTR("FC VERSION: ........"));
usart1_puts_pgm(PSTR(REQUEST_FC_VERSION));
#else
//usart1_request_mk_data(1, 'v', 0);
usart1_puts_pgm(PSTR(REQUEST_NC_VERSION));
write_ascii_string_pgm(2, 11, PSTR("NC VERSION: ........"));
#endif
usart1_DisableTXD();
// wait for response
while (rxd_buffer_locked == 0) {
asm("nop");
}
Decode64();
str_VersionInfo VersionInfo;
VersionInfo = *((str_VersionInfo*) pRxData);
write_ndigit_number_u(14, 11, VersionInfo.SWMajor, 3, 1);
write_ndigit_number_u(18, 11, VersionInfo.SWMinor, 3, 1);
write_ascii_char(22 + 11*30, 'a' + VersionInfo.SWPatch);
// end version request
// request version from board
rxd_buffer_locked = 0;
usart1_EnableTXD();
#if FCONLY
//usart1_request_mk_data(0, 'v', 0);
write_ascii_string_pgm(2, 11, PSTR("FC VERSION: ........"));
usart1_puts_pgm(PSTR(REQUEST_FC_VERSION));
#else
//usart1_request_mk_data(1, 'v', 0);
usart1_puts_pgm(PSTR(REQUEST_NC_VERSION));
write_ascii_string_pgm(2, 11, PSTR("NC VERSION: ........"));
#endif
usart1_DisableTXD();
// wait for response
while (rxd_buffer_locked == 0) {
asm("nop");
}
Decode64();
str_VersionInfo VersionInfo;
VersionInfo = *((str_VersionInfo*)pRxData);
 
write_ndigit_number_u(14, 11, VersionInfo.SWMajor, 3, 1);
write_ndigit_number_u(18, 11, VersionInfo.SWMinor, 3, 1);
write_ascii_char(22 + 11 * 30, 'a' + VersionInfo.SWPatch);
// end version request
 
#if FCONLY
COSD_DISPLAYMODE %= (sizeof(fcdisplaymodes) / sizeof(displaymode_t));
mode = fcdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun);
// re-request data ever 100ms from FC;
//usart1_request_mk_data(0, 'd', 100);
#else
COSD_DISPLAYMODE %= (sizeof(ncdisplaymodes) / sizeof(displaymode_t));
mode = ncdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun);
// re-request OSD Data from NC every 100ms
//usart1_request_mk_data(1, 'o', 100);
#endif
 
_delay_ms(3000);
#if FCONLY
COSD_DISPLAYMODE %= (sizeof (fcdisplaymodes) / sizeof (displaymode_t));
mode = fcdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun);
// re-request data ever 100ms from FC;
//usart1_request_mk_data(0, 'd', 100);
#else
COSD_DISPLAYMODE %= (sizeof (ncdisplaymodes) / sizeof (displaymode_t));
mode = ncdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun);
// re-request OSD Data from NC every 100ms
//usart1_request_mk_data(1, 'o', 100);
#endif
 
_delay_ms(3000);
clear();
// update flags to paint display again because of clear
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
179,91 → 177,90
/**
* helper function for flag display
*/
void onoff(uint8_t col, uint8_t line, uint8_t onoff) {
if (onoff) {
write_ascii_string_pgm(col, line, PSTR("ON "));
} else {
write_ascii_string_pgm(col, line, PSTR("OFF"));
}
void onoff(uint8_t col, uint8_t line, uint8_t onoff) {
if (onoff) {
write_ascii_string_pgm(col, line, PSTR("ON "));
} else {
write_ascii_string_pgm(col, line, PSTR("OFF"));
}
}
 
 
/**
* helper function for menu updating
*/
void config_menu_drawings(uint8_t chosen) {
static uint8_t old_y = 0;
uint8_t x = MENU_LEFT, y = MENU_TOP, line = MENU_TOP;
static uint8_t old_y = 0;
uint8_t x = MENU_LEFT, y = MENU_TOP, line = MENU_TOP;
 
if (chosen > 5 && chosen < 12) { // right
x = MENU_MIDDLE;
y = chosen - 6 + MENU_TOP;
} else if (chosen < 7) {
y = chosen + MENU_TOP;
} else {
y = chosen - 6 + MENU_TOP;
}
if (chosen > 5 && chosen < 12) { // right
x = MENU_MIDDLE;
y = chosen - 6 + MENU_TOP;
} else if (chosen < 7) {
y = chosen + MENU_TOP;
} else {
y = chosen - 6 + MENU_TOP;
}
 
// clear prevoius _cursor_ and draw current
for (uint8_t myx = MENU_LEFT; myx < 29; myx++) {
write_char_att_xy(myx, old_y, 0);
if (myx > x - 1 && myx < x + 14) {
write_char_att_xy(myx, y, BLACKBG | INVERT);
}
};
for (uint8_t myx = MENU_LEFT; myx < 29; myx++) {
write_char_att_xy(myx, old_y, 0);
if (myx > x - 1 && myx < x + 14) {
write_char_att_xy(myx, y, BLACKBG | INVERT);
}
};
 
write_ascii_string_pgm(MENU_LEFT, line, PSTR("Video"));
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(MENU_LEFT + 10, line, VM_NTSC);
} else {
write_ascii_string_pgm(MENU_LEFT + 10, line, VM_PAL);
}
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Full HUD"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_HUD);
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Horizon"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON);
write_ascii_string_pgm(MENU_LEFT, line, PSTR("Video"));
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(MENU_LEFT + 10, line, VM_NTSC);
} else {
write_ascii_string_pgm(MENU_LEFT + 10, line, VM_PAL);
}
 
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Aggr.Hor."));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON);
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Stats"));
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Full HUD"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_HUD);
 
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Horizon"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON);
 
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Aggr.Hor."));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON);
 
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("Stats"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_STATS);
 
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("A by FC"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT);
write_ascii_string_pgm(MENU_LEFT, ++line, PSTR("A by FC"));
onoff(MENU_LEFT + 10, line, COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT);
 
// 2nd col
line = 2;
// 2nd col
line = 2;
 
write_ascii_string_pgm(MENU_MIDDLE, line, PSTR("V C-Strom"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT);
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Height by"));
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
write_ascii_string_pgm(MENU_MIDDLE + 10, line, PSTR(" GPS"));
} else {
write_ascii_string_pgm(MENU_MIDDLE + 10, line, PSTR("BARO"));
}
write_ascii_string_pgm(MENU_MIDDLE, line, PSTR("V C-Strom"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT);
 
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Feet/mph"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_CONFIG & COSD_FLAG_FEET);
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Height by"));
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
write_ascii_string_pgm(MENU_MIDDLE + 10, line, PSTR(" GPS"));
} else {
write_ascii_string_pgm(MENU_MIDDLE + 10, line, PSTR("BARO"));
}
 
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Big Vario"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO);
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Feet/mph"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_CONFIG & COSD_FLAG_FEET);
 
write_ascii_string_pgm(MENU_MIDDLE, ++line, PSTR("Big Vario"));
onoff(MENU_MIDDLE + 10, line, COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO);
 
// bottom
write_ascii_string_pgm(MENU_LEFT, 9, PSTR("Reset uptime"));
 
write_ascii_string_pgm(MENU_LEFT, 10, PSTR("Display Mode"));
write_ascii_string_pgm(18, 10, (const char *) (pgm_read_word(&(mode->desc))));
write_ascii_string_pgm(MENU_LEFT, 11, PSTR("Save config"));
write_ascii_string_pgm(MENU_LEFT, 12, PSTR("EXIT"));
// bottom
write_ascii_string_pgm(MENU_LEFT, 9, PSTR("Reset uptime"));
 
old_y = y;
write_ascii_string_pgm(MENU_LEFT, 10, PSTR("Display Mode"));
write_ascii_string_pgm(18, 10, (const char *)(pgm_read_word(&(mode->desc))));
 
write_ascii_string_pgm(MENU_LEFT, 11, PSTR("Save config"));
write_ascii_string_pgm(MENU_LEFT, 12, PSTR("EXIT"));
 
old_y = y;
}
 
/**
286,7 → 283,7
clear();
 
uint8_t chosen = 0;
uint8_t inmenu = 1;
uint8_t inmenu = 1;
write_ascii_string_pgm(6, 1, PSTR("C-OSD Config Menu"));
 
// wait a bit before doing stuff so user has chance to release button
296,26 → 293,26
 
while (inmenu) {
if (s2_pressed()) {
chosen = (chosen + 1) % 17;
if (chosen == 10) chosen = 13; // SKIP unused menu space for now
config_menu_drawings(chosen);
_delay_ms(500);
chosen = (chosen + 1) % 17;
if (chosen == 10) chosen = 13; // SKIP unused menu space for now
config_menu_drawings(chosen);
_delay_ms(500);
} else if (s1_pressed()) {
switch (chosen) {
case 0: // NTSC or PAL
COSD_FLAGS_CONFIG ^= COSD_FLAG_NTSC;
// Setup Video Mode
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
// NTSC + enable display immediately (VM0)
spi_send_byte(0x00, 0b00001000);
// Setup Video Mode
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
// NTSC + enable display immediately (VM0)
spi_send_byte(0x00, 0b00001000);
 
bottom_line = 12;
} else {
// PAL + enable display immediately (VM0)
spi_send_byte(0x00, 0b01001000);
bottom_line = 12;
} else {
// PAL + enable display immediately (VM0)
spi_send_byte(0x00, 0b01001000);
 
bottom_line = 14;
}
bottom_line = 14;
}
break;
case 1: // full HUD
COSD_FLAGS_MODES ^= COSD_FLAG_HUD;
332,7 → 329,7
case 5: // current by fc
COSD_FLAGS_MODES ^= COSD_FLAG_FCCURRENT;
break;
case 6: // 2nd voltage by c-strom
case 6: // 2nd voltage by c-strom
COSD_FLAGS_MODES ^= COSD_FLAG_STROMVOLT;
break;
case 7: // GPS or BARO height
341,36 → 338,36
case 8: // Feet and mph?
COSD_FLAGS_CONFIG ^= COSD_FLAG_FEET;
break;
case 9: // big vario
case 9: // big vario
COSD_FLAGS_MODES ^= COSD_FLAG_BIGVARIO;
break;
case 13: // reset uptime
uptime = 0;
config_menu_doclick(chosen);
config_menu_doclick(chosen);
break;
case 14: // change mode
#if FCONLY
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof(fcdisplaymodes) / sizeof(displaymode_t));
mode = fcdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun);
#else
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof(ncdisplaymodes) / sizeof(displaymode_t));
mode = ncdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun);
#endif
#if FCONLY
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof (fcdisplaymodes) / sizeof (displaymode_t));
mode = fcdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_fcmode = (int(*)(void)) pgm_read_word(&mode->dfun);
#else
COSD_DISPLAYMODE = (COSD_DISPLAYMODE + 1) % (sizeof (ncdisplaymodes) / sizeof (displaymode_t));
mode = ncdisplaymodes;
mode += COSD_DISPLAYMODE;
osd_ncmode = (int(*)(void)) pgm_read_word(&mode->dfun);
#endif
break;
case 15: // save
save_eeprom();
config_menu_doclick(chosen);
config_menu_doclick(chosen);
break;
case 16: // exit
inmenu = 0;
config_menu_doclick(chosen);
inmenu = 0;
config_menu_doclick(chosen);
break;
}
config_menu_drawings(chosen);
config_menu_drawings(chosen);
_delay_ms(250);
}
}
/C-OSD/trunk/default/dist.bat
19,7 → 19,7
:: * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
:: ****************************************************************************/
 
set DATE=20100412-2125
set DATE=20100501-1130
:: date /T
 
:: clean up first
/C-OSD/trunk/main.c
108,44 → 108,45
stats_item_3, stats_item_4, stats_item_5, stats_item_6, stats_item_7};
 
//char* directions[8] = {"NE", "E ", "SE", "S ", "SW", "W ", "NW", "N "};
//char arrowdir[8] = {218, 217, 224, 223, 222, 221, 220, 219};
//char arrowdir[8] = {218, 217, 224, 223, 222, 221, 220, 219};
const char str_NE[] PROGMEM = "NE";
const char str_E[] PROGMEM = "E ";
const char str_E[] PROGMEM = "E ";
const char str_SE[] PROGMEM = "SE";
const char str_S[] PROGMEM = "S ";
const char str_S[] PROGMEM = "S ";
const char str_SW[] PROGMEM = "SW";
const char str_W[] PROGMEM = "W ";
const char str_W[] PROGMEM = "W ";
const char str_NW[] PROGMEM = "NW";
const char str_N[] PROGMEM = "N ";
const char str_N[] PROGMEM = "N ";
const char *directions[8] PROGMEM = {
str_NE,
str_E,
str_SE,
str_S,
str_SW,
str_W,
str_NW,
str_N};
str_NE,
str_E,
str_SE,
str_S,
str_SW,
str_W,
str_NW,
str_N
};
 
/* ##########################################################################
* Different display mode function pointers
* ##########################################################################*/
const char str_1[] PROGMEM = "default";
const char str_2[] PROGMEM = "minimal";
const char str_3[] PROGMEM = " jopl";
const char str_1[] PROGMEM = "default";
const char str_2[] PROGMEM = "minimal";
const char str_3[] PROGMEM = " jopl";
 
const displaymode_t ncdisplaymodes[] PROGMEM = {
{ osd_ncmode_default, (char *)str_1 },
{ osd_ncmode_minimal, (char *)str_2 }
{ osd_ncmode_default, (char *)str_1},
{ osd_ncmode_minimal, (char *)str_2}
};
 
const displaymode_t fcdisplaymodes[] PROGMEM = {
{ osd_fcmode_default, (char *)str_1 },
{ osd_fcmode_jopl, (char *)str_3 }
{ osd_fcmode_default, (char *)str_1},
{ osd_fcmode_jopl, (char *)str_3}
};
 
int (*osd_ncmode)(void) = (int(*)(void)) &osd_ncmode_default;
int (*osd_fcmode)(void) = (int(*)(void)) &osd_fcmode_default;
int (*osd_ncmode)(void) = (int(*)(void)) & osd_ncmode_default;
int (*osd_fcmode)(void) = (int(*)(void)) & osd_fcmode_default;
#endif
 
/* ##########################################################################
174,22 → 175,22
if (!timer--) {
uptime++;
 
#if FCONLY
if (debugData.Analog[12]>10) {
flytime_fc++;
}
#endif
#if FCONLY
if (debugData.Analog[12] > 10) {
flytime_fc++;
}
#endif
 
timer = 999;
seconds_since_last_data++;
}
// in case there is still some spi data to send do it now
// delay to give the slave some time to compute values
// delay to give the slave some time to compute values
if (spi_ready && icnt) {
if (!delay_spi--) {
delay_spi = 8;
spi_send_next();
}
if (!delay_spi--) {
delay_spi = 8;
spi_send_next();
}
}
}
#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))#endif // ends !(ALLCHARSDEBUG|(WRITECHARS != -1))
198,29 → 199,29
* MAIN
* ##########################################################################*/
int main(void) {
// set up FLAGS
COSD_FLAGS_MODES = 0, COSD_FLAGS_CONFIG = 0, COSD_FLAGS_RUNTIME = 0;
#if NTSC
COSD_FLAGS_CONFIG |= COSD_FLAG_NTSC;
#endif
#if HUD
COSD_FLAGS_MODES |= COSD_FLAG_HUD;
#endif
#if ARTHORIZON
COSD_FLAGS_MODES |= COSD_FLAG_ARTHORIZON;
#endif
#if BIGVARIO
COSD_FLAGS_MODES |= COSD_FLAG_BIGARIO;
#endif
#if STATS
COSD_FLAGS_MODES |= COSD_FLAG_STATS;
#endif
#if WARNINGS
COSD_FLAGS_MODES |= COSD_FLAG_WARNINGS;
#endif
#if FCONLY
COSD_FLAGS_CONFIG |= COSD_FLAG_FCMODE;
#endif
// set up FLAGS
COSD_FLAGS_MODES = 0, COSD_FLAGS_CONFIG = 0, COSD_FLAGS_RUNTIME = 0;
#if NTSC
COSD_FLAGS_CONFIG |= COSD_FLAG_NTSC;
#endif
#if HUD
COSD_FLAGS_MODES |= COSD_FLAG_HUD;
#endif
#if ARTHORIZON
COSD_FLAGS_MODES |= COSD_FLAG_ARTHORIZON;
#endif
#if BIGVARIO
COSD_FLAGS_MODES |= COSD_FLAG_BIGARIO;
#endif
#if STATS
COSD_FLAGS_MODES |= COSD_FLAG_STATS;
#endif
#if WARNINGS
COSD_FLAGS_MODES |= COSD_FLAG_WARNINGS;
#endif
#if FCONLY
COSD_FLAGS_CONFIG |= COSD_FLAG_FCMODE;
#endif
 
 
// set up Atmega162 Ports
258,26 → 259,26
 
//Pushing NEW chars to the MAX7456
#if (WRITECHARS != -1)
// DISABLE display (VM0)
spi_send_byte(0x00, 0b00000000);
learn_all_chars_pgm();
// DISABLE display (VM0)
spi_send_byte(0x00, 0b00000000);
learn_all_chars_pgm();
#else
// read out config for NTSC/PAL distinguishing
get_eeprom(0);
// read out config for NTSC/PAL distinguishing
get_eeprom(0);
#endif
 
// Setup Video Mode
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
// NTSC + enable display immediately (VM0)
spi_send_byte(0x00, 0b00001000);
// Setup Video Mode
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
// NTSC + enable display immediately (VM0)
spi_send_byte(0x00, 0b00001000);
 
bottom_line = 12;
} else {
// PAL + enable display immediately (VM0)
spi_send_byte(0x00, 0b01001000);
bottom_line = 12;
} else {
// PAL + enable display immediately (VM0)
spi_send_byte(0x00, 0b01001000);
 
bottom_line = 14;
}
bottom_line = 14;
}
 
/*// clear all display-mem (DMM)
spi_send_byte(0x04, 0b00000100);
299,22 → 300,22
usart1_DisableTXD();
 
// set up timer
// CTC, Prescaler /64
TCCR0 = (1 << WGM01) | (0 << WGM00) | (0 << CS02) | (1 << CS01) | (1 << CS00);
// CTC, Prescaler /64
TCCR0 = (1 << WGM01) | (0 << WGM00) | (0 << CS02) | (1 << CS01) | (1 << CS00);
 
TCNT0 = 0;
OCR0 = 250;
TCNT0 = 0;
OCR0 = 250;
 
// enable timer output compare interrupt
TIMSK &= ~(1 << TOIE0);
TIMSK |= (1 << OCIE0);
// enable timer output compare interrupt
TIMSK &= ~(1 << TOIE0);
TIMSK |= (1 << OCIE0);
 
// SPI setup
// SPI setup
DDRD |= (1 << PD2); // PD2 output (INT0)
SpiMasterInit();
 
// PPM detection setup
ppm_init();
// PPM detection setup
ppm_init();
 
// enable interrupts
sei();
328,17 → 329,17
LED3_ON
 
#if ALLCHARSDEBUG | (WRITECHARS != -1)
clear();
write_all_chars();
LED1_ON
LED2_ON
LED3_ON
LED4_ON
clear();
write_all_chars();
LED1_ON
LED2_ON
LED3_ON
LED4_ON
#else
 
// clear serial screen
//usart1_puts("\x1B[2J\x1B[H");
//usart1_puts("hello world!123\r\n");
// clear serial screen
//usart1_puts("\x1B[2J\x1B[H");
//usart1_puts("hello world!123\r\n");
 
while (1) {
// in case SPI is ready and there is nothing to send right now
345,59 → 346,59
if (!icnt && spi_ready) {
// correct transfer ends with d (done)
if (SPI_buffer.buffer.chk == 'd') {
ampere = SPI_buffer.data.ampere;
ampere_wasted = SPI_buffer.data.mah;
s_volt = SPI_buffer.data.volt;
ampere = SPI_buffer.data.ampere;
ampere_wasted = SPI_buffer.data.mah;
s_volt = SPI_buffer.data.volt;
 
// if this is the first receival we should print the small A
if (!(COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC)) {
clear();
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
// update this flag
COSD_FLAGS_RUNTIME |= COSD_FLAG_STROMREC;
}
// if this is the first receival we should print the small A
if (!(COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC)) {
clear();
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
// update this flag
COSD_FLAGS_RUNTIME |= COSD_FLAG_STROMREC;
}
} else {
// update flags
COSD_FLAGS_RUNTIME &= ~COSD_FLAG_STROMREC;
}
StartTransfer(9);
StartTransfer(9);
}
if (rxd_buffer_locked) {
#if FCONLY
if (rxd_buffer[2] == 'D') { // FC Data
Decode64();
debugData = *((DebugOut_t*) pRxData);
debugData = *((DebugOut_t*)pRxData);
 
// init on first data retrival, distinguished by last battery :)
if (last_UBat == 255) {
if (debugData.Analog[9] > 40) {
// fix for min_UBat
min_UBat = debugData.Analog[9];
last_UBat = debugData.Analog[9];
init_cosd(last_UBat);
}
if (debugData.Analog[9] > 40) {
// fix for min_UBat
min_UBat = debugData.Analog[9];
last_UBat = debugData.Analog[9];
init_cosd(last_UBat);
}
} else {
osd_fcmode();
}
seconds_since_last_data = 0;
osd_fcmode();
}
seconds_since_last_data = 0;
}
#else
if (rxd_buffer[2] == 'O') { // NC OSD Data
Decode64();
naviData = *((NaviData_t*) pRxData);
naviData = *((NaviData_t*)pRxData);
 
// init on first data retrival, distinguished by last battery :)
if (last_UBat == 255) {
if (naviData.UBat > 40) {
// fix for min_UBat
min_UBat = naviData.UBat;
last_UBat = naviData.UBat;
init_cosd(last_UBat);
}
if (naviData.UBat > 40) {
// fix for min_UBat
min_UBat = naviData.UBat;
last_UBat = naviData.UBat;
init_cosd(last_UBat);
}
} else {
osd_ncmode();
}
//seconds_since_last_data = 0;
osd_ncmode();
}
//seconds_since_last_data = 0;
}
#endif
rxd_buffer_locked = 0;
407,23 → 408,23
config_menu();
}
if (seconds_since_last_data > 0) {
usart1_EnableTXD();
//usart1_puts_pgm(PSTR("zu alt\r\n"));
usart1_EnableTXD();
//usart1_puts_pgm(PSTR("zu alt\r\n"));
#if FCONLY
// request data ever 100ms from FC;
//usart1_request_mk_data(0, 'd', 100);
usart1_puts_pgm(PSTR(REQUEST_DBG_DATA));
usart1_puts_pgm(PSTR(REQUEST_DBG_DATA));
#else
// request OSD Data from NC every 100ms
//usart1_request_mk_data(1, 'o', 100);
usart1_puts_pgm(PSTR(REQUEST_OSD_DATA));
usart1_puts_pgm(PSTR(REQUEST_OSD_DATA));
 
// and disable debug...
//usart1_request_mk_data(0, 'd', 0);
#endif
// reset last time counter
seconds_since_last_data = 0;
usart1_DisableTXD();
// reset last time counter
seconds_since_last_data = 0;
usart1_DisableTXD();
}
}
#endif
/C-OSD/trunk/main.h
120,8 → 120,8
* struct for displaymodes
* ##########################################################################*/
typedef struct {
int (*dfun)(void); // function pointer
char *desc; // description text
int (*dfun)(void); // function pointer
char *desc; // description text
} displaymode_t;
 
const displaymode_t ncdisplaymodes[2];
/C-OSD/trunk/max7456_software_spi.c
19,7 → 19,6
****************************************************************************/
 
#include <avr/io.h>
 
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <string.h>
66,7 → 65,6
MAX_CS_HIGH
}
 
 
/**
* write a <character> to <address> of MAX7456 display memory
*/
76,7 → 74,6
spi_send_byte(0x07, character); // DMDI
}
 
 
/**
* clear display memory
* (also sets 8bit mode)
86,7 → 83,7
for (unsigned int a = 0; a < 480; a++) {
write_char(memory_address++, 0);
}*/
// clear all display-mem (DMM)
// clear all display-mem (DMM)
spi_send_byte(0x04, 0b01000100);
 
// clearing takes 12uS according to maxim so lets wait longer
95,6 → 92,7
 
 
#if (ALLCHARSDEBUG|(WRITECHARS != -1))
 
/**
* for testing write all chars to screen
*/
101,7 → 99,7
void write_all_chars() {
uint16_t x = 3, y = 2, t = 0;
while (t < 256) {
write_char(x++ + y*30, t++);
write_char(x++ + y * 30, t++);
if (x > 25) {
y++;
x = 3;
178,13 → 176,13
else if (c == ';') c = 67; // remap
else if (c == ':') c = 68; // remap
else if (c == ',') c = 69; // remap
// else if (c == '?') c = 66; // remap
// else if (c == '\'') c = 70; // remap
// else if (c == '?') c = 66; // remap
// else if (c == '\'') c = 70; // remap
else if (c == '/') c = 71; // remap
// else if (c == '"') c = 72; // remap
// else if (c == '<') c = 74; // remap
// else if (c == '>') c = 75; // remap
// else if (c == '@') c = 76; // remap
// else if (c == '"') c = 72; // remap
// else if (c == '<') c = 74; // remap
// else if (c == '>') c = 75; // remap
// else if (c == '@') c = 76; // remap
write_char(address, c);
}
 
202,8 → 200,8
* write an ascii <string> from progmen at <x>/<y> to MAX7456 display memory
*/
void write_ascii_string_pgm(uint8_t x, uint8_t y, const char *string) {
while (pgm_read_byte(string) != 0x00)
write_ascii_char(((x++)+(y * 30)), pgm_read_byte(string++));
while (pgm_read_byte(string) != 0x00)
write_ascii_char(((x++)+(y * 30)), pgm_read_byte(string++));
}
 
/**
210,8 → 208,8
* write an <string> from progmen at <x>/<y> downwards to MAX7456 display memory
*/
void write_string_pgm_down(uint8_t x, uint8_t y, const char *string, uint8_t length) {
while (length--)
write_char((x+(y++ * 30)), pgm_read_byte(string++));
while (length--)
write_char((x + (y++ * 30)), pgm_read_byte(string++));
}
 
/**
220,12 → 218,12
* <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7
*/
void write_ndigit_number_u(uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) {
itoa(number, conv_array, 10 );
for (uint8_t i = 0; i < length - strlen(conv_array); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_ascii_char((x++)+(y * 30), 0);
}
write_ascii_string(x, y, conv_array);
itoa(number, conv_array, 10);
for (uint8_t i = 0; i < length - strlen(conv_array); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_ascii_char((x++)+(y * 30), 0);
}
write_ascii_string(x, y, conv_array);
}
 
/**
234,12 → 232,12
* <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7
*/
void write_ndigit_number_s(uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad) {
itoa(number, conv_array, 10 );
for (uint8_t i = 0; i < length - strlen(conv_array); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_ascii_char((x++)+(y * 30), 0);
}
write_ascii_string(x, y, conv_array);
itoa(number, conv_array, 10);
for (uint8_t i = 0; i < length - strlen(conv_array); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_ascii_char((x++)+(y * 30), 0);
}
write_ascii_string(x, y, conv_array);
}
 
/**
248,25 → 246,25
* <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7
*/
void write_ndigit_number_u_10th(uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) {
itoa(number, conv_array, 10 );
uint8_t len = strlen(conv_array);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = conv_array[len - 1];
conv_array[len - 1] = 0;
if (len == 1) {
write_char((x-1)+(y * 30), 10); // zero
} else if (len == 2 && conv_array[0] == '-') {
write_char((x-1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, conv_array);
}
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
itoa(number, conv_array, 10);
uint8_t len = strlen(conv_array);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = conv_array[len - 1];
conv_array[len - 1] = 0;
if (len == 1) {
write_char((x - 1)+(y * 30), 10); // zero
} else if (len == 2 && conv_array[0] == '-') {
write_char((x - 1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, conv_array);
}
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
}
 
/**
275,25 → 273,25
* <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7
*/
void write_ndigit_number_s_10th(uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad) {
itoa(number, conv_array, 10 );
uint8_t len = strlen(conv_array);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = conv_array[len - 1];
conv_array[len - 1] = 0;
if (len == 1) {
write_char((x-1)+(y * 30), 10); // zero
} else if (len == 2 && conv_array[0] == '-') {
write_char((x-1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, conv_array);
}
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
itoa(number, conv_array, 10);
uint8_t len = strlen(conv_array);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = conv_array[len - 1];
conv_array[len - 1] = 0;
if (len == 1) {
write_char((x - 1)+(y * 30), 10); // zero
} else if (len == 2 && conv_array[0] == '-') {
write_char((x - 1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, conv_array);
}
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
}
 
/**
311,20 → 309,20
* wirte a <position> at <x>/<y> assuming it is a gps position for long-/latitude
*/
void write_gps_pos(uint8_t x, uint8_t y, int32_t position) {
if (position < 0) {
position ^= ~0;
position++;
write_char_xy(x++, y, 0x49); // minus
} else {
write_char_xy(x++, y, 0); // clear ('+' would be nice, maybe later)
}
write_ndigit_number_u(x, y, (uint16_t) (position / (int32_t) 10000000), 3, 1);
write_char_xy(x + 3, y, 65); // decimal point
position = position - ((position / (int32_t) 10000000) * (int32_t) 10000000);
write_ndigit_number_u(x + 4, y, (uint16_t) (position / (int32_t) 1000), 4, 1);
position = position - ((uint16_t) (position / (int32_t) 1000) * (int32_t) 1000);
write_ndigit_number_u(x + 8, y, (uint16_t) position, 3, 1);
write_char_xy(x + 11, y, 0xD0); // degree symbol
if (position < 0) {
position ^= ~0;
position++;
write_char_xy(x++, y, 0x49); // minus
} else {
write_char_xy(x++, y, 0); // clear ('+' would be nice, maybe later)
}
write_ndigit_number_u(x, y, (uint16_t)(position / (int32_t)10000000), 3, 1);
write_char_xy(x + 3, y, 65); // decimal point
position = position - ((position / (int32_t)10000000) * (int32_t)10000000);
write_ndigit_number_u(x + 4, y, (uint16_t)(position / (int32_t)1000), 4, 1);
position = position - ((uint16_t)(position / (int32_t)1000) * (int32_t)1000);
write_ndigit_number_u(x + 8, y, (uint16_t)position, 3, 1);
write_char_xy(x + 11, y, 0xD0); // degree symbol
}
 
#endif
/C-OSD/trunk/mk-data-structs.h
38,20 → 38,18
uint16_t Analog[32]; // Debugvalues
} __attribute__((packed)) DebugOut_t;
 
 
typedef struct {
unsigned char SWMajor;
unsigned char SWMinor;
unsigned char ProtoMajor;
unsigned char ProtoMinor;
unsigned char SWPatch;
unsigned char Reserved[5];
unsigned char SWMajor;
unsigned char SWMinor;
unsigned char ProtoMajor;
unsigned char ProtoMinor;
unsigned char SWPatch;
unsigned char Reserved[5];
} str_VersionInfo;
 
 
/*
* NaviCtrl OSD Structs
* portions taken and adapted from
* portions taken and adapted from
* http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.18c%2Fuart1.h
*/
typedef struct {
59,48 → 57,47
s32 Latitude; // in 1E-7 deg
s32 Altitude; // in mm
u8 Status; // validity of data
} __attribute__((packed)) GPS_Pos_t;
#define INVALID 0x00
#define NEWDATA 0x01
#define PROCESSED 0x02
} __attribute__((packed)) GPS_Pos_t;
#define INVALID 0x00
#define NEWDATA 0x01
#define PROCESSED 0x02
 
 
- u16 Distance; // distance to target in cm
- s16 Bearing; // course to target in deg
+typedef struct {
+ u16 Distance; // distance to target in cm
+ s16 Bearing; // course to target in deg
} __attribute__((packed)) GPS_PosDev_t;
typedef struct {
- u8 Version; // version of the data structure
- GPS_Pos_t CurrentPosition; // see ubx.h for details
- GPS_Pos_t TargetPosition;
- GPS_PosDev_t TargetPositionDeviation;
- GPS_Pos_t HomePosition;
- GPS_PosDev_t HomePositionDeviation;
- u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1
- u8 WaypointNumber; // number of stored waypoints
- u8 SatsInUse; // number of satellites used for position solution
- s16 Altimeter; // hight according to air pressure
- s16 Variometer; // climb(+) and sink(-) rate
- u16 FlyingTime; // in seconds
- u8 UBat; // Battery Voltage in 0.1 Volts
- u16 GroundSpeed; // speed over ground in cm/s (2D)
- s16 Heading; // current flight direction in � as angle to north
- s16 CompassHeading; // current compass value in �
- s8 AngleNick; // current Nick angle in 1�
- s8 AngleRoll; // current Rick angle in 1�
- u8 RC_Quality; // RC_Quality
- u8 FCFlags; // Flags from FC
- u8 NCFlags; // Flags from NC
- u8 Errorcode; // 0 --> okay
- u8 OperatingRadius; // current operation radius around the Home Position in m
- s16 TopSpeed; // velocity in vertical direction in cm/s
- u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached
- u8 RC_RSSI; // Receiver signal strength (since version 2 added)
- s16 SetpointAltitude; // setpoint for altitude
- u8 Gas; // for future use
- u16 Current; // actual current in 0.1A steps
- u16 UsedCapacity; // used capacity in mAh
+ u8 Version; // version of the data structure
+ GPS_Pos_t CurrentPosition; // see ubx.h for details
+ GPS_Pos_t TargetPosition;
+ GPS_PosDev_t TargetPositionDeviation;
+ GPS_Pos_t HomePosition;
+ GPS_PosDev_t HomePositionDeviation;
+ u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1
+ u8 WaypointNumber; // number of stored waypoints
+ u8 SatsInUse; // number of satellites used for position solution
+ s16 Altimeter; // hight according to air pressure
+ s16 Variometer; // climb(+) and sink(-) rate
+ u16 FlyingTime; // in seconds
+ u8 UBat; // Battery Voltage in 0.1 Volts
+ u16 GroundSpeed; // speed over ground in cm/s (2D)
+ s16 Heading; // current flight direction in � as angle to north
+ s16 CompassHeading; // current compass value in �
+ s8 AngleNick; // current Nick angle in 1�
+ s8 AngleRoll; // current Rick angle in 1�
+ u8 RC_Quality; // RC_Quality
+ u8 FCFlags; // Flags from FC
+ u8 NCFlags; // Flags from NC
+ u8 Errorcode; // 0 --> okay
+ u8 OperatingRadius; // current operation radius around the Home Position in m
+ s16 TopSpeed; // velocity in vertical direction in cm/s
+ u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached
+ u8 RC_RSSI; // Receiver signal strength (since version 2 added)
+ s16 SetpointAltitude; // setpoint for altitude
+ u8 Gas; // for future use
+ u16 Current; // actual current in 0.1A steps
+ u16 UsedCapacity; // used capacity in mAh
} __attribute__((packed)) NaviData_t;
/C-OSD/trunk/osd_fcmode_default.c
26,79 → 26,79
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_fcmode_default() {
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(27, top_line, 0xCC); // small meters m height
write_char_xy(7, bottom_line, 0x9E); // small v
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(27, top_line, 0xCC); // small meters m height
write_char_xy(7, bottom_line, 0x9E); // small v
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
write_ndigit_number_u(7, top_line, debugData.Analog[10], 3, 0);
if (debugData.Analog[10] <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, BLINK);
} else if (debugData.Analog[10] > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, 0);
}
if (debugData.Analog[5] > 300 || debugData.Analog[5] < -300) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, debugData.Analog[5] / 30, 4, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, debugData.Analog[5] / 3, 3, 0);
}
if (debugData.Analog[5] > max_Altimeter) max_Altimeter = debugData.Analog[5];
write_ndigit_number_u(7, top_line, debugData.Analog[10], 3, 0);
if (debugData.Analog[10] <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, BLINK);
} else if (debugData.Analog[10] > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, 0);
}
 
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
draw_artificial_horizon(top_line + 2, bottom_line - 1, debugData.Analog[0], debugData.Analog[1]);
}
if (debugData.Analog[5] > 300 || debugData.Analog[5] < -300) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, debugData.Analog[5] / 30, 4, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, debugData.Analog[5] / 3, 3, 0);
}
if (debugData.Analog[5] > max_Altimeter) max_Altimeter = debugData.Analog[5];
 
// pre-bottom line
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
}
}
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
draw_artificial_horizon(top_line + 2, bottom_line - 1, debugData.Analog[0], debugData.Analog[1]);
}
 
draw_battery(2, bottom_line, min_voltage, debugData.Analog[9], max_voltage);
write_ndigit_number_u_10th(3, bottom_line, debugData.Analog[9], 3, 0);
if (debugData.Analog[9] <= min_voltage && last_UBat > min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, BLINK);
} else if (debugData.Analog[9] > min_voltage && last_UBat < min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, 0);
}
}
// remember last values
last_UBat = debugData.Analog[9];
last_RC_Quality = debugData.Analog[10];
// pre-bottom line
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
}
}
 
/*
debugData.Analog[0]); // AngleNick
debugData.Analog[1]); // AngleRoll
debugData.Analog[5]); // Height
debugData.Analog[9]); // Voltage
debugData.Analog[10]);// RC Signal
debugData.Analog[11]);// Gyro compass
*/
seconds_since_last_data = 0;
draw_battery(2, bottom_line, min_voltage, debugData.Analog[9], max_voltage);
write_ndigit_number_u_10th(3, bottom_line, debugData.Analog[9], 3, 0);
if (debugData.Analog[9] <= min_voltage && last_UBat > min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, BLINK);
} else if (debugData.Analog[9] > min_voltage && last_UBat < min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, 0);
}
}
// remember last values
last_UBat = debugData.Analog[9];
last_RC_Quality = debugData.Analog[10];
 
return 0;
/*
debugData.Analog[0]); // AngleNick
debugData.Analog[1]); // AngleRoll
debugData.Analog[5]); // Height
debugData.Analog[9]); // Voltage
debugData.Analog[10]);// RC Signal
debugData.Analog[11]);// Gyro compass
*/
seconds_since_last_data = 0;
 
return 0;
}
 
#endif
/C-OSD/trunk/osd_fcmode_jopl.c
72,7 → 72,7
 
// jopl ... compass
write_ndigit_number_u(13, top_line, debugData.Analog[8], 3, 0);
write_ascii_string_pgm(17, top_line, (const char *) (pgm_read_word(&(directions[heading_conv(debugData.Analog[8])]))));
write_ascii_string_pgm(17, top_line, (const char *)(pgm_read_word(&(directions[heading_conv(debugData.Analog[8])]))));
// end jopl
 
// jopl Altimeter modification
/C-OSD/trunk/osd_helpers.c
64,8 → 64,8
* precise index
*/
uint8_t heading_fine_conv(uint16_t heading) {
heading = ((heading * 10) + 113) % 3600;
return (heading / 225);
heading = ((heading * 10) + 113) % 3600;
return (heading / 225);
}
 
/**
74,15 → 74,15
void draw_compass(uint8_t x, uint8_t y, uint16_t heading) {
//char* rose = "---N---O---S---W---N---O---S---W---N---O---S---W";
static char rose[48] PROGMEM = {216, 215, 216, 211, 216, 215, 216, 213, 216, 215, 216, 212,
216, 215, 216, 214, 216, 215, 216, 211, 216, 215, 216, 213,
216, 215, 216, 212, 216, 215, 216, 214, 216, 215, 216, 211,
216, 215, 216, 213, 216, 215, 216, 212, 216, 215, 216, 214};
// the center is char 19 (north), we add the current heading in 8th
// which would be 22.5 degrees, but float would bloat up the code
// and *10 / 225 would take ages... so we take the uncorrect way
216, 215, 216, 214, 216, 215, 216, 211, 216, 215, 216, 213,
216, 215, 216, 212, 216, 215, 216, 214, 216, 215, 216, 211,
216, 215, 216, 213, 216, 215, 216, 212, 216, 215, 216, 214};
// the center is char 19 (north), we add the current heading in 8th
// which would be 22.5 degrees, but float would bloat up the code
// and *10 / 225 would take ages... so we take the uncorrect way
uint8_t front = 19 + (heading / 22);
for (uint8_t i = 0; i < 9; i++) {
write_char_xy(x++, y, pgm_read_byte(&rose[front - 4 + i]));
write_char_xy(x++, y, pgm_read_byte(&rose[front - 4 + i]));
}
}
 
89,63 → 89,65
/* ##########################################################################
* battery index
* ##########################################################################*/
 
/**
* draw a battery symbol at <x>/<y> according to <voltage>
*/
void draw_battery(uint8_t x, uint8_t y, uint8_t min_voltage, uint8_t voltage, uint8_t max_voltage) {
uint8_t percent = (100* (voltage - min_voltage) / (max_voltage - min_voltage));
if (percent > 100) percent = 100;
if (voltage < min_voltage) percent = 0;
write_char_xy(x, y, 0x9d - (percent * 13 / 100));
//write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0);
uint8_t percent = (100 * (voltage - min_voltage) / (max_voltage - min_voltage));
if (percent > 100) percent = 100;
if (voltage < min_voltage) percent = 0;
write_char_xy(x, y, 0x9d - (percent * 13 / 100));
//write_ndigit_number_u(x, y-1, percent * 13 / 100, 100, 0);
}
 
/* ##########################################################################
* variometer
* ##########################################################################*/
 
/**
* draw variometer arrows at <x>/<y> according to <variometer>
*/
void draw_variometer(uint8_t x, uint8_t y, int16_t variometer) {
if (variometer == 0) {
write_char_xy(x, y, 0xbb); // plain line
} else if (variometer > 0) { // gain height
switch (variometer / 5){
case 0:
//write_char_xy(x, y, 0xba); // smallest arrow up
write_char_xy(x, y, 0x70); // one arrow up
break;
case 1:
//write_char_xy(x, y, 0xb9); // small arrow up
write_char_xy(x, y, 0x71); // two arrows up
break;
case 2:
//write_char_xy(x, y, 0xb8); // large arrow up
write_char_xy(x, y, 0x72); // three arrows up
break;
default:
//write_char_xy(x, y, 0xb7); // largest arrow up
write_char_xy(x, y, 0x73); // three black arrows up
}
} else { // sink
switch (variometer / -5){
case 0:
//write_char_xy(x, y, 0xbc); // smallest arrow down
write_char_xy(x, y, 0x77); // one arrow down
break;
case 1:
//write_char_xy(x, y, 0xbd); // small arrow down
write_char_xy(x, y, 0x76); // two arrows down
break;
case 2:
//write_char_xy(x, y, 0xbe); // large arrow down
write_char_xy(x, y, 0x75); // three arrows down
break;
default:
//write_char_xy(x, y, 0xbf); // largest arrow down
write_char_xy(x, y, 0x74); // three black arrows down
}
}
if (variometer == 0) {
write_char_xy(x, y, 0xbb); // plain line
} else if (variometer > 0) { // gain height
switch (variometer / 5) {
case 0:
//write_char_xy(x, y, 0xba); // smallest arrow up
write_char_xy(x, y, 0x70); // one arrow up
break;
case 1:
//write_char_xy(x, y, 0xb9); // small arrow up
write_char_xy(x, y, 0x71); // two arrows up
break;
case 2:
//write_char_xy(x, y, 0xb8); // large arrow up
write_char_xy(x, y, 0x72); // three arrows up
break;
default:
//write_char_xy(x, y, 0xb7); // largest arrow up
write_char_xy(x, y, 0x73); // three black arrows up
}
} else { // sink
switch (variometer / -5) {
case 0:
//write_char_xy(x, y, 0xbc); // smallest arrow down
write_char_xy(x, y, 0x77); // one arrow down
break;
case 1:
//write_char_xy(x, y, 0xbd); // small arrow down
write_char_xy(x, y, 0x76); // two arrows down
break;
case 2:
//write_char_xy(x, y, 0xbe); // large arrow down
write_char_xy(x, y, 0x75); // three arrows down
break;
default:
//write_char_xy(x, y, 0xbf); // largest arrow down
write_char_xy(x, y, 0x74); // three black arrows down
}
}
}
 
// big vario arrays
164,84 → 166,90
const char vario_12[5] PROGMEM = {0xc4, 0xff, 0xc3, 0x00, 0x00};
const char vario_13[5] PROGMEM = {0xc5, 0xff, 0xc3, 0x00, 0x00};
const char vario_14[5] PROGMEM = {0xff, 0xff, 0xc3, 0x00, 0x00};
const char* vario_pnt[15] PROGMEM = {vario_00, vario_01, vario_02, vario_03, vario_04,
vario_05, vario_06, vario_07, vario_08,
vario_09, vario_10, vario_11, vario_12,
vario_13, vario_14};
const char* vario_pnt[15] PROGMEM = {vario_00, vario_01, vario_02, vario_03, vario_04,
vario_05, vario_06, vario_07, vario_08,
vario_09, vario_10, vario_11, vario_12,
vario_13, vario_14};
 
/**
* draw a bigger vario with middle at <x>/<y> acording to <variometer>
*/
void draw_big_variometer(uint8_t x, uint8_t y, int16_t variometer) {
int16_t index = 7 + variometer;
if (index > 14) index = 14;
else if (index < 0) index = 0;
write_string_pgm_down(x, y-2, (const char *) (pgm_read_word ( &(vario_pnt[index]))), 5);
void draw_big_variometer(uint8_t x, uint8_t y, int16_t variometer) {
int16_t index = 7 + variometer;
if (index > 14) index = 14;
else if (index < 0) index = 0;
 
write_string_pgm_down(x, y - 2, (const char *)(pgm_read_word(&(vario_pnt[index]))), 5);
}
 
/* ##########################################################################
* NEW artificial horizon By AGRESSiVA --=-- COPTERTRONiC
* ##########################################################################*/
// draw routine
// draw routine
 
int draw_noodles(int8_t pos_x, int8_t pos_y, int8_t num, int8_t old_num) {
const char noodle[5] = {0x78, 0x79, 0x7A, 0x7B, 0x7C};
int8_t line, car;
line = num / 5;
car = num - (line * 5);
if (num != old_num) {
write_char_xy(15 - pos_x , pos_y + (old_num), 0);
}
const char noodle[5] = {0x78, 0x79, 0x7A, 0x7B, 0x7C};
int8_t line, car;
 
if (num < 0) {car = -1* car; car = 4 - car; line--; num = num - 5;}
write_char_xy(15 - pos_x , pos_y + line, noodle[car]);
line = num / 5;
car = num - (line * 5);
if (num != old_num) {
write_char_xy(15 - pos_x, pos_y + (old_num), 0);
}
 
return line;
}
if (num < 0) {
car = -1 * car;
car = 4 - car;
line--;
num = num - 5;
}
write_char_xy(15 - pos_x, pos_y + line, noodle[car]);
 
return line;
}
 
/**
* calculate the rails of artificial horizon
* receive <nick> and <roll> values
*/
void draw_agressiva_artificial_horizon(uint8_t firstline, uint8_t lastline, int16_t nick, int16_t roll) {
static int8_t old_ticy = 1,old_ticx = 0;
static int8_t old1 = 0,old2 = 0,old3 = 0,old4, old5 = 0, old6 = 0,old7 = 0,old8 = 0;
int8_t ticy = 0, ticx = 0;
uint8_t center_x = 15;
uint8_t center_y = lastline - firstline;
center_y = 7;
write_char_xy(center_x - 7 ,center_y,226); // left bar
write_char_xy(center_x + 6 ,center_y,226); // right bar
static int8_t old_ticy = 1, old_ticx = 0;
static int8_t old1 = 0, old2 = 0, old3 = 0, old4, old5 = 0, old6 = 0, old7 = 0, old8 = 0;
int8_t ticy = 0, ticx = 0;
uint8_t center_x = 15;
uint8_t center_y = lastline - firstline;
center_y = 7;
write_char_xy(center_x - 7, center_y, 226); // left bar
write_char_xy(center_x + 6, center_y, 226); // right bar
 
 
#if FCONLY
ticy = -1*(roll / 10); // rescale roll from FC debug data
ticx = -1*(nick * 10); // rescale nick from FC debug data
ticy = -1 * (roll / 10); // rescale roll from FC debug data
ticx = -1 * (nick * 10); // rescale nick from FC debug data
#else
ticy = -1*(roll / 2);
ticx = -1*(nick / 1);
ticy = -1 * (roll / 2);
ticx = -1 * (nick / 1);
#endif
 
if (ticy >= 30) ticy = 30; // limit y
if (ticx >= 30) ticx = 30; // limit x
if (ticy >= 30) ticy = 30; // limit y
if (ticx >= 30) ticx = 30; // limit x
 
//write_ndigit_number_u (0 , 5 , ticy ,3, 1);
//write_ndigit_number_u (0 , 6 , ticx ,3, 1);
//write_ndigit_number_u (0 , 5 , ticy ,3, 1);
//write_ndigit_number_u (0 , 6 , ticx ,3, 1);
 
//if ((ticy != old_ticy) || (ticx != old_ticx)) {
old1 = draw_noodles( 4, 3, (ticy / 2) + 20 + ticx, old1);
old2 = draw_noodles( 3, 3, (ticy / 3) + 20 + ticx, old2);
old3 = draw_noodles( 2, 3, (ticy / 6) + 20 + ticx, old3);
old4 = draw_noodles( 1, 3, (ticy / 14) + 20 + ticx, old4);
old5 = draw_noodles( - 3, 3, -(ticy / 2) + 20 + ticx, old5);
old6 = draw_noodles( - 2, 3, -(ticy / 3) + 20 + ticx, old6);
old7 = draw_noodles( - 1, 3, -(ticy / 6) + 20 + ticx, old7);
old8 = draw_noodles( 0, 3, -(ticy / 14) + 20 + ticx, old8);
//}
// update old vars
old_ticy = ticy;
old_ticx = ticx;
//if ((ticy != old_ticy) || (ticx != old_ticx)) {
old1 = draw_noodles(4, 3, (ticy / 2) + 20 + ticx, old1);
old2 = draw_noodles(3, 3, (ticy / 3) + 20 + ticx, old2);
old3 = draw_noodles(2, 3, (ticy / 6) + 20 + ticx, old3);
old4 = draw_noodles(1, 3, (ticy / 14) + 20 + ticx, old4);
old5 = draw_noodles(-3, 3, -(ticy / 2) + 20 + ticx, old5);
old6 = draw_noodles(-2, 3, -(ticy / 3) + 20 + ticx, old6);
old7 = draw_noodles(-1, 3, -(ticy / 6) + 20 + ticx, old7);
old8 = draw_noodles(0, 3, -(ticy / 14) + 20 + ticx, old8);
//}
// update old vars
old_ticy = ticy;
old_ticx = ticx;
}
 
 
257,54 → 265,54
* from line <firstline> to <listlines> for given <nick> and <roll> values
*/
void draw_artificial_horizon(uint8_t firstline, uint8_t lastline, int16_t nick, int16_t roll) {
const char noodle[5] = {225, 225, 226, 227, 227};
uint8_t center_x = 15;
uint8_t center_y = lastline - firstline;
center_y = 7;
write_char_xy(center_x,center_y,228);
uint8_t cpos, nicky, rollx;
// which line
int8_t ypos = nick / 20;
// which character from the array?
if (nick < 0) {
cpos = -1*((nick - (ypos * 20))/4);
ypos--;
} else cpos = 4-((nick - (ypos * 20))/4);
if (cpos > 4) cpos = 4;
const char noodle[5] = {225, 225, 226, 227, 227};
uint8_t center_x = 15;
uint8_t center_y = lastline - firstline;
center_y = 7;
write_char_xy(center_x, center_y, 228);
uint8_t cpos, nicky, rollx;
 
nicky = center_y - ypos;
if (nicky > lastline) nicky = lastline;
else if (nicky < firstline) nicky = firstline;
// which line
int8_t ypos = nick / 20;
// which character from the array?
if (nick < 0) {
cpos = -1 * ((nick - (ypos * 20)) / 4);
ypos--;
} else cpos = 4 - ((nick - (ypos * 20)) / 4);
if (cpos > 4) cpos = 4;
 
// ensure roll-borders
rollx = (roll / 8)+15;
if (rollx < 2) rollx = 2;
else if (rollx > 28) rollx = 28;
nicky = center_y - ypos;
if (nicky > lastline) nicky = lastline;
else if (nicky < firstline) nicky = firstline;
 
// ensure roll-borders
rollx = (roll / 8) + 15;
if (rollx < 2) rollx = 2;
else if (rollx > 28) rollx = 28;
 
// clear roll
if (old_af_x != rollx && old_af_x >= 0) {
write_char_xy(old_af_x, lastline, 0);
}
 
// clear nick
if (old_af_y != nicky && old_af_y >= 0) {
write_char_xy(center_x-1, old_af_y, 0);
write_char_xy(center_x+1, old_af_y, 0);
}
// clear roll
if (old_af_x != rollx && old_af_x >= 0) {
write_char_xy(old_af_x, lastline, 0);
}
 
// clear nick
if (old_af_y != nicky && old_af_y >= 0) {
write_char_xy(center_x - 1, old_af_y, 0);
write_char_xy(center_x + 1, old_af_y, 0);
}
 
// draw nick
write_char_xy(center_x-1, nicky, noodle[cpos]);
write_char_xy(center_x+1, nicky, noodle[cpos]);
 
// draw roll
write_char_xy(rollx, lastline, 229);
// draw nick
write_char_xy(center_x - 1, nicky, noodle[cpos]);
write_char_xy(center_x + 1, nicky, noodle[cpos]);
 
// update old vars
old_af_x = rollx;
old_af_y = nicky;
// draw roll
write_char_xy(rollx, lastline, 229);
 
// update old vars
old_af_x = rollx;
old_af_y = nicky;
}
 
 
/C-OSD/trunk/osd_helpers.h
31,7 → 31,7
* convert the <heading> gotton from NC into a more
* precise index
*/
uint8_t heading_fine_conv(uint16_t );
uint8_t heading_fine_conv(uint16_t);
 
/**
* draw a compass rose at <x>/<y> for <heading>
/C-OSD/trunk/osd_ncmode_default.c
26,287 → 26,292
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_ncmode_default() {
uint8_t rc_signal = naviData.RC_RSSI?naviData.RC_RSSI:naviData.RC_Quality; // if RSSI is present use it, else use Qality
uint8_t rc_signal = naviData.RC_RSSI ? naviData.RC_RSSI : naviData.RC_Quality; // if RSSI is present use it, else use Qality
 
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
write_char_xy(5, top_line, 0x7D); // mph
write_char_xy(27, top_line + 1, 0x7E); // small feet ft home
write_char_xy(27, top_line, 0x7E); // small feet ft height
} else {
write_char_xy(5, top_line, 0xCB); // km/h
write_char_xy(27, top_line + 1, 0xCC); // small meters m home
write_char_xy(27, top_line, 0xCC); // small meters m height
}
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(16, top_line, 0xD0); // degree symbol
write_char_xy(20, top_line + 1, 0xB0); // left circle
write_char_xy(22, top_line + 1, 0xB2); // right circle
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
write_char_xy(5, top_line, 0x7D); // mph
write_char_xy(27, top_line + 1, 0x7E); // small feet ft home
write_char_xy(27, top_line, 0x7E); // small feet ft height
} else {
write_char_xy(5, top_line, 0xCB); // km/h
write_char_xy(27, top_line + 1, 0xCC); // small meters m home
write_char_xy(27, top_line, 0xCC); // small meters m height
}
 
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(16, top_line, 0xD0); // degree symbol
 
write_char_xy(7, bottom_line, 0x9E); // small V
if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
write_char_xy(14, bottom_line, 0xD1); // on clock
write_char_xy(21, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
write_char_xy(20, top_line + 1, 0xB0); // left circle
write_char_xy(22, top_line + 1, 0xB2); // right circle
 
// first line
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
// experimental cm/s -> mph
write_ndigit_number_u(2, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t) 279) / (uint32_t) 12500), 3, 0);
} else {
write_ndigit_number_u(2, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0);
}
 
write_ndigit_number_u(7, top_line, rc_signal, 3, 0);
if (rc_signal <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, BLINK);
} else if (rc_signal > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, 0);
}
write_char_xy(7, bottom_line, 0x9E); // small V
if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
write_char_xy(14, bottom_line, 0xD1); // on clock
write_char_xy(21, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
if (naviData.NCFlags & NC_FLAG_NOSERIALLINK) {
write_char_xy(11, top_line, 0); // clear
} else {
write_char_xy(11, top_line, 0xC6); // PC icon
}
// first line
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
// experimental cm/s -> mph
write_ndigit_number_u(2, top_line, (uint16_t)(((uint32_t)naviData.GroundSpeed * (uint32_t)279) / (uint32_t)12500), 3, 0);
} else {
write_ndigit_number_u(2, top_line, (uint16_t)(((uint32_t)naviData.GroundSpeed * (uint32_t)9) / (uint32_t)250), 3, 0);
}
 
write_ndigit_number_u(13, top_line, naviData.CompassHeading, 3, 0);
write_ndigit_number_u(7, top_line, rc_signal, 3, 0);
if (rc_signal <= RCLVL_WRN && last_RC_Quality > RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, BLINK);
} else if (rc_signal > RCLVL_WRN && last_RC_Quality <= RCLVL_WRN) {
for (uint8_t x = 0; x < 4; x++)
write_char_att_xy(7 + x, top_line, 0);
}
 
write_ascii_string_pgm(17, top_line, (const char *) (pgm_read_word ( &(directions[heading_conv(naviData.CompassHeading)]))));
 
draw_variometer(21, top_line, naviData.Variometer);
if (naviData.NCFlags & NC_FLAG_NOSERIALLINK) {
write_char_xy(11, top_line, 0); // clear
} else {
write_char_xy(11, top_line, 0xC6); // PC icon
}
 
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
// feet
write_ndigit_number_s(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset) * 32 / 10, 4, 0); // GPS
} else {
if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > 10 || naviData.CurrentPosition.Altitude / 1000 - altimeter_offset < -10) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset), 4, 0); // GPS
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 100 - altimeter_offset * 10), 3, 0); // GPS
}
}
} else {
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
write_ndigit_number_s(23, top_line, naviData.Altimeter / 10 * 32 / 30, 4, 0); // BARO
} else {
//note:lephisto:according to several sources it's /30
if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, naviData.Altimeter / 30, 4, 0); // BARO
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, naviData.Altimeter / 3, 3, 0); // BARO
}
}
}
+ write_ndigit_number_u(13, top_line, naviData.CompassHeading, 3, 0);
- // seccond line
- draw_compass(11, top_line + 1, naviData.CompassHeading);
+ write_ascii_string_pgm(17, top_line, (const char *)(pgm_read_word(&(directions[heading_conv(naviData.CompassHeading)]))));
- // TODO: verify correctness
- uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360;
- //write_char_xy(21, top_line + 1, arrowdir[heading_conv(heading_home)]);
- // finer resolution, 0xa0 is first character and we add the index 0 <= index < 16
- write_char_xy(21, top_line + 1, 0xa0 + heading_fine_conv(heading_home));
+ draw_variometer(21, top_line, naviData.Variometer);
- if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
- // feet
- write_ndigit_number_u(24, top_line + 1, naviData.HomePositionDeviation.Distance / 10 * 32 / 10, 3, 0);
- } else {
- write_ndigit_number_u(24, top_line + 1, naviData.HomePositionDeviation.Distance / 10, 3, 0);
- }
-
- // center
- if (naviData.FCFlags & FLAG_MOTOR_RUN) { // should be engines running
- if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
- clear();
- // remember current heigth for gps offset
- altimeter_offset = naviData.CurrentPosition.Altitude / 1000;
- // set wasted counter to current offset
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- wasted_ampere_offset = ampere_wasted / 10;
- } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
- wasted_ampere_offset = naviData.UsedCapacity;
- }
- // update flags to paint display again if needed
- COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
- }
- if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // horizon
- uint8_t horizon_bottom = bottom_line - 1;
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- horizon_bottom--;
- }
- if (COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON) {
- draw_agressiva_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
- } else {
- draw_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
- }
- }
- // motors are on, assume we were/are flying
- COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
- } else {
- // stats
- if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
- uint8_t line = 3;
- write_ascii_string_pgm(1, line, (const char *) (pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[1])))); // max Speed
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[2])))); // max Distance
-
- if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
- write_ndigit_number_s(16, line, max_Altimeter * 32 / 10, 4, 0);
- write_char_xy(20, line - 2, 0x7E); // small feet ft
- write_ndigit_number_u(17, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 279) / (uint32_t) 12500), 3, 0);
- write_char_xy(20, line - 1, 0x7D); // mp/h
- write_ndigit_number_u(17, line, max_Distance / 10 * 32 / 10, 3, 0);
- write_char_xy(20, line - 0, 0x7E); // small feet ft
- } else {
- write_ndigit_number_s(16, line, max_Altimeter, 4, 0);
- write_char_xy(20, line - 2, 204); // small meters m
- write_ndigit_number_u(17, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0);
- write_char_xy(20, line - 1, 203); // km/h
- write_ndigit_number_u(17, line, max_Distance / 10, 3, 0);
- write_char_xy(20, line - 0, 204); // small meters m
- }
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
+ // feet
+ write_ndigit_number_s(23, top_line, (int16_t)(naviData.CurrentPosition.Altitude / 1000 - altimeter_offset) * 32 / 10, 4, 0); // GPS
+ } else {
+ if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > 10 || naviData.CurrentPosition.Altitude / 1000 - altimeter_offset < -10) {
+ // above 10m only write full meters
+ write_ndigit_number_s(23, top_line, (int16_t)(naviData.CurrentPosition.Altitude / 1000 - altimeter_offset), 4, 0); // GPS
+ } else {
+ // up to 10m write meters.dm
+ write_ndigit_number_s_10th(23, top_line, (int16_t)(naviData.CurrentPosition.Altitude / 100 - altimeter_offset * 10), 3, 0); // GPS
+ }
+ }
+ } else {
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
+ write_ndigit_number_s(23, top_line, naviData.Altimeter / 10 * 32 / 30, 4, 0); // BARO
+ } else {
+ //note:lephisto:according to several sources it's /30
+ if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
+ // above 10m only write full meters
+ write_ndigit_number_s(23, top_line, naviData.Altimeter / 30, 4, 0); // BARO
+ } else {
+ // up to 10m write meters.dm
+ write_ndigit_number_s_10th(23, top_line, naviData.Altimeter / 3, 3, 0); // BARO
+ }
+ }
+ }
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[3])))); // min voltage
- write_ndigit_number_u_10th(16, line, min_UBat, 3, 0);
- write_char_xy(20, line, 0x9E); // small V
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[7])))); // ampere
- write_ndigit_number_u_10th(16, line, max_ampere / 10, 3, 0);
- write_char_xy(20, line, 0x9F); // small A
-
- // wasted mampere in this flight (will count up after landing)
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- write_ndigit_number_u(21, line, (ampere_wasted / 10) - wasted_ampere_offset, 5, 0);
- } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
-
- write_ndigit_number_u(21, line, naviData.UsedCapacity - wasted_ampere_offset, 5, 0);
- }
-
- write_char_xy(26, line, 0xB5); // mah
- }
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[4])))); // max time
- write_time(14, line, max_FlyingTime);
- write_char_xy(20, line, 210); // fly clock
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[5])))); // longitude
- write_gps_pos(14, line, naviData.CurrentPosition.Longitude);
- write_ascii_string_pgm(1, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[6])))); // latitude
- write_gps_pos(14, line, naviData.CurrentPosition.Latitude);
- } else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
- uint8_t horizon_bottom = bottom_line - 1;
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- horizon_bottom--;
- }
- if (COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON) {
- draw_agressiva_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
- } else {
- draw_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
- }
- }
- }
- if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
- draw_big_variometer(27, 8, naviData.Variometer);
- }
- // pre-bottom line
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- //write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
- write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
- write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
- if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
- write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
- }
- } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
- write_ndigit_number_u_10th(3, bottom_line - 1, naviData.Current, 3, 0);
- write_ndigit_number_u(10, bottom_line - 1, naviData.UsedCapacity, 4, 0);
- }
+ // seccond line
+ draw_compass(11, top_line + 1, naviData.CompassHeading);
- //DEBUGwrite_ndigit_number_u(1, 5, COSD_FLAGS_MODES, 3, 0);
+ // TODO: verify correctness
+ uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360;
+ //write_char_xy(21, top_line + 1, arrowdir[heading_conv(heading_home)]);
+ // finer resolution, 0xa0 is first character and we add the index 0 <= index < 16
+ write_char_xy(21, top_line + 1, 0xa0 + heading_fine_conv(heading_home));
- // bottom line
- draw_battery(2, bottom_line, min_voltage, naviData.UBat, max_voltage);
- write_ndigit_number_u_10th(3, bottom_line, naviData.UBat, 3, 0);
- if (naviData.UBat <= min_voltage && last_UBat > min_voltage) {
- for (uint8_t x = 2; x < 8; x++)
- write_char_att_xy(x, bottom_line, BLINK);
- } else if (naviData.UBat > min_voltage && last_UBat < min_voltage) {
- for (uint8_t x = 2; x < 8; x++)
- write_char_att_xy(x, bottom_line, 0);
- }
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
+ // feet
+ write_ndigit_number_u(23, top_line + 1, naviData.HomePositionDeviation.Distance / 10 * 32 / 10, 4, 0);
+ } else {
+ write_ndigit_number_u(23, top_line + 1, naviData.HomePositionDeviation.Distance / 10, 4, 0);
+ }
- write_time(8, bottom_line, uptime);
- write_time(15, bottom_line, naviData.FlyingTime);
+ // center
+ if (naviData.FCFlags & FLAG_MOTOR_RUN) { // should be engines running
+ if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
+ clear();
+ // remember current heigth for gps offset
+ altimeter_offset = naviData.CurrentPosition.Altitude / 1000;
+ // set wasted counter to current offset
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ wasted_ampere_offset = ampere_wasted / 10;
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
+ wasted_ampere_offset = naviData.UsedCapacity;
+ }
+ // update flags to paint display again if needed
+ COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
+ }
+ if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // horizon
+ uint8_t horizon_bottom = bottom_line - 1;
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ horizon_bottom--;
+ }
+ if (COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON) {
+ draw_agressiva_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
+ } else {
+ draw_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
+ }
+ }
+ // motors are on, assume we were/are flying
+ COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
+ } else {
+ if ((old_MKFlags & FLAG_MOTOR_RUN)) { // motors just stopped
+ clear(); // clear whole screen in case there is horizon stuff left
+ // update flags to paint display again if needed
+ COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
+ }
+ // stats
+ if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
+ uint8_t line = 3;
+ write_ascii_string_pgm(1, line, (const char *)(pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[1])))); // max Speed
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[2])))); // max Distance
- write_ndigit_number_u(24, bottom_line, naviData.SatsInUse, 2, 0);
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
+ write_ndigit_number_s(16, line - 2, max_Altimeter * 32 / 10, 4, 0);
+ write_char_xy(20, line - 2, 0x7E); // small feet ft
+ write_ndigit_number_u(17, line - 1, (uint16_t)(((uint32_t)max_GroundSpeed * (uint32_t)279) / (uint32_t)12500), 3, 0);
+ write_char_xy(20, line - 1, 0x7D); // mp/h
+ write_ndigit_number_u(17, line - 0, max_Distance / 10 * 32 / 10, 3, 0);
+ write_char_xy(20, line - 0, 0x7E); // small feet ft
+ } else {
+ write_ndigit_number_s(16, line - 2, max_Altimeter, 4, 0);
+ write_char_xy(20, line - 2, 204); // small meters m
+ write_ndigit_number_u(17, line - 1, (uint16_t)(((uint32_t)max_GroundSpeed * (uint32_t)9) / (uint32_t)250), 3, 0);
+ write_char_xy(20, line - 1, 203); // km/h
+ write_ndigit_number_u(17, line - 0, max_Distance / 10, 3, 0);
+ write_char_xy(20, line - 0, 204); // small meters m
+ }
- if (naviData.NCFlags & NC_FLAG_MANUAL_CONTROL) {
- write_char_xy(23, bottom_line, 0xB3); // rc transmitter
- } else {
- write_char_xy(23, bottom_line, 0); // clear
- }
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[3])))); // min voltage
+ write_ndigit_number_u_10th(16, line, min_UBat, 3, 0);
+ write_char_xy(20, line, 0x9E); // small V
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[7])))); // ampere
+ write_ndigit_number_u_10th(16, line, max_ampere / 10, 3, 0);
+ write_char_xy(20, line, 0x9F); // small A
- if (naviData.NCFlags & NC_FLAG_CH) {
- write_char_xy(27, bottom_line, 231); // gps ch
- } else if (naviData.NCFlags & NC_FLAG_PH) {
- write_char_xy(27, bottom_line, 230); // gps ph
- } else { // (naviData.NCFlags & NC_FLAG_FREE)
- write_char_xy(27, bottom_line, 201); // sat2 (free)
- }
- }
+ // wasted mampere in this flight (will count up after landing)
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ write_ndigit_number_u(21, line, (ampere_wasted / 10) - wasted_ampere_offset, 5, 0);
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
- //write_number_s(8, 5, RxDataLen);
- //write_number_s(16, 5, setsReceived++);
+ write_ndigit_number_u(21, line, naviData.UsedCapacity - wasted_ampere_offset, 5, 0);
+ }
- // remember statistics (only when engines running)
- if (naviData.FCFlags & FLAG_MOTOR_RUN) {
- if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
- if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > max_Altimeter) max_Altimeter = naviData.CurrentPosition.Altitude / 1000;
- } else {
- if (naviData.Altimeter / 30 > max_Altimeter) max_Altimeter = naviData.Altimeter / 30;
- }
- if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
- if (naviData.HomePositionDeviation.Distance > max_Distance) {
- max_Distance = naviData.HomePositionDeviation.Distance;
- }
- if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
- if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
- if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
- if (ampere > max_ampere) max_ampere = ampere;
- } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
- if (naviData.Current * 10 > max_ampere) max_ampere = naviData.Current * 10;
- }
- }
+ write_char_xy(26, line, 0xB5); // mah
+ }
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[4])))); // max time
+ write_time(14, line, max_FlyingTime);
+ write_char_xy(20, line, 210); // fly clock
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[5])))); // longitude
+ write_gps_pos(14, line, naviData.CurrentPosition.Longitude);
+ write_ascii_string_pgm(1, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[6])))); // latitude
+ write_gps_pos(14, line, naviData.CurrentPosition.Latitude);
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
+ uint8_t horizon_bottom = bottom_line - 1;
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) || (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ horizon_bottom--;
+ }
+ if (COSD_FLAGS_MODES & COSD_FLAG_AGGRHORIZON) {
+ draw_agressiva_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
+ } else {
+ draw_artificial_horizon(top_line + 2, horizon_bottom, naviData.AngleNick, naviData.AngleRoll);
+ }
+ }
+ }
+ if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
+ draw_big_variometer(27, 8, naviData.Variometer);
+ }
- // remember last values
- last_RC_Quality = rc_signal;
- last_UBat = naviData.UBat;
- old_MKFlags = naviData.FCFlags;
- seconds_since_last_data = 0;
+ // pre-bottom line
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ //write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
+ write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
+ write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
+ if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
+ write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
+ }
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
+ write_ndigit_number_u_10th(3, bottom_line - 1, naviData.Current, 3, 0);
+ write_ndigit_number_u(10, bottom_line - 1, naviData.UsedCapacity, 4, 0);
+ }
- return 0;
+ //DEBUGwrite_ndigit_number_u(1, 5, COSD_FLAGS_MODES, 3, 0);
+
+ // bottom line
+ draw_battery(2, bottom_line, min_voltage, naviData.UBat, max_voltage);
+ write_ndigit_number_u_10th(3, bottom_line, naviData.UBat, 3, 0);
+ if (naviData.UBat <= min_voltage && last_UBat > min_voltage) {
+ for (uint8_t x = 2; x < 8; x++)
+ write_char_att_xy(x, bottom_line, BLINK);
+ } else if (naviData.UBat > min_voltage && last_UBat < min_voltage) {
+ for (uint8_t x = 2; x < 8; x++)
+ write_char_att_xy(x, bottom_line, 0);
+ }
+
+ write_time(8, bottom_line, uptime);
+ write_time(15, bottom_line, naviData.FlyingTime);
+
+ write_ndigit_number_u(24, bottom_line, naviData.SatsInUse, 2, 0);
+
+ if (naviData.NCFlags & NC_FLAG_MANUAL_CONTROL) {
+ write_char_xy(23, bottom_line, 0xB3); // rc transmitter
+ } else {
+ write_char_xy(23, bottom_line, 0); // clear
+ }
+
+ if (naviData.NCFlags & NC_FLAG_CH) {
+ write_char_xy(27, bottom_line, 231); // gps ch
+ } else if (naviData.NCFlags & NC_FLAG_PH) {
+ write_char_xy(27, bottom_line, 230); // gps ph
+ } else { // (naviData.NCFlags & NC_FLAG_FREE)
+ write_char_xy(27, bottom_line, 201); // sat2 (free)
+ }
+ }
+
+ //write_number_s(8, 5, RxDataLen);
+ //write_number_s(16, 5, setsReceived++);
+
+ // remember statistics (only when engines running)
+ if (naviData.FCFlags & FLAG_MOTOR_RUN) {
+ if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
+ if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > max_Altimeter) max_Altimeter = naviData.CurrentPosition.Altitude / 1000;
+ } else {
+ if (naviData.Altimeter / 30 > max_Altimeter) max_Altimeter = naviData.Altimeter / 30;
+ }
+ if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
+ if (naviData.HomePositionDeviation.Distance > max_Distance) {
+ max_Distance = naviData.HomePositionDeviation.Distance;
+ }
+ if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
+ if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
+ if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
+ if (ampere > max_ampere) max_ampere = ampere;
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT) {
+ if (naviData.Current * 10 > max_ampere) max_ampere = naviData.Current * 10;
+ }
+ }
+
+ // remember last values
+ last_RC_Quality = rc_signal;
+ last_UBat = naviData.UBat;
+ old_MKFlags = naviData.FCFlags;
+ seconds_since_last_data = 0;
+
+ return 0;
}
#endif
/C-OSD/trunk/osd_ncmode_minimal.c
26,146 → 26,146
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_ncmode_minimal() {
 
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(4, top_line, 0xCB); // km/h
write_char_xy(15, top_line, 0xCC); // small meters m height
write_char_xy(26, top_line, 0xCC); // small meters m height
write_char_xy(16, top_line, 0xB0); // left circle
write_char_xy(18, top_line, 0xB2); // right circle
write_char_xy(7, bottom_line, 0x9E); // small V
write_char_xy(17, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
// first line
write_ndigit_number_u(1, top_line, (uint16_t) (((uint32_t) naviData.GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0);
 
write_ndigit_number_u(12, top_line, naviData.HomePositionDeviation.Distance / 10, 3, 0);
 
uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360;
write_char_xy(17, top_line, 0xa0 + heading_fine_conv(heading_home));
 
if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
// above 10m only write full meters
write_ndigit_number_s(22, top_line, naviData.Altimeter / 30, 4, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(22, top_line, naviData.Altimeter / 3, 3, 0);
}
 
draw_variometer(27, top_line, naviData.Variometer);
 
 
// center
if (naviData.FCFlags & FLAG_MOTOR_RUN) { // should be engines running
if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
clear();
// update flags to paint display again if needed
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
}
}
// motors are on, assume we were/are flying
COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
} else {
// stats
if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
uint8_t line = 3;
write_ascii_string_pgm(2, line, (const char *) (pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
write_ndigit_number_s(18, line, max_Altimeter / 30, 4, 0);
write_char_xy(22, line, 204); // small meters m
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[1])))); // max Speed
write_ndigit_number_u(19, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0);
write_char_xy(22, line, 203); // km/h
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[2])))); // max Distance
write_ndigit_number_u(19, line, max_Distance / 10, 3, 0);
write_char_xy(22, line, 204); // small meters m
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[3])))); // min voltage
write_ndigit_number_u_10th(18, line, min_UBat, 3, 0);
write_char_xy(22, line, 0x9E); // small V
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[7])))); // ampere
write_ndigit_number_u_10th(18, line, max_ampere / 10, 3, 0);
write_char_xy(22, line, 0x9F); // small A
}
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[4])))); // max time
write_time(16, line, max_FlyingTime);
write_char_xy(22, line, 210); // fly clock
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[5])))); // longitude
write_gps_pos(15, line, naviData.CurrentPosition.Longitude);
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[6])))); // latitude
write_gps_pos(15, line, naviData.CurrentPosition.Latitude);
} else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
}
}
}
if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
draw_big_variometer(27, 8, naviData.Variometer);
}
 
// pre-bottom line
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
}
 
// bottom line
draw_battery(2, bottom_line, min_voltage, naviData.UBat, max_voltage);
write_ndigit_number_u_10th(3, bottom_line, naviData.UBat, 3, 0);
if (naviData.UBat <= min_voltage && last_UBat > min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, BLINK);
} else if (naviData.UBat > min_voltage && last_UBat < min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, 0);
}
 
write_time(11, bottom_line, naviData.FlyingTime);
 
write_ndigit_number_u(24, bottom_line, naviData.SatsInUse, 2, 0);
 
if (naviData.NCFlags & NC_FLAG_CH) {
write_char_xy(27, bottom_line, 231); // gps ch
} else if (naviData.NCFlags & NC_FLAG_PH) {
write_char_xy(27, bottom_line, 230); // gps ph
} else { // (naviData.NCFlags & NC_FLAG_FREE)
write_char_xy(27, bottom_line, 201); // sat2 (free)
}
}
 
// remember statistics (only when engines running)
if (naviData.FCFlags & FLAG_MOTOR_RUN) {
if (naviData.Altimeter > max_Altimeter) max_Altimeter = naviData.Altimeter;
if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
if (naviData.HomePositionDeviation.Distance > max_Distance) {
max_Distance = naviData.HomePositionDeviation.Distance;
}
if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
if (ampere > max_ampere) max_ampere = ampere;
}
 
// remember last values
last_UBat = naviData.UBat;
old_MKFlags = naviData.FCFlags;
seconds_since_last_data = 0;
 
return 0;
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(4, top_line, 0xCB); // km/h
write_char_xy(15, top_line, 0xCC); // small meters m height
write_char_xy(26, top_line, 0xCC); // small meters m height
write_char_xy(16, top_line, 0xB0); // left circle
write_char_xy(18, top_line, 0xB2); // right circle
write_char_xy(7, bottom_line, 0x9E); // small V
write_char_xy(17, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
// first line
write_ndigit_number_u(1, top_line, (uint16_t)(((uint32_t)naviData.GroundSpeed * (uint32_t)9) / (uint32_t)250), 3, 0);
 
write_ndigit_number_u(12, top_line, naviData.HomePositionDeviation.Distance / 10, 3, 0);
 
uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360;
write_char_xy(17, top_line, 0xa0 + heading_fine_conv(heading_home));
 
if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
// above 10m only write full meters
write_ndigit_number_s(22, top_line, naviData.Altimeter / 30, 4, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(22, top_line, naviData.Altimeter / 3, 3, 0);
}
 
draw_variometer(27, top_line, naviData.Variometer);
 
 
// center
if (naviData.FCFlags & FLAG_MOTOR_RUN) { // should be engines running
if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
clear();
// update flags to paint display again if needed
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
}
}
// motors are on, assume we were/are flying
COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
} else {
// stats
if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
uint8_t line = 3;
write_ascii_string_pgm(2, line, (const char *)(pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
write_ndigit_number_s(18, line, max_Altimeter / 30, 4, 0);
write_char_xy(22, line, 204); // small meters m
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[1])))); // max Speed
write_ndigit_number_u(19, line, (uint16_t)(((uint32_t)max_GroundSpeed * (uint32_t)9) / (uint32_t)250), 3, 0);
write_char_xy(22, line, 203); // km/h
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[2])))); // max Distance
write_ndigit_number_u(19, line, max_Distance / 10, 3, 0);
write_char_xy(22, line, 204); // small meters m
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[3])))); // min voltage
write_ndigit_number_u_10th(18, line, min_UBat, 3, 0);
write_char_xy(22, line, 0x9E); // small V
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[7])))); // ampere
write_ndigit_number_u_10th(18, line, max_ampere / 10, 3, 0);
write_char_xy(22, line, 0x9F); // small A
}
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[4])))); // max time
write_time(16, line, max_FlyingTime);
write_char_xy(22, line, 210); // fly clock
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[5])))); // longitude
write_gps_pos(15, line, naviData.CurrentPosition.Longitude);
write_ascii_string_pgm(2, ++line, (const char *)(pgm_read_word(&(stats_item_pointers[6])))); // latitude
write_gps_pos(15, line, naviData.CurrentPosition.Latitude);
} else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
}
}
}
if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
draw_big_variometer(27, 8, naviData.Variometer);
}
 
// pre-bottom line
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
}
 
// bottom line
draw_battery(2, bottom_line, min_voltage, naviData.UBat, max_voltage);
write_ndigit_number_u_10th(3, bottom_line, naviData.UBat, 3, 0);
if (naviData.UBat <= min_voltage && last_UBat > min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, BLINK);
} else if (naviData.UBat > min_voltage && last_UBat < min_voltage) {
for (uint8_t x = 2; x < 8; x++)
write_char_att_xy(x, bottom_line, 0);
}
 
write_time(11, bottom_line, naviData.FlyingTime);
 
write_ndigit_number_u(24, bottom_line, naviData.SatsInUse, 2, 0);
 
if (naviData.NCFlags & NC_FLAG_CH) {
write_char_xy(27, bottom_line, 231); // gps ch
} else if (naviData.NCFlags & NC_FLAG_PH) {
write_char_xy(27, bottom_line, 230); // gps ph
} else { // (naviData.NCFlags & NC_FLAG_FREE)
write_char_xy(27, bottom_line, 201); // sat2 (free)
}
}
 
// remember statistics (only when engines running)
if (naviData.FCFlags & FLAG_MOTOR_RUN) {
if (naviData.Altimeter > max_Altimeter) max_Altimeter = naviData.Altimeter;
if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
if (naviData.HomePositionDeviation.Distance > max_Distance) {
max_Distance = naviData.HomePositionDeviation.Distance;
}
if (naviData.UBat < min_UBat) min_UBat = naviData.UBat;
if (naviData.FlyingTime > max_FlyingTime) max_FlyingTime = naviData.FlyingTime;
if (ampere > max_ampere) max_ampere = ampere;
}
 
// remember last values
last_UBat = naviData.UBat;
old_MKFlags = naviData.FCFlags;
seconds_since_last_data = 0;
 
return 0;
}
 
#endif
/C-OSD/trunk/ppm.c
32,10 → 32,10
* init ppm, including timer1 for measurement
*/
void ppm_init() {
PORTE |= (1 << PORTE0); // enable pullup on INT0 pin
GICR |= (1<<INT2); // External Interrupt Request 2 Enable
EMCUCR |= (1<<ISC2); // a rising edge on INT2 activates the interrupt
TCCR1B |= (0<<CS12)|(1<<CS10)|(1<<CS11); // timer1 up with prescaler 64
PORTE |= (1 << PORTE0); // enable pullup on INT0 pin
GICR |= (1 << INT2); // External Interrupt Request 2 Enable
EMCUCR |= (1 << ISC2); // a rising edge on INT2 activates the interrupt
TCCR1B |= (0 << CS12) | (1 << CS10) | (1 << CS11); // timer1 up with prescaler 64
}
 
/**
42,36 → 42,36
* Handle INT2 interrupts that occur on changing edges of ppm signal
*/
ISR(INT2_vect) {
// since the pin might get bogus reads we wait for 123 signals
static uint8_t valid_ppm_to_go = 123;
if (EMCUCR & (1<<ISC2)) { // rising
old_timer1 = TCNT1;
EMCUCR &= ~(1<<ISC2); // next one is falling
} else {
if (valid_ppm_to_go) {
valid_ppm_to_go--;
} else {
ppm = TCNT1 - old_timer1;
ppm -= 256;
if (ppm < 128) { // we want HUD
if (!(COSD_FLAGS_MODES & COSD_FLAG_HUD)) {
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
COSD_FLAGS_MODES |= COSD_FLAG_HUD;
} else { // we do not want hud
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
clear();
}
COSD_FLAGS_MODES &= ~COSD_FLAG_HUD;
}
}
EMCUCR |= (1<<ISC2); // next one is rising
}
//write_ndigit_number_u(2, 5, ppm, 1000, 0); // debug
//write_ndigit_number_u(2, 6, valid_ppm_to_go, 100, 0); // debug
//write_ndigit_number_u(2, 7, COSD_FLAGS_CONFIG, 100, 0); // debug
PORTC ^= (1 << PC3);
uptime = ppm;
// since the pin might get bogus reads we wait for 123 signals
static uint8_t valid_ppm_to_go = 123;
if (EMCUCR & (1 << ISC2)) { // rising
old_timer1 = TCNT1;
EMCUCR &= ~(1 << ISC2); // next one is falling
} else {
if (valid_ppm_to_go) {
valid_ppm_to_go--;
} else {
ppm = TCNT1 - old_timer1;
ppm -= 256;
if (ppm < 128) { // we want HUD
if (!(COSD_FLAGS_MODES & COSD_FLAG_HUD)) {
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
COSD_FLAGS_MODES |= COSD_FLAG_HUD;
} else { // we do not want hud
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
clear();
}
COSD_FLAGS_MODES &= ~COSD_FLAG_HUD;
}
}
EMCUCR |= (1 << ISC2); // next one is rising
}
//write_ndigit_number_u(2, 5, ppm, 1000, 0); // debug
//write_ndigit_number_u(2, 6, valid_ppm_to_go, 100, 0); // debug
//write_ndigit_number_u(2, 7, COSD_FLAGS_CONFIG, 100, 0); // debug
PORTC ^= (1 << PC3);
uptime = ppm;
}
 
#endif
/C-OSD/trunk/spi.c
50,17 → 50,16
//sei(); // we do it later
}
 
 
/**
* SPI interrupt handler
*/
ISR(SPI_STC_vect) {
if (request_count == 0) {
SPI_buffer.buffer.chk = SPDR; // firs char received is check byte from last transfer
} else {
SPI_buffer.buffer.c[request_count - 1] = SPDR; // safe received byte to buffer
}
request_count++;
if (request_count == 0) {
SPI_buffer.buffer.chk = SPDR; // firs char received is check byte from last transfer
} else {
SPI_buffer.buffer.c[request_count - 1] = SPDR; // safe received byte to buffer
}
request_count++;
if (--icnt) {
//SPDR = *iptr; // send next byte
spi_ready = 1; // we _should_ send later because the slave needs more time
83,14 → 82,14
void StartTransfer(uint16_t len) {
INT0_LOW // /SS LOW ^= SS HIGH ^= slave should listen
 
// this is a new request
request_count = 0;
// this is a new request
request_count = 0;
 
// set up pointer and length for interrupt handler
icnt = len;
 
SPCR |= _BV(SPIE); // enable spi interrupt
SPDR = 'A'; // start transfer by first command char
SPDR = 'A'; // start transfer by first command char
}
 
/**
97,7 → 96,7
* send next command through spi
*/
void spi_send_next() {
SPDR = 'A' + request_count;
SPDR = 'A' + request_count;
}
 
#endif
/C-OSD/trunk/spi.h
22,19 → 22,19
* structs 'n union for easy SPI transfer
*/
typedef struct {
int16_t ampere;
int32_t mah;
int16_t volt;
int16_t ampere;
int32_t mah;
int16_t volt;
} __attribute__((packed)) SPI_strom_data_t;
 
typedef struct {
uint8_t c[10];
uint8_t chk;
uint8_t c[10];
uint8_t chk;
} __attribute__((packed)) SPI_char_buffer_t;
 
union SPI_buffer_t {
SPI_strom_data_t data;
SPI_char_buffer_t buffer;
SPI_strom_data_t data;
SPI_char_buffer_t buffer;
};
 
volatile union SPI_buffer_t SPI_buffer;
/C-OSD/trunk/usart1.c
89,17 → 89,16
s++;
}
}*/
 
 
/**
* send a PGM<string> throught usart1
*/
void usart1_puts_pgm(const char* string) {
while (pgm_read_byte(string) != 0x00)
usart1_putc(pgm_read_byte(string++));
}
 
/**
* send a PGM<string> throught usart1
*/
void usart1_puts_pgm(const char* string) {
while (pgm_read_byte(string) != 0x00)
usart1_putc(pgm_read_byte(string++));
}
 
/**
* transmit interrupt handler
* unused
*/
123,26 → 122,27
static uint8_t usart_rx_ok = 0;
uint8_t crc1, crc2;
// the rxd buffer is unlocked
if (usart_rx_ok == 0) {
// if ((c2 == '#') && (c1 == 'b' || c1 == 'c') && (c == 'D' || c == 'V' || c == 'O')) {
if ((c2 == '#') && (c1 == 'b' || c1 == 'c') &&
#if FCONLY
(c == 'V' || c == 'D')) { // version and debug
#else
(c == 'V' || c == 'O')) { // version and OSD
#endif
usart_rx_ok = 1;
rxd_buffer[ptr_rxd_buffer++] = c2;
crc = c2;
rxd_buffer[ptr_rxd_buffer++] = c1;
crc += c1;
rxd_buffer[ptr_rxd_buffer++] = c;
crc += c;
c2 = 0;
c1 = 0;
LED1_ON
LED2_OFF
} else {
if (usart_rx_ok == 0) {
// if ((c2 == '#') && (c1 == 'b' || c1 == 'c') && (c == 'D' || c == 'V' || c == 'O')) {
 
if ((c2 == '#') && (c1 == 'b' || c1 == 'c') &&
#if FCONLY
(c == 'V' || c == 'D')) { // version and debug
#else
(c == 'V' || c == 'O')) { // version and OSD
#endif
usart_rx_ok = 1;
rxd_buffer[ptr_rxd_buffer++] = c2;
crc = c2;
rxd_buffer[ptr_rxd_buffer++] = c1;
crc += c1;
rxd_buffer[ptr_rxd_buffer++] = c;
crc += c;
c2 = 0;
c1 = 0;
LED1_ON
LED2_OFF
} else {
c2 = c1;
c1 = c;
}