From 1d5e3515e8fa0ad3df187d84262a1d74d2e86ba2 Mon Sep 17 00:00:00 2001 From: CodeCrafter912 Date: Sat, 7 Jul 2018 19:17:51 +0200 Subject: [PATCH] added oled lib --- .../SSD1306Ascii-master/.gitattributes | 17 + Arduino_Libs/SSD1306Ascii-master/.gitignore | 43 + Arduino_Libs/SSD1306Ascii-master/README.md | 25 + .../SSD1306Ascii-master/doc/5x7fonts.pdf | Bin 0 -> 25207 bytes .../doc/MainPage/SSD1306mainpage.h | 252 +++ .../SSD1306Ascii-master/doc/SSD1306Ascii.html | 10 + .../doc/html/_avr_i2c_8h.html | 234 +++ .../doc/html/_avr_i2c_8h__dep__incl.png | Bin 0 -> 2443 bytes .../doc/html/_avr_i2c_8h__incl.png | Bin 0 -> 1822 bytes .../doc/html/_digital_output_8h.html | 110 ++ .../html/_digital_output_8h__dep__incl.png | Bin 0 -> 2543 bytes .../doc/html/_digital_output_8h__incl.png | Bin 0 -> 1924 bytes .../doc/html/_s_s_d1306_ascii_8h.html | 285 +++ .../html/_s_s_d1306_ascii_8h__dep__incl.png | Bin 0 -> 9561 bytes .../doc/html/_s_s_d1306_ascii_8h__incl.png | Bin 0 -> 5071 bytes .../doc/html/_s_s_d1306_ascii_avr_i2c_8h.html | 106 ++ .../_s_s_d1306_ascii_avr_i2c_8h__incl.png | Bin 0 -> 8792 bytes .../html/_s_s_d1306_ascii_soft_spi_8h.html | 106 ++ .../_s_s_d1306_ascii_soft_spi_8h__incl.png | Bin 0 -> 9424 bytes .../doc/html/_s_s_d1306_ascii_spi_8h.html | 105 ++ .../html/_s_s_d1306_ascii_spi_8h__incl.png | Bin 0 -> 7275 bytes .../doc/html/_s_s_d1306_ascii_wire_8h.html | 105 ++ .../html/_s_s_d1306_ascii_wire_8h__incl.png | Bin 0 -> 7461 bytes .../doc/html/_s_s_d1306init_8h.html | 792 ++++++++ .../doc/html/_s_s_d1306init_8h__dep__incl.png | Bin 0 -> 11590 bytes .../doc/html/annotated.html | 88 + .../SSD1306Ascii-master/doc/html/bc_s.png | Bin 0 -> 676 bytes .../SSD1306Ascii-master/doc/html/bdwn.png | Bin 0 -> 147 bytes .../doc/html/class_avr_i2c-members.html | 86 + .../doc/html/class_avr_i2c.html | 343 ++++ .../html/class_digital_output-members.html | 81 + .../doc/html/class_digital_output.html | 168 ++ .../html/class_s_s_d1306_ascii-members.html | 117 ++ .../doc/html/class_s_s_d1306_ascii.html | 1117 ++++++++++++ .../class_s_s_d1306_ascii__coll__graph.png | Bin 0 -> 1236 bytes .../class_s_s_d1306_ascii__inherit__graph.png | Bin 0 -> 8296 bytes ...class_s_s_d1306_ascii_avr_i2c-members.html | 119 ++ .../html/class_s_s_d1306_ascii_avr_i2c.html | 1394 ++++++++++++++ ...s_s_s_d1306_ascii_avr_i2c__coll__graph.png | Bin 0 -> 2148 bytes ..._s_d1306_ascii_avr_i2c__inherit__graph.png | Bin 0 -> 2148 bytes ...lass_s_s_d1306_ascii_soft_spi-members.html | 119 ++ .../html/class_s_s_d1306_ascii_soft_spi.html | 1435 +++++++++++++++ ..._s_s_d1306_ascii_soft_spi__coll__graph.png | Bin 0 -> 2199 bytes ...s_d1306_ascii_soft_spi__inherit__graph.png | Bin 0 -> 2199 bytes .../class_s_s_d1306_ascii_spi-members.html | 119 ++ .../doc/html/class_s_s_d1306_ascii_spi.html | 1407 +++++++++++++++ ...class_s_s_d1306_ascii_spi__coll__graph.png | Bin 0 -> 2081 bytes ...ss_s_s_d1306_ascii_spi__inherit__graph.png | Bin 0 -> 2081 bytes .../class_s_s_d1306_ascii_wire-members.html | 120 ++ .../doc/html/class_s_s_d1306_ascii_wire.html | 1397 +++++++++++++++ ...lass_s_s_d1306_ascii_wire__coll__graph.png | Bin 0 -> 2110 bytes ...s_s_s_d1306_ascii_wire__inherit__graph.png | Bin 0 -> 2110 bytes .../SSD1306Ascii-master/doc/html/classes.html | 88 + .../SSD1306Ascii-master/doc/html/closed.png | Bin 0 -> 132 bytes .../doc/html/dir_000005_000006.html | 76 + .../dir_481cc946b8a81b8d9363a4aad6201160.html | 90 + ...r_481cc946b8a81b8d9363a4aad6201160_dep.png | Bin 0 -> 1433 bytes .../dir_517b237d4747437c31f65ca648893511.html | 90 + .../dir_520de49418287da36eb793ef32ea6307.html | 97 + ...r_520de49418287da36eb793ef32ea6307_dep.png | Bin 0 -> 1499 bytes .../dir_5ce56dff155b426144e2267e6314e254.html | 84 + .../dir_a991eec27578c865874ede3d8ec657c2.html | 89 + ...r_a991eec27578c865874ede3d8ec657c2_dep.png | Bin 0 -> 867 bytes .../dir_f407cfa5a083ea3a86bed2005dcb9a5e.html | 80 + .../dir_f52a68bbba56f2c8881f0d9135f8ef6d.html | 116 ++ ...r_f52a68bbba56f2c8881f0d9135f8ef6d_dep.png | Bin 0 -> 1924 bytes .../SSD1306Ascii-master/doc/html/doc.png | Bin 0 -> 746 bytes .../SSD1306Ascii-master/doc/html/doxygen.css | 1596 +++++++++++++++++ .../SSD1306Ascii-master/doc/html/doxygen.png | Bin 0 -> 3779 bytes .../doc/html/dynsections.js | 120 ++ .../SSD1306Ascii-master/doc/html/files.html | 93 + .../doc/html/folderclosed.png | Bin 0 -> 616 bytes .../doc/html/folderopen.png | Bin 0 -> 597 bytes .../doc/html/functions.html | 264 +++ .../doc/html/functions_func.html | 249 +++ .../doc/html/functions_vars.html | 89 + .../SSD1306Ascii-master/doc/html/globals.html | 249 +++ .../doc/html/globals_defs.html | 193 ++ .../doc/html/globals_func.html | 77 + .../doc/html/globals_vars.html | 119 ++ .../doc/html/graph_legend.html | 105 ++ .../doc/html/graph_legend.png | Bin 0 -> 13883 bytes .../doc/html/hierarchy.html | 91 + .../SSD1306Ascii-master/doc/html/index.html | 178 ++ .../doc/html/inherit_graph_0.png | Bin 0 -> 356 bytes .../doc/html/inherit_graph_1.png | Bin 0 -> 391 bytes .../doc/html/inherit_graph_2.png | Bin 0 -> 452 bytes .../doc/html/inherit_graph_3.png | Bin 0 -> 5571 bytes .../doc/html/inherits.html | 104 ++ .../SSD1306Ascii-master/doc/html/jquery.js | 115 ++ .../SSD1306Ascii-master/doc/html/menu.js | 50 + .../SSD1306Ascii-master/doc/html/menudata.js | 71 + .../SSD1306Ascii-master/doc/html/nav_f.png | Bin 0 -> 153 bytes .../SSD1306Ascii-master/doc/html/nav_g.png | Bin 0 -> 95 bytes .../SSD1306Ascii-master/doc/html/nav_h.png | Bin 0 -> 98 bytes .../SSD1306Ascii-master/doc/html/open.png | Bin 0 -> 123 bytes .../doc/html/search/all_0.html | 30 + .../doc/html/search/all_0.js | 10 + .../doc/html/search/all_1.html | 30 + .../doc/html/search/all_1.js | 4 + .../doc/html/search/all_2.html | 30 + .../doc/html/search/all_2.js | 9 + .../doc/html/search/all_3.html | 30 + .../doc/html/search/all_3.js | 10 + .../doc/html/search/all_4.html | 30 + .../doc/html/search/all_4.js | 10 + .../doc/html/search/all_5.html | 30 + .../doc/html/search/all_5.js | 4 + .../doc/html/search/all_6.html | 30 + .../doc/html/search/all_6.js | 9 + .../doc/html/search/all_7.html | 30 + .../doc/html/search/all_7.js | 6 + .../doc/html/search/all_8.html | 30 + .../doc/html/search/all_8.js | 7 + .../doc/html/search/all_9.html | 30 + .../doc/html/search/all_9.js | 6 + .../doc/html/search/all_a.html | 30 + .../doc/html/search/all_a.js | 6 + .../doc/html/search/all_b.html | 30 + .../doc/html/search/all_b.js | 64 + .../doc/html/search/all_c.html | 30 + .../doc/html/search/all_c.js | 8 + .../doc/html/search/all_d.html | 30 + .../doc/html/search/all_d.js | 4 + .../doc/html/search/classes_0.html | 30 + .../doc/html/search/classes_0.js | 4 + .../doc/html/search/classes_1.html | 30 + .../doc/html/search/classes_1.js | 5 + .../doc/html/search/classes_2.html | 30 + .../doc/html/search/classes_2.js | 8 + .../doc/html/search/close.png | Bin 0 -> 273 bytes .../doc/html/search/defines_0.html | 30 + .../doc/html/search/defines_0.js | 4 + .../doc/html/search/defines_1.html | 30 + .../doc/html/search/defines_1.js | 4 + .../doc/html/search/defines_2.html | 30 + .../doc/html/search/defines_2.js | 5 + .../doc/html/search/defines_3.html | 30 + .../doc/html/search/defines_3.js | 34 + .../doc/html/search/files_0.html | 30 + .../doc/html/search/files_0.js | 4 + .../doc/html/search/files_1.html | 30 + .../doc/html/search/files_1.js | 4 + .../doc/html/search/files_2.html | 30 + .../doc/html/search/files_2.js | 9 + .../doc/html/search/functions_0.html | 30 + .../doc/html/search/functions_0.js | 4 + .../doc/html/search/functions_1.html | 30 + .../doc/html/search/functions_1.js | 8 + .../doc/html/search/functions_2.html | 30 + .../doc/html/search/functions_2.js | 7 + .../doc/html/search/functions_3.html | 30 + .../doc/html/search/functions_3.js | 10 + .../doc/html/search/functions_4.html | 30 + .../doc/html/search/functions_4.js | 4 + .../doc/html/search/functions_5.html | 30 + .../doc/html/search/functions_5.js | 4 + .../doc/html/search/functions_6.html | 30 + .../doc/html/search/functions_6.js | 4 + .../doc/html/search/functions_7.html | 30 + .../doc/html/search/functions_7.js | 4 + .../doc/html/search/functions_8.html | 30 + .../doc/html/search/functions_8.js | 4 + .../doc/html/search/functions_9.html | 30 + .../doc/html/search/functions_9.js | 6 + .../doc/html/search/functions_a.html | 30 + .../doc/html/search/functions_a.js | 20 + .../doc/html/search/functions_b.html | 30 + .../doc/html/search/functions_b.js | 4 + .../doc/html/search/mag_sel.png | Bin 0 -> 563 bytes .../doc/html/search/nomatches.html | 12 + .../doc/html/search/pages_0.html | 30 + .../doc/html/search/pages_0.js | 4 + .../doc/html/search/search.css | 271 +++ .../doc/html/search/search.js | 814 +++++++++ .../doc/html/search/search_l.png | Bin 0 -> 604 bytes .../doc/html/search/search_m.png | Bin 0 -> 158 bytes .../doc/html/search/search_r.png | Bin 0 -> 612 bytes .../doc/html/search/searchdata.js | 33 + .../doc/html/search/variables_0.html | 30 + .../doc/html/search/variables_0.js | 7 + .../doc/html/search/variables_1.html | 30 + .../doc/html/search/variables_1.js | 4 + .../doc/html/search/variables_2.html | 30 + .../doc/html/search/variables_2.js | 7 + .../doc/html/search/variables_3.html | 30 + .../doc/html/search/variables_3.js | 5 + .../doc/html/search/variables_4.html | 30 + .../doc/html/search/variables_4.js | 5 + .../doc/html/search/variables_5.html | 30 + .../doc/html/search/variables_5.js | 5 + .../doc/html/search/variables_6.html | 30 + .../doc/html/search/variables_6.js | 8 + .../SSD1306Ascii-master/doc/html/splitbar.png | Bin 0 -> 314 bytes .../doc/html/struct_dev_type-members.html | 84 + .../doc/html/struct_dev_type.html | 179 ++ .../SSD1306Ascii-master/doc/html/sync_off.png | Bin 0 -> 853 bytes .../SSD1306Ascii-master/doc/html/sync_on.png | Bin 0 -> 845 bytes .../SSD1306Ascii-master/doc/html/tab_a.png | Bin 0 -> 142 bytes .../SSD1306Ascii-master/doc/html/tab_b.png | Bin 0 -> 169 bytes .../SSD1306Ascii-master/doc/html/tab_h.png | Bin 0 -> 177 bytes .../SSD1306Ascii-master/doc/html/tab_s.png | Bin 0 -> 184 bytes .../SSD1306Ascii-master/doc/html/tabs.css | 1 + .../SSD1306Ascii-master/doc/sd1306test.jpg | Bin 0 -> 333088 bytes .../SSD1306Ascii-master/doc/ssd1306sample.jpg | Bin 0 -> 306799 bytes .../examples/AvrI2c128x32/AvrI2c128x32.ino | 42 + .../examples/AvrI2c128x64/AvrI2c128x64.ino | 37 + .../DisplayRotationSpi/DisplayRotationSpi.ino | 30 + .../DisplayRotationWire.ino | 36 + .../FontSamplesSpi/FontSamplesSpi.ino | 86 + .../FontSamplesWire/FontSamplesWire.ino | 93 + .../HelloWorldAvrI2c/HelloWorldAvrI2c.ino | 27 + .../HelloWorldSH1106Spi.ino | 23 + .../HelloWorldSoftSpi/HelloWorldSoftSpi.ino | 25 + .../examples/HelloWorldSpi/HelloWorldSpi.ino | 23 + .../HelloWorldWire/HelloWorldWire.ino | 30 + .../LetterSpacingSpi/LetterSpacingSpi.ino | 24 + .../LetterSpacingWire/LetterSpacingWire.ino | 32 + .../ProportionalFormSpi.ino | 73 + .../ProportionalFormWire.ino | 78 + .../examples/ScrollingSpi/ScrollingSpi.ino | 41 + .../examples/ScrollingWire/ScrollingWire.ino | 48 + .../SixAdcFieldsSpi/SixAdcFieldsSpi.ino | 42 + .../SixAdcFieldsWire/SixAdcFieldsWire.ino | 51 + .../examples/SoftSpi128x32/SoftSpi128x32.ino | 28 + .../examples/SoftSpi128x64/SoftSpi128x64.ino | 33 + .../examples/Spi128x32/Spi128x32.ino | 28 + .../examples/Spi128x64/Spi128x64.ino | 33 + .../Spi128x64SH1106/Spi128x64SH1106.ino | 23 + .../examples/WireI2c128x32/WireI2c128x32.ino | 42 + .../examples/WireI2c128x64/WireI2c128x64.ino | 39 + .../examples/cmp5x7Fonts/cmp5x7Fonts.ino | 113 ++ .../examples/print5x7Fonts/print5x7Fonts.ino | 73 + .../SSD1306Ascii-master/library.properties | 9 + .../SSD1306Ascii-master/src/SSD1306Ascii.cpp | 277 +++ .../SSD1306Ascii-master/src/SSD1306Ascii.h | 319 ++++ .../src/SSD1306AsciiAvrI2c.h | 84 + .../src/SSD1306AsciiSoftSpi.h | 86 + .../SSD1306Ascii-master/src/SSD1306AsciiSpi.h | 139 ++ .../src/SSD1306AsciiWire.h | 97 + .../SSD1306Ascii-master/src/SSD1306init.h | 232 +++ .../src/fonts/Adafruit5x7.h | 276 +++ .../SSD1306Ascii-master/src/fonts/Arial14.h | 168 ++ .../src/fonts/Arial_bold_14.h | 162 ++ .../SSD1306Ascii-master/src/fonts/CalBlk36.h | 184 ++ .../SSD1306Ascii-master/src/fonts/CalLite24.h | 182 ++ .../src/fonts/Callibri10.h | 161 ++ .../src/fonts/Callibri11.h | 162 ++ .../src/fonts/Callibri11_bold.h | 161 ++ .../src/fonts/Callibri11_italic.h | 161 ++ .../src/fonts/Callibri14.h | 163 ++ .../src/fonts/Callibri15.h | 161 ++ .../SSD1306Ascii-master/src/fonts/Cooper19.h | 162 ++ .../SSD1306Ascii-master/src/fonts/Cooper21.h | 162 ++ .../SSD1306Ascii-master/src/fonts/Cooper26.h | 162 ++ .../src/fonts/Corsiva_12.h | 162 ++ .../SSD1306Ascii-master/src/fonts/Iain5x7.h | 175 ++ .../src/fonts/Roosewood22.h | 162 ++ .../src/fonts/Roosewood26.h | 162 ++ .../SSD1306Ascii-master/src/fonts/Stang5x7.h | 124 ++ .../SSD1306Ascii-master/src/fonts/System5x7.h | 148 ++ .../src/fonts/SystemFont5x7.h | 16 + .../src/fonts/TimesNewRoman13.h | 162 ++ .../src/fonts/TimesNewRoman13_italic.h | 162 ++ .../src/fonts/TimesNewRoman16.h | 162 ++ .../src/fonts/TimesNewRoman16_bold.h | 161 ++ .../src/fonts/TimesNewRoman16_italic.h | 161 ++ .../SSD1306Ascii-master/src/fonts/Verdana12.h | 161 ++ .../src/fonts/Verdana12_bold.h | 161 ++ .../src/fonts/Verdana12_italic.h | 161 ++ .../src/fonts/Verdana_digits_24.h | 116 ++ .../SSD1306Ascii-master/src/fonts/Wendy3x5.h | 146 ++ .../src/fonts/X11fixed7x14.h | 114 ++ .../src/fonts/X11fixed7x14B.h | 113 ++ .../src/fonts/ZevvPeep8x16.h | 109 ++ .../SSD1306Ascii-master/src/fonts/allFonts.h | 105 ++ .../src/fonts/cp437font8x8.h | 284 +++ .../src/fonts/fixed_bold10x15.h | 115 ++ .../src/fonts/fixednums15x31.h | 123 ++ .../src/fonts/fixednums7x15.h | 88 + .../src/fonts/fixednums8x16.h | 46 + .../SSD1306Ascii-master/src/fonts/font5x7.h | 108 ++ .../SSD1306Ascii-master/src/fonts/font8x8.h | 113 ++ .../SSD1306Ascii-master/src/fonts/lcd5x7.h | 117 ++ .../src/fonts/lcdnums12x16.h | 69 + .../src/fonts/lcdnums14x24.h | 87 + .../src/fonts/newbasic3x5.h | 162 ++ .../src/fonts/utf8font10x16.h | 308 ++++ .../SSD1306Ascii-master/src/utility/AvrI2c.h | 147 ++ .../src/utility/DigitalOutput.h | 100 ++ tests/OLED_TEST/OLED_TEST.ino | 22 +- tests/Startsignal_Test/Startsignal_Test.ino | 3 +- 292 files changed, 27692 insertions(+), 15 deletions(-) create mode 100644 Arduino_Libs/SSD1306Ascii-master/.gitattributes create mode 100644 Arduino_Libs/SSD1306Ascii-master/.gitignore create mode 100644 Arduino_Libs/SSD1306Ascii-master/README.md create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/5x7fonts.pdf create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/MainPage/SSD1306mainpage.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/SSD1306Ascii.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__dep__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__dep__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__dep__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_avr_i2c_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_avr_i2c_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_soft_spi_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_soft_spi_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_wire_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_wire_8h__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h__dep__incl.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/annotated.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/bc_s.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/bdwn.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_avr_i2c-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_avr_i2c.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__coll__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__inherit__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__coll__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__inherit__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi__coll__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi__inherit__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__coll__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__inherit__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__coll__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__inherit__graph.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/classes.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/closed.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_000005_000006.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_517b237d4747437c31f65ca648893511.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307_dep.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_5ce56dff155b426144e2267e6314e254.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f407cfa5a083ea3a86bed2005dcb9a5e.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d_dep.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/doc.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.css create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/dynsections.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/files.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/folderclosed.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/folderopen.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/functions.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/functions_func.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/functions_vars.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/globals.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/globals_defs.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/globals_func.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/globals_vars.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/hierarchy.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/index.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_0.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_1.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_2.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_3.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/inherits.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/jquery.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/menu.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/menudata.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/nav_f.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/nav_g.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/nav_h.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/open.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_3.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_3.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_4.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_4.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_5.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_5.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_6.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_6.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_7.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_7.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_8.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_8.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_9.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_9.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_a.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_a.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_b.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_b.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_c.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_c.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_d.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/all_d.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/classes_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/close.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_3.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/defines_3.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/files_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_3.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_3.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_4.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_4.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_5.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_5.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_6.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_6.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_7.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_7.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_8.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_8.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_9.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_9.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_a.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_a.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_b.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/functions_b.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/mag_sel.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/nomatches.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/pages_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/pages_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/search.css create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/search.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/search_l.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/search_m.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/search_r.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/searchdata.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_0.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_0.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_1.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_1.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_2.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_2.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_3.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_3.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_4.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_4.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_5.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_5.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_6.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/search/variables_6.js create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/splitbar.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/struct_dev_type-members.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/struct_dev_type.html create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/sync_off.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/sync_on.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/tab_a.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/tab_b.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/tab_h.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/tab_s.png create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/html/tabs.css create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/sd1306test.jpg create mode 100644 Arduino_Libs/SSD1306Ascii-master/doc/ssd1306sample.jpg create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/AvrI2c128x32/AvrI2c128x32.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/AvrI2c128x64/AvrI2c128x64.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationSpi/DisplayRotationSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationWire/DisplayRotationWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesSpi/FontSamplesSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesWire/FontSamplesWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldAvrI2c/HelloWorldAvrI2c.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSH1106Spi/HelloWorldSH1106Spi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSoftSpi/HelloWorldSoftSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSpi/HelloWorldSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldWire/HelloWorldWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingSpi/LetterSpacingSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingWire/LetterSpacingWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormSpi/ProportionalFormSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormWire/ProportionalFormWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/ScrollingSpi/ScrollingSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/ScrollingWire/ScrollingWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsSpi/SixAdcFieldsSpi.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsWire/SixAdcFieldsWire.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x32/SoftSpi128x32.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x64/SoftSpi128x64.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/Spi128x32/Spi128x32.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64/Spi128x64.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64SH1106/Spi128x64SH1106.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x32/WireI2c128x32.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x64/WireI2c128x64.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/cmp5x7Fonts/cmp5x7Fonts.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/examples/print5x7Fonts/print5x7Fonts.ino create mode 100644 Arduino_Libs/SSD1306Ascii-master/library.properties create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.cpp create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiAvrI2c.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSoftSpi.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSpi.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiWire.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/SSD1306init.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Adafruit5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial14.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial_bold_14.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/CalBlk36.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/CalLite24.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri10.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_bold.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_italic.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri14.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri15.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper19.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper21.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper26.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Corsiva_12.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Iain5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood22.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood26.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Stang5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/System5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/SystemFont5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13_italic.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_bold.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_italic.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_bold.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_italic.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana_digits_24.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/Wendy3x5.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14B.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/ZevvPeep8x16.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/allFonts.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/cp437font8x8.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/fixed_bold10x15.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums15x31.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums7x15.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums8x16.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/font5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/font8x8.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/lcd5x7.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums12x16.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums14x24.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/newbasic3x5.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/fonts/utf8font10x16.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/utility/AvrI2c.h create mode 100644 Arduino_Libs/SSD1306Ascii-master/src/utility/DigitalOutput.h diff --git a/Arduino_Libs/SSD1306Ascii-master/.gitattributes b/Arduino_Libs/SSD1306Ascii-master/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/Arduino_Libs/SSD1306Ascii-master/.gitignore b/Arduino_Libs/SSD1306Ascii-master/.gitignore new file mode 100644 index 0000000..96374c4 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/.gitignore @@ -0,0 +1,43 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/Arduino_Libs/SSD1306Ascii-master/README.md b/Arduino_Libs/SSD1306Ascii-master/README.md new file mode 100644 index 0000000..1748008 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/README.md @@ -0,0 +1,25 @@ +SSD1306Ascii is an unbuffered character only library for small OLED +displays like the Adafruit 1.3" and 0.96" Monochrome displays. + +Many low cost OLED displays with SSD1306 controllers are available on ebay. + +SSD1306Ascii runs on Arduino AVR boards, Arduino Due and many other +Arduino style boards that have the SPI or Wire library. + +The SSD1306Ascii library only requires a few bytes of RAM. + +Here is memory use for the SPI "Hello world!" example with +scrolling disabled: + +Sketch uses 2,938 bytes (9%) of program storage space. +Maximum is 32,256 bytes. + +Global variables use 58 bytes (2%) of dynamic memory, leaving 1,995 +bytes for local variables. Maximum is 2,048 bytes. + + + + + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/5x7fonts.pdf b/Arduino_Libs/SSD1306Ascii-master/doc/5x7fonts.pdf new file mode 100644 index 0000000000000000000000000000000000000000..03cce0257476bef031fb970c7515d021ea0fab0b GIT binary patch literal 25207 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 K5-7r7mHr=1G%HsC literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/MainPage/SSD1306mainpage.h b/Arduino_Libs/SSD1306Ascii-master/doc/MainPage/SSD1306mainpage.h new file mode 100644 index 0000000..d442940 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/MainPage/SSD1306mainpage.h @@ -0,0 +1,252 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ + +/** +@mainpage Arduino %SSD1306Ascii Library +
Copyright © 2015 by William Greiman +
+ +@section Intro Introduction + +This library is in early development so the API and features may change. +The library is likely to have bugs and be unstable. The purpose for this +release is to get feedback for future development. + +The Arduino %SSD1306Ascii Library is designed to display text on small +monochrome OLED displays. These displays are available on ebay at +very low cost. + +The library is being developed using 0.96" and 1.3" displays with SSD1306 +controllers. An initialization sequence for SH1106 controllers is included. + +There are many existing full featured graphics libraries for these displays. +The goal for this library is to only display text with minimum use of +RAM and flash. + +Here are key design goals: + +Small size is the highest priority. Speed and features are lower priority. + +Support multiple fonts. More than 40 fonts are included with this release. +Fonts are only loaded if you reference them. + +Support fixed width and proportional fonts. + +Optionally magnify fonts by a factor of two. + +Support 128x32 and 128x64 displays with I2C and SPI interfaces. + +Use the standard Wire library for I2C. An optimization option is +available to increase I2C performance. + +Use the standard SPI library for hardware SPI. An optimization option is +available for AVR to increase performance and reduce code size. + +Provide software SPI so the display can be connected to any digital pins. + +@section Install Installation + +You can manually install the %SSD1306Ascii library by copying the +%SSD1306Ascii folder from the download package to the Arduino libraries +folder in your sketch folder. + +See the Manual installation section of this guide. + +http://arduino.cc/en/Guide/Libraries + +The library will be added to the Arduino Library Manager soon. + +@section Scroll Scroll Mode + +Scroll mode causes the display to scroll up when a new line is written to +the display. + +Scroll mode is configured by editing SSD1306Ascii.h. + +If INCLUDE_SCROLLING is defined to be zero, new line will not scroll +the display and code for scrolling will not be included. This option +will save some code space and one byte of RAM. + +If INCLUDE_SCROLLING is defined to be one, the scroll feature will +be included but not enabled. A call to setScroll() will be required +to enable scrolling. + +If INCLUDE_SCROLLING is defined to be two, the scroll feature will +be included and enabled. A call to setScroll() will be required +to disable scrolling. + +Scroll mode is only supported on 64 pixel high displays. + +Call setScroll() to enable or disable scroll mode. + +Calls to setCursor(), setRow() and other cursor positioning functions +will be unpredictable in scroll mode. + +The clear() call will erase the display and start at the top of the display. + +See the ScrollSpi and ScrollWire examples. + +@section Fonts Fonts + +Fonts are defined by .h files in the SSD1306Ascii/src/fonts folder. The fonts +folder contains all fonts from openGLCD plus a number of extra fonts. + +To select a font, call the setFont() member function like this. +@code + // Select the font used in the Adafruit GFX Graphics Library. + oled.setFont(Adafruit5x7); +@endcode +Only fonts referenced in your program will be loaded into flash. + +Here are symbols for fixed width fonts. +@verbatim +Adafruit5x7 +cp437font8x8 +fixed_bold10x15 +fixednums15x31 +fixednums7x15 +fixednums8x16 +font5x7 +font8x8 +lcd5x7 +lcdnums12x16 +lcdnums14x24 +newbasic3x5 +Stang5x7 +System5x7 +Wendy3x5 +X11fixed7x14 +X11fixed7x14B +ZevvPeep8x16 +@endverbatim + +Here are symbols for proportional fonts. Note that Iain5x7 and utf8font10x16 +are proportional. +@verbatim +Arial14 +Arial_bold_14 +CalBlk36 +CalLite24 +Callibri10 +Callibri11 +Callibri11_bold +Callibri11_italic +Callibri14 +Callibri15 +Cooper19 +Cooper21 +Cooper26 +Corsiva_12 +Iain5x7 +Roosewood22 +Roosewood26 +TimesNewRoman13 +TimesNewRoman13_italic +TimesNewRoman16 +TimesNewRoman16_bold +TimesNewRoman16_italic +utf8font10x16 +Verdana12 +Verdana12_bold +Verdana12_italic +Verdana_digits_24 +@endverbatim + +See allFonts.h for more information on adding a font. + +The set2X() call doubles the size of characters. Each pixel becomes a +2x2 square. To return to standard size characters call set1X(); +@code + oled.set2X(); + // Display double height and width characters. + + ... + + // Return to standard size. + oled.set1X(); +@endcode + + +@section config SSD1306Ascii Configuration + +Several configuration options may be changed by editing the SSD1306Ascii.h +file in the SSD1306Ascii/src folder. + +These options are at the start of the file. + +@code +// Configuration options. +/* Set Scrolling mode for new line. + * + * If INCLUDE_SCROLLING is defined to be zero, new line will not scroll + * the display and code for scrolling will not be included. This option + * will save some code space and one byte of RAM. + * + * If INCLUDE_SCROLLING is defined to be one, the scroll feature will + * be included but not enabled. A call to setScroll() will be required + * to enable scrolling. + * + * If INCLUDE_SCROLLING is defined to be two, the scroll feature will + * be included and enabled. A call to setScroll() will be required + * to disable scrolling. + */ +#define INCLUDE_SCROLLING 1 + +/* Use larger faster I2C code. */ +#define OPTIMIZE_I2C 1 + +/* Define OPTIMIZE_AVR_SPI non-zero for a faster smaller AVR SPI code. + * Warning AVR will not use SPI transactions. + */ +#define OPTIMIZE_AVR_SPI 1 +@endcode + +@section Documentation Documentation + +Please see the Classes tab for more information. + +For I2C displays using the wire library Wire see the SSD1306AsciiWire class. + +For I2C displays using the small AvrI2c class see the SSD1306AsciiAvrI2c class. + +For SPI displays connected to the Arduino hardware SPI pins see the +SSD1306AsciiSpi class. + +See the SSD1306AsciiSoftSpi class for use of Software SPI. + + +@section comment Bugs and Comments + +If you wish to report bugs or have comments, open an issue on GitHub or +send email to fat16lib@sbcglobal.net. If possible, include a simple program +that illustrates the bug or problem. + + +@section ExampleS Examples + +A number of examples are provided in the SSD1306Ascii/examples folder. + +To access these examples from the Arduino development environment +go to: %File -> Examples -> %SSD1306Ascii -> \ + +Compile and upload to your Arduino to run the example. + + + */ diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/SSD1306Ascii.html b/Arduino_Libs/SSD1306Ascii-master/doc/SSD1306Ascii.html new file mode 100644 index 0000000..a01f20b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/SSD1306Ascii.html @@ -0,0 +1,10 @@ + + +A web page that points a browser to a different page + + + + +Your browser didn't automatically redirect. Open html/index.html manually. + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h.html new file mode 100644 index 0000000..d375f0f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h.html @@ -0,0 +1,234 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/utility/AvrI2c.h File Reference + + + + + + + + + +
+
+ +
+
AvrI2c.h File Reference
+
+
+ +

Small fast I2C class for AVR. +More...

+
#include <Arduino.h>
+
+Include dependency graph for AvrI2c.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+ + + + +

+Classes

class  AvrI2c
 Hardware I2C master class for AVR. More...
 
+ + + + + + + + + + + + + + + +

+Variables

uint8_t const I2C_READ = 1
 
uint8_t const I2C_WRITE = 0
 
uint8_t const TWSR_MRX_ADR_ACK = 0x40
 
uint8_t const TWSR_MTX_ADR_ACK = 0x18
 
uint8_t const TWSR_MTX_DATA_ACK = 0x28
 
uint8_t const TWSR_REP_START = 0x10
 
uint8_t const TWSR_START = 0x08
 
+

Detailed Description

+

Small fast I2C class for AVR.

+

Variable Documentation

+ +

◆ I2C_READ

+ +
+
+ + + + +
uint8_t const I2C_READ = 1
+
+

Bit to or with address for read start and read restart

+ +
+
+ +

◆ I2C_WRITE

+ +
+
+ + + + +
uint8_t const I2C_WRITE = 0
+
+

Bit to or with address for write start and write restart

+ +
+
+ +

◆ TWSR_MRX_ADR_ACK

+ +
+
+ + + + +
uint8_t const TWSR_MRX_ADR_ACK = 0x40
+
+

slave address plus read bit transmitted, ACK received

+ +
+
+ +

◆ TWSR_MTX_ADR_ACK

+ +
+
+ + + + +
uint8_t const TWSR_MTX_ADR_ACK = 0x18
+
+

slave address plus write bit transmitted, ACK received

+ +
+
+ +

◆ TWSR_MTX_DATA_ACK

+ +
+
+ + + + +
uint8_t const TWSR_MTX_DATA_ACK = 0x28
+
+

data transmitted, ACK received

+ +
+
+ +

◆ TWSR_REP_START

+ +
+
+ + + + +
uint8_t const TWSR_REP_START = 0x10
+
+

repeated start condition transmitted

+ +
+
+ +

◆ TWSR_START

+ +
+
+ + + + +
uint8_t const TWSR_START = 0x08
+
+

start condition transmitted

+ +
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__dep__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ae86bb52c2d717150ce937947d78c4883f717f0d GIT binary patch literal 2443 zcmcImi8mVv6Hm9Tqfc2!mAbyFAdadd6j_ugQ6;TKm8d$pQX<7hT1oI#4=EayBBW(C z38l#rw}y7>SgYE`oe*i&QH{vbMjTCj`hDN~cK?Cz&6}C`X5O3kd-I!_H$=Ff*ZzHn z_5lEZ{V;Fn*&WZ_(Od<&9qUvnDBf{$k*B<%fbDNm!KU8>02JL|&=WsiEf?`$X9I%| zJX;BnZOV6-+|(;y-ZSF)r@{9cdoK3g+?9WP7~rmVD=cv#Qb+YabyJB9rdj;^i;Ron9R8kJ^cLGbHu z%n)4T+fm3)?JOXBXW#(=j2CcShM5}+7kHfK>r62>(HYPX{KYxXyRm; zrtnu8#GYXibW;6AU<-N!9xr;@1}=(bWH#Fgb1y_KjQNHQ!lEGjqT}RfNzo@gb@DaK zijI;RDy5`$%qd>|a1gq`xv>$gc`tgBVmBSqY5R+~LzrxO7ad+lVH{^9F(kwy%%D}9 zvIjX6EXha!?YbOG>o^YSK(+(wam4ae4@8xk^iE|-{bnPgX$qrt0fi4HpDR^M5>|7X zbq9?~Z><49shsWHS*_fICdTi;AYns-5C+1$w zOnWi$cbw%Dql%UFl_*DN=PgRs4oBFvWy4=n{%U=F4=`l0?`gf)bP%a1d8T*zxdr!r zf$I@pLVD6=+psso?6lyP5kLA64w|J_r4|`#I ziKXKDy8nzw_kV;-kxAgt=3w0I9nl{UCY(!N-{pob1MKZ%@wE1JoCTG ztKn_w&QtL&=~d^e@^XygCZ0cMO&TU?fW{;QDeI8vgnmICl0Oc<3Ef1OIqc=Gqw#j} ztb9Ru*w11mx=18RSLfocU`DqSol)uA+~Lh9yMsP{{#-0GXF}exd-hg#C}%p|i1&e4Nd*zaf4p zc^maOd{v(uTRf0!a0i^TxD{5=;}q{o$`uleINeu9MWHSlq0VTIk4dSp!g4V6{rE&1 zSUos-NXs7!ylWgnn8WwoxHLT@O2Q`Ycdq~6?X(~WzW5Is3BA%=9uj_n3b5k~a9si9 zAzU}uaeTA;kM{ZEu-k_RpOaJFn8v#k6p<)L&WvKU!EiI80VLr za+vm==BMj?727Z)v7s1E6&LqLd2eFLVUXfMvxDs<7_sWWspI3BH_B}S=E|phC>mt} zX8rE`iokeN>XiCTbQ>sGe^C9bkX{X%X9#@z%}bf)jpkuLMOunRZ3>mhP~_p#6hET8 z0Z6K7S)EvMn%$SvQ$w);AzX4sI!$!;0V9aB7MOd?T+_M&1;}rMcD$9c1aqhj@CFGZ_Jmz!(3OWDQ{LzM_h7#@Q;bez)i;c>Ovc3WB zOYPdYuahQa8`S2OHZbYB2Vd7XjsQQiyLBdlB*^J@Q%MTUH$ks*Zhit??*tw|Qk%~t z>*Pf*k3UYDNA=jdEr%Xpv@+xs9b;%agwZYNNRL0B7Or=0fwSKmV$vGO9*DZvYfTJe zGAoQ@`wm*qTKiLcrF}GQc*GI7HZ{5B*mS$S5K`64gPV04``vR6M&6atYHR~pTNU&0 zVvs`@*@?dN=%P;Ca&_U+3xn-(%MQVm8q!+8Kv3YP2NokDQw|VDw5Ha@X`j|kEaWig z=ABGuI)xs?7SL8HN_Kp{naSu5jL4WMsl$ucC dzcBze@b)eaI~irh3;gsg0`v5PGTbAs{|i^1xB~zH literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_avr_i2c_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..dfde53ce9402c54075024a5850eec34e3cc5d11e GIT binary patch literal 1822 zcmcJQ`BxI?8plyjZezEZn$*l?2DOIFj#_GJU@2B^XyTGOl1Ah}`g~btTlVdR~A6cE6k|4z)-b47)?m`KMMazIFb^ z&`p2Oiha6Sj;fi3TLMtq<2Ll0xpLs1fJYa3kNpOTk9saAX`Qw;hq>%m$*TtJAqjN% z->3bgxhLRTX@Z&F57}y`Q(Pk|pEpHfBU2);f9%R|1}U~hr0uxvxHxP|g<8(POVy9S zC2KrUuhQ$#1)2y|@b@z%pk5b-T58+$GWVw(9+6JB1f0%t<*5Mpe13!lP|-9dkFe6O zNIer>rCUSOPugGbkX{Ru|T%B7+vY|oUpLi^d6g6ni$>N zjuwB$p*tZ#Wn+azm)TGn7RfY;In2sfQczw);!o?EcdPcM=WoH#Uit!4w*E>nfjxr_MKUMwsQ;L zUQYFrtd{Z*b4#PS0hc7+8c6}AT4B^&25g|uleY>XL@w6S?={5xi_hH)0F;O#}&r$VL-!i=qj7TEwf7%#CYM(LCO2d#DeXB@f%WTq|O+ z*?BL+6VzVJt<91+`p~y83yV^99CEoz47o0Co`Mg7p88Um4eg<)G`NwL5FezF#-4Cn9UR|!ay{{x%Z#;kAaw$A@Ot6fMf_8T;qKj{N*T>oHH zzmhc4<4EW&$$C(ia^NCY1O=04<=KZ)Y>eOe6-r0;s+anwGM>yGP8BU0Rx4nfL z)MgNB@%2%U$MM({#*Qwt?p_2>4SwuXUnZVmTjiV=;;UgT`)mIB~+v1bd~1kv;( zRG&s4BCXL=U!hs-Ayg?@{G$@^Y*X@bbec$e{3U%gJEfkGir9L%WS)zNud7nNX_~tB zj?>*9SULOTBcx_W-FVeWVj9jfb$>8m3jhNK4K&UwL{V$f%w7~m)zx@la&j^#1i24T z+ykN?HL(wa2U*GPPj>Gvb$dwd08#nQSnS5Koifg;=xpV1wr>ePGbwT&8zbiqk(`{R zzn4d5cHvfM+`?NH9<&;7Y;LD}>q&{c!UFE>!TOPsFS9om%zrz7bEfB4y(>d(W|^Y@ zwb#Kz3Nv@IdP42=@|8HYZc%pK@3{HcwWFfn>KV+`w<560nGk`b+9hLz2T`ul-`asqI8Q%9hKQ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h.html new file mode 100644 index 0000000..376c5ec --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h.html @@ -0,0 +1,110 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/utility/DigitalOutput.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
DigitalOutput.h File Reference
+
+
+ +

Faster version of digitalWrite(). +More...

+
#include <Arduino.h>
+
+Include dependency graph for DigitalOutput.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+ + + + +

+Classes

class  DigitalOutput
 Faster version of digitalWrite(). More...
 
+

Detailed Description

+

Faster version of digitalWrite().

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__dep__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fd45f142bb03b7945a884b0912caf968c8b880ec GIT binary patch literal 2543 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_digital_output_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f46d9825a2537fccc9fe3d26f6b929b5af885679 GIT binary patch literal 1924 zcmb_dc~sJg7AB{0P1DABrQ9Z4V zb*7lFh3{XDESnhk(sHyo4UU#PtQ{B}=wzvVNS{)7_+~cx*HJVz%YPp_)}e@!muDFW z#z*9s1o>DyTAyH(ZhT4HB}|SMcWriwK3>}K{6w^PokY5HG)CN&wN*151nMm?Xh~~h z1{Az?2ef>i#i3+Z?Z?5z@6V1+HK>#D9QUbLIF#+xL8ePvskRn zmJ{apz`teY7;o{))^*s6$nsA)$6jp8U2!DIC(4>uUd=^lPV=dW&43Ztf`27G^# zc*Txz)U~6283{9wE?YOE-wrJojR|i6F%AJv`cnY>*(trqc>eJ5TMJUt_;?cW?@+W4 zt~{c(0yyj(b2wm)KsM-GLt1a{;vB}#q{|aAZk!c`VjK6X61$~zMU`P|`QlO2%DQ~t zpy7k8-!fhfmDv!>&}n_C8EPjHOTnLX39Q9GCZ<=1RrAUjElsr9gNmvS#_V@%4_O8y zI^Y^68{|4#C)s}n(~q%0I>uRH!tTLz6ojg2zW8RSc`M`}dj1&as6#k}5y5#YM{P^F zUTD(JMnXz=k=5W46@tU=tkNZ*0xIWbYXVh;-{wPXH<53D%(48qbVMHM`RJQBgWP`7 zu9B1vC;xgO!V|MaWb!0br>~k|S_CjRYL1suFAslLJ9?Enrurr3;m3t@0sSjg-=+je zBTxxG({NCROZozn$Ky#0Q<$r3?RVq9OoAY?OdwkMx+doe-4V^XuFA_)fmtA-pEz;s z(h&9v&{r8wDn?%@#dg-8t$(k?7NtfR`oEW`LQ6ui{Y?WABRs2!NW#v|;LG=u2O2lJ zYwcb*1UO0S#=@{U(Cc<6eE zQ)N~`K>cb9z8M3!zg67js*RLGIsCL5e22xmc*r5*ZCFUf01% z&K0HGUMYX9P~1%Nb$wE9%9-C+Iaiq0S;8yDH_U}9Jd2JToS-|2lmeTebq|q9eAc_P zVS8om6lsu{&;*<0-#J{RR5^EBTJ#4mlWh<{$a=MO;FuG`eeY|sVCP<0Lrm;{h9X9T z1sTDarwLA4zEv0Q5H*=DxaO1*^1j<7T=1K97HV|DLpDa%u!Sw zN&x!db^A5@A~>Lhl4ve5*G|iD=2d3b9+!9HzcZ94zZU+r-zo#!2d7h zFK;XT<)msJn&u-pC|mltc5FWN2J;oYe-7HSojiY{jl4W?A3m6ud38f5l$Wn;q{-+l zz%xk*iISRNN zp?B89)$a2XitBFU0{B3V3(OHF?)LL$x45l&OL9a-ICUJY#288QicLtkw2kRdrI>B;`SB6(wO?$6__c+ta>DVna^zApI#ppr;;YA71w?g z!9bdL#s^i#WGmadAele$VK4*^WIMnd(YTD|=jGyQ0%{=~ifbjmdER>rl7B(AKa8I; zy=DGmBpmQhQ_TRPl~wx75U$2=)C`y_`@QVFg7pfzJ{R9v=EIJ)0)x5b%%xG&%j9)6>Wq=jb^!>^|xhu z+}#(fRN-}A{4{NPJohYViWw5dPXcOJvFgO@Q|;g6-hIIPxAyQ?srJ0{*uddX8#hKr zmb*WN!5&?6wUKE<5KfGSe^NOSaxpi6+cZu7*?ixNyAN@n=`G3JS9^Ew4ha4MF)F39 zEkNeGJKOqnz{>dXJ^0?TFFq01|HQ3T$N^ShEtH;&Y-(ykuAI(4zpi_Wsis~Ur)>V- lo9fehn_=+zkAaFC+qM)2>l|PyIQu_EP@aAWHtgKL{s4dDwO0TD literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h.html new file mode 100644 index 0000000..8d2e19d --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h.html @@ -0,0 +1,285 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306Ascii.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
SSD1306Ascii.h File Reference
+
+
+ +

Base class for ssd1306 displays. +More...

+
#include "Arduino.h"
+#include "SSD1306init.h"
+#include "fonts/allFonts.h"
+
+Include dependency graph for SSD1306Ascii.h:
+
+
+ + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+ + + + +

+Classes

class  SSD1306Ascii
 SSD1306 base class. More...
 
+ + + + + + + + + + + + + + + +

+Macros

#define INCLUDE_SCROLLING   1
 
#define OPTIMIZE_AVR_SPI   1
 
#define OPTIMIZE_I2C   1
 
#define SDD1306_ASCII_VERSION   1.1.0
 
#define SSD1306_MODE_CMD   0
 
#define SSD1306_MODE_RAM   1
 
#define SSD1306_MODE_RAM_BUF   2
 
+ + + + +

+Functions

void oledReset (uint8_t rst)
 Reset the display controller. More...
 
+

Detailed Description

+

Base class for ssd1306 displays.

+

Macro Definition Documentation

+ +

◆ INCLUDE_SCROLLING

+ +
+
+ + + + +
#define INCLUDE_SCROLLING   1
+
+

Set Scrolling mode for new line.

+

If INCLUDE_SCROLLING is defined to be zero, new line will not scroll the display and code for scrolling will not be included. This option will save some code space and one byte of RAM.

+

If INCLUDE_SCROLLING is defined to be one, the scroll feature will be included but not enabled. A call to setScroll() will be required to enable scrolling.

+

If INCLUDE_SCROLLING is defined to be two, the scroll feature will be included and enabled. A call to setScroll() will be required to disable scrolling.

+ +
+
+ +

◆ OPTIMIZE_AVR_SPI

+ +
+
+ + + + +
#define OPTIMIZE_AVR_SPI   1
+
+

Define OPTIMIZE_AVR_SPI non-zero for a faster smaller AVR SPI code. Warning AVR will not use SPI transactions.

+ +
+
+ +

◆ OPTIMIZE_I2C

+ +
+
+ + + + +
#define OPTIMIZE_I2C   1
+
+

Use larger faster I2C code.

+ +
+
+ +

◆ SDD1306_ASCII_VERSION

+ +
+
+ + + + +
#define SDD1306_ASCII_VERSION   1.1.0
+
+

SSD1306Ascii version

+ +
+
+ +

◆ SSD1306_MODE_CMD

+ +
+
+ + + + +
#define SSD1306_MODE_CMD   0
+
+

Write to Command register.

+ +
+
+ +

◆ SSD1306_MODE_RAM

+ +
+
+ + + + +
#define SSD1306_MODE_RAM   1
+
+

Write one byte to display RAM.

+ +
+
+ +

◆ SSD1306_MODE_RAM_BUF

+ +
+
+ + + + +
#define SSD1306_MODE_RAM_BUF   2
+
+

Write to display RAM with possible buffering.

+ +
+
+

Function Documentation

+ +

◆ oledReset()

+ +
+
+ + + + + +
+ + + + + + + + +
void oledReset (uint8_t rst)
+
+inline
+
+ +

Reset the display controller.

+
Parameters
+ + +
[in]rstReset pin number.
+
+
+ +
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__dep__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..a0659dbe90c970ea9a6fba794e69bd1e9769eef6 GIT binary patch literal 9561 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..df360ea00b14c12ac8435055e999a401251997a1 GIT binary patch literal 5071 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 v$;S>1;f%&t?xXLe + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306AsciiAvrI2c.h File Reference + + + + + + + + + + +
+ +
+
SSD1306AsciiAvrI2c.h File Reference
+
+
+ +

Class for I2C displays using AvrI2c. +More...

+
#include "utility/AvrI2c.h"
+#include "SSD1306Ascii.h"
+
+Include dependency graph for SSD1306AsciiAvrI2c.h:
+
+
+ + + + + +
+
+ + + + +

+Classes

class  SSD1306AsciiAvrI2c
 Class for I2C displays on AVR. More...
 
+

Detailed Description

+

Class for I2C displays using AvrI2c.

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_avr_i2c_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_avr_i2c_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..27414ef10fb9dddf7da185122c80ccd1d2502392 GIT binary patch literal 8792 zcmZv?1yoeg_b+}436T*{l zCX@|%x`eu6)&~uz%N(>eb^rohNg;+5E2Kzkv+^dKiUw;s(!kefqM~UNIW!tSZgEkH zwlJ&@LTnnflZ4PHlCk~Q1@e~AZ8r+wr)ufkOcyn|_IkA=Ix8ZMH0%VN zGZbtPLe;AKis8g$=ftqb_xOy1V;G-=VjG;%0uz%b;!zji0>SLg>BZB3Q~GWoIoKUj z-^$)pXY?*YF+6jc6Q|fG;%LqNh9^NY$(Eqz=CM~ z_sXgdbY;RSL(JV;6?*h`(aPb1XsO zHRZ8)(1&4bX*sp(UtPQr#$;kPx;>yp^ufVsi}{zv^rIAB6Jk&Pj|Lg5lk4>%dfTsl z>>}=O`lp&bAe$)Xh@1}j>`X#QBnQ;s9@J2TvXd}8x{9y5;)R{r<9+LV8qtq;dV zj{0|t!t~T;biT(b>D^Z}(AglLRmc4BqIcQrvzcT)GVT_?<M?k{Cr)`qS_;!g#ClF^pk>JUSm&1XUD(k zy4RadnKHWcPkpg-s2ZSNZxW;Cqq8!16CPw!^rM{eI6m(1S+ z$Ud6d^h@X-Vmg!L+FGUq-bH^JO?a6v!@{OsjDN+TK^wB1=LoHgG!uq@m9uuQw~1rC z3aUI!J+CwAt1Gu}r(xHuz+tMhWwm=nKUI`>@!9`cmG&*CrQy9?3UVBRVs2zmzos5sC_W0&b-bYs=iZNaA9+F zE{Kg%-@UKMwc6J@Aq zX(nyPdNtoQb@-$t{K(=(c);DLY{b(~KM53)Zt^=4=(ge?cY4`H;UYtpWNeV5{|vDYb^;+ZH{_T=}9%I@QLgZ{e6GtV4#B6&a-L&#^2u>W(brt&HVZT_BBeMZxoe-7g z=CNvnUXBnRodm=!lgVT{X&u~Cd0ZTmlLd+Nz3Sgui0ndeTR0gyj%D59mTkB91T8t6 zI(`vyUDChVf}7yrE2rHBsl^xI=WKO|UF#`WQ!p6}a%L+dgLqtGdt31icb_a&v-(&H z7;-4IS5mq_8}#b`+}pEo4`99k(GE>lJ1io|kUSMM?5tjI#g#Qh;1A_XQJ&AlGyL`7 z(nu!BnvFp^ZHe_8(58bBx-}NrIBwzv3TWpkR0yk ziPv(eoPnQGHefInW`dF8&7B-Hwl&O9#efl%@DO6IR%P@I9w;B zziQ{ft3j5^i3|3IA0Z=AL0y_I)iVRfhQ0baRWoAE*T(*xKvzSMCS?2UNj#RRqkRy% zc%m+Y{F3V&MgQqJC&CLMJtj54eQmL?oHIt>1b^jle5VH5Iz5H2G~m)P zs@LAYr-prI{9?C=lH=%4H0V)N@8ZIIR`#>5I0C;OPm;D`o)!qt6V5TbtjOTF@16JD z5Q}&_E8^<9XtMi$*_T0-`NxTXARH5;Z+>5gP#WTWVgm?w3EOpcUI;Yurw|&unG~D# zxIKv;H;VA1>3G8T=!hlh1`j0bLzL0YzZ)AaGx+Ef4E71O2sR&Hsc>YlpjygLU(3ez zFuH^q^rARJ1GhDGNofAi>Dbh;3)Vsg1*$H$+ z2if`vfSE0;)hxXG>`jVyg=}vGLtA$BAF@0R7~h<&b{Iq&R+7{D>h(Mf1{ndO$V-1h zd5FY&Rh_}inW;kFx`L{*>H=7S5q65>)M{9NQ&W$JB6nr> z)w{GHCk5sDb)}o35xPAo5DSYbMD)ys5g?K_YVP-t9dPjWJ-)>8*wW=?t5yxK_@6N7 zezTMTfx2JpRZCl#01gv-H~!A)ht8-uh&gmv62+r5|tJ zj%olxrQ@!kett_Vd6ADcphKFqEK)tC(s2P|l;&k&!_gNo*tUg~FBTjjsm!*l9e`bN zOg~PA(D$`xfjEFz!Up?gh;KRPnd9~xYQ_Og^u&=NC>lljs{S8oTSrznH;WV&`zySY zE{|Vz7!P%Q&y>phn}HUyFo)0#DYhS*;UB8D-%Q;J%ZzR-kT!FoCn= zmBV49`&sy$CWF(>4&wrJ=zSA4LbkKRp2doMHMosm#JQ$2X4+VNaNEsk z;{|h6Tn&<7)ZsE@-gd-1Zr-iFRUqx4tssw%S`ms%v=LxA? z3{Oi;|KB(P_)qW`seN*ny$9ERr(k5Uw$2Pw=RDglXAOpA#1xE>UnrvU#)Xly^zE*V zSdH54<2J9&viFOKcHLtTZ6!|v;&RB;wRcbsaGC$sI~$J9P|bgcH9b*-u3{(m-GP_>=#2;tjNde}Kh~n|9LO%Ps{7WuDw+VwhMDi(M_V{HNKQ z%ak9@8Dso%?@9hfT}fZ?(RnjXxDJ~pIz7fIkHpa}TO1{9J<=^>qWhy}rJI?j^mr_vXMTKwC{BR)x3MLWmpJ5H>55y?aLXD#^m&durDsW9rzx~S%U+qQ zHrhXb32Lvf_=t^yv9uqb8am^Q^q1AX%W~WytBTeymo@tvBo|~$J-wd!Q{Oa);@{B}J}5p?r)F!Ur7W!~WN>`qpH^ey=)0?VS! z*&q-DX7S!1$&k;=t>y-XbnGyd9oyQ#o5AUUq3qHrwN-Qy$Vb(_T(s^!78fnQe>Xq5 z(UMLDguT^11YV+vDgcQ^(Xl83)9t2~?y7*Pnwk-qlrI!}qg9seT)m6j6pG*m{z^hi zVjy?M#>S>>=r@uFc3uRh2(Gx)$M&ENm&#r_tnkfzSR|sKj^dXJxMN1i zfuI~o4W~*8&w+5_%r`=-gMF(o#$BW!Wz6|}^D&HV*`3H(O4!R)TRh`bNKvX^Eer4o z8^ih`daGwH15M3@GQxMcmyu(yaoy$>R^g6Zg{cZ5Sp(jY7>TYxJT!KK%sK;65r2g` z%8+cn*5sM3bUDb~Fx9#)&OoTEL+Ig_ z?aQ8Mmm;Aj7mr0O$oDh`jF%)X-qD7Re2bQ$EvE(q1M+-|tqa!Ze!H<>JnP4_-gj*3 zt}_ZVeQ}$e);?2LN=z%E)fAx>8sFA)kZwidNKRYsm09fIP>uQ)PP73y8g*^HHWJSO zdE+0_{Vth1CHF10E-=C#9@c)2R1^t1c_(s4}r*?Y) zA)iyknyIZ7)#h-8L}bGpb{IiV#YsC%*)Op>^SHV+Xh6hl10-Kvv&z@Pl~nNQlNue! zr)DXc{wlpIU{56YII>(n4n{rq)nPdO0+Y9_eb+uy(Pz79J$J?K1?_$@#E)R9S4*UJ zw5nWAAMTo0$@yT0sD=)Z9!^ZGp-p=#GT~;@>f6ZgZrw9rZh?I1B+W0FM-^-vztua9 z?Qn@rY@9x*IS6lvnL)eK7qh6XLx{PA`jCEpKV5)Wm-Jihw~TV2^u?ud%-t`bP0^@d zv17>4w@t4V#)_;&$mOGcrXwD9cKW*GE8{`PRmQJ&kWTrB4z7T3VIbSfGcWq^o3ZPqWFkCi{wleLDc%hC41< zp*!MIkO>SnK~u>)V+l~Q7wKw+Gl9*U|L)0WP>h_$ig>iG*x8`|5(I}UC(29>Hem6+ z`p{5Pv81@J-0kEof(5qwFK&F)sV*D05_?kLa&trsat`lBc{Slf!w8I`1_QBED+P9^ zN9SwM7U%S0cernnT!ExGZBT?d7E+@$wrBm)q;p_`MXVolQRB2TKM>6Vw8X0Bz|cfN z_lufdgT~&Rq8LPud@Hduc%nacYi|7po(-ZYrwIN&m|P2iixp5 z%C<`{4olle1zP*Ivfa=`Q%SMpEir7{a1HL!hmC#6HN zq$esP{L~GqSU^tmR6sU2hu8VfiBl_2E7lKxpe!GQ{}t%1T92gIdT7fRO#Ip6RT~xwPXry z@}I52GWTv+6-j=b-4hLwPHnwehdAB^b5{eo0zxZ^1BX>kg>H_1)J{Hw8C$={AJ&Dg(b&z-rg&J zY<3oFUwu&;aX151*!ECszS@QMH|^k!Lk_kXjix~9Ma?j6iP&e{hQ7=6J z+}AMwjx5U`Mw5YqCso}opT)GPS-H?Zn!N2)imJ6jL3u|6-0vT8ypai9_{N9NBX%am zQRb;u%KW2?A2$yxm9-A>xZO$q!uee{4S zkAPEnhR!;WBh{17#lFb?sN5cl)aZg`7iFzWprY&>z>)ydY#nS+cj8T#{^GuC-BtGF zi-8BrxQK>D(M9AazGxb%JaA6^VYlnwLbMe3IhMomnt=(8x9r<;yWvPK(gwxbhmv}+ zRSoXy`5}Y&%YLCc+3Zjj3Q;HH@vdB-da0FgPo!`L7j0c8p@q-D0TG&5z=v>Fb3%c* zPf%}t_u4eHL5v-<@$t5=s%8e_;=eY%b{Z%Dz!{hmif?wG4t3~3`GApU1?`R|tuCt? zBb)l{i88eAq<+pEnIXc_cZ*QaT@i?%>Db@n#-`WMiE@i$CIhh9+#hFbjFf=3G5)2w zE1EJHWJas9LQQ6mAJr;iPLH@g_AyHlEKOIQWnuiTi=@emT~mA!1S|%OU!pI9*x;uL zk_pm1ZQ}n~n4p*C;|H4>?Cmpa94w8$yE?-x!e-1U9Xr!|xJ6c&f^|GI-)w}#H}Wg` z1Q*&8!ri&PlLZ^r&0pH)4(o$WGUAIS0xeNaMFz2ed9PSuJne0#48&hTr8a0a5Y|M7H40ZHnAI3VY* z4TM(P#>6hBKBb`kqwcOHqAEK)Nm8gNkKChphXRhyHiO*hMoaDQNex9;OpT^~>K(^z zo!aZA421V>Oqu%g^Z^vh^{0WMc8mTO1GaU$U~Y#9>t2 zHFq{U8+*x=>ja3{E zjCr0lD^k7D6ggrIw)d+D-MT%>tJOJd=dJX$P^TT5P+q^q#cNREFbRjnCUq&Qq$HaT zMN56iC|{P_e9o7lv$_9o5wwcsY@toE4g@Qi2A)d)Ao632Z{Y&e?JDK zS0zvso#xF>g>3{&KCk!SL8PqU4sqZSxF`sb=E)i1RCop28@l0m?t*0Mz@x9r{E~)* zwF@hRni;{Ryi*vc7qwq>&9dE8boGmPxbjDO&6#1|JU8K0W_S>IEnQ0lPJWX+08haz zSxF2fjd6{V#^jLj1R2}Yb@)Cc=l+P#1&f}U1KTQbO)U0n4}rOJ`|w;R2IK;sPHcEf z!)WBvWf&ZO)&V8_RBS? z=Qb=3%GK*1qg1Wj@l;^AU`uFfhn?JHb8ow~_nZtZjCzHTtJ7F$9)4<~rS#}$%Ou2+ zJR^-#$~Pj~ zMv#k(*c0$OZde)}8gAwi2j{k@2%UTjFOzNYTu~;Hm%Evhrn?-$ZTa-nK`!ugEBVpz zjK`!2^re;J#aK?;c|3Q{>s2~Ho;X|h)AmR-C=r|O{fj(M=czrWt?^aS_U6|4hsBwD z7Qn_0ihFkNA}gY&VMVNIP-hT;$A3Z-mBd~6eO8*E$V%(Z&|R9*GQruQ^(JQ6Vw?NF zI#^)Q`F@;xefxgT8=u~%u@_l{MsgKQpr_dVbkp{mS5(*6qqjt-ZyDE?yLXB0nfBCXO)H%TW zH4~LXxcB_|esU#^d|917jn6L9u61+Ayq+9OFrllpS3xVYQg zXXkNMC0LPdZ{FF|g!=v_pJO?iYgmrjL0@79$u=w;p8lUYmYR?%1pU#L4!&YIRm%!iVelM(dR*1}TJ< zR6d{^B zgYIu$+{LwzEPk4O=wnq$pD59vmqS$f>zx?p9eNiT-_CM2vk+5dl_W``(W+g*oRA6t zgap@T0lF>G=c^ZO+R4nR$j^Sv?`OZ5$Rv6GlhaGZO>Y-HFxm*vNapx?#DAV7jIluO zHX9E&&j~Ah_5tJdcMCjw{6zd0GX5&FAI$MSgk4x^8)v zUR + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306AsciiSoftSpi.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
SSD1306AsciiSoftSpi.h File Reference
+
+
+ +

Class for software SPI displays. +More...

+
#include "SSD1306Ascii.h"
+#include "utility/DigitalOutput.h"
+
+Include dependency graph for SSD1306AsciiSoftSpi.h:
+
+
+ + + + + +
+
+ + + + +

+Classes

class  SSD1306AsciiSoftSpi
 Class for SPI displays using software SPI. More...
 
+

Detailed Description

+

Class for software SPI displays.

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_soft_spi_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_soft_spi_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1c4c5c7b6ef317dad3c6f4c5e5443a97be99a4 GIT binary patch literal 9424 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h.html new file mode 100644 index 0000000..d5fac76 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h.html @@ -0,0 +1,105 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306AsciiSpi.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
SSD1306AsciiSpi.h File Reference
+
+
+ +

Class for hardware SPI displays. +More...

+
#include <SPI.h>
+#include "SSD1306Ascii.h"
+
+Include dependency graph for SSD1306AsciiSpi.h:
+
+
+ + + + +
+
+ + + + +

+Classes

class  SSD1306AsciiSpi
 Class for SPI displays on the hardware SPI bus. More...
 
+

Detailed Description

+

Class for hardware SPI displays.

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_spi_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0a15ea77983814ba2e5bb6c8e43b3dfcd6fab097 GIT binary patch literal 7275 zcmZvB2UHW^w{AcbK?Uh5AQ+lR2kBJ^A}vS>HB>>APG~_w6*Pc=5Q6k70YdKt1O(|_ zkzS?uUZvgn{nvf({oY-7X01uqnVECW-rt_@e0!hJmr#{EI)9Z6EAP^I)D&(0SGI?{#H*x5gcS{`VonMX@wSY*9H9c=z9eLKb}}ANfqCQf#0xaax;>J) zTp%Tx4Puk;COlYJJssxOFFUesh(^s{Z2QYQHC}iQTE4sq(I8cT(7x7ahCprzkAlDd!b&(#< zE~|A9kvQWSaY)EL)#h?8*Q3tl;^)}yZFuo5EXLWmRKg95v2TE<<&1tK;Ob8AFCk)j z)HIPApCQ=YuaZ_yn;o56Jywnhiv`sKTF&C*_*+;b2VZCsao5G|vC1Ko=#bTZO~#~$ z9-A0ge&?VW{s>BgX0)N#QB&l9YM$ZwTc^tvZ>ZSkk&&P5{Vh_2p}OH|s9oT?YRy3Z zhG5EzMZf3;lcJc!e9Xg#X2-K67(@g%}IxdY~R)H<${Lv=kmYd2UjmLsG$%KvZO z+mO&Y$Fax5restrYMq5StRu*Ac@+{oyv&3ai?Rj~L(|UCYAj~yq4*azJm<`06}+#) zs1;hW@fLeK29qDB-zS58vK-zOAy9)7iWTOYK|!l*x#QjQ=doz*{ucI7RS=xko-cTa?M@IC*>FvU>JEf;95C$_f1 zjti}mNQ);p6(5;!BP}C>dR`>CWTaI(oiFfZe^OiOt^9=X4j2dQ*}PbCH|b63?`)OM zG;Yq|?HtkIFrcte9iom;5=Eo!sQ%lr3-%7n+3BySIl;nc)p&FVE2kwG{60Q76nz`< zTk9TZxY&H#k)6nPLK^~3_+H49>$x#1bQW_F+^GwtDB%O?`!K)wtemC3Bw&8IyHCmd zxAT@tBn>7xP4S^B|eFH3e!rhTl8n6-!zd%u6T zygfVickEfGYqLt3fVdFQ$#EJ^Hek*@p(-+;o-(PT>kGtGa99M%ZIFk@2~z;=XYac! zb8^7_)bxkOrB;IzpfP+{F*`=KA7)>F?b?(I8&y3V))&@FG5xaekXm~+6L;-qQN&Li zZmAvS`n6POfA`OyDOkOZm{hIE)M$+-9OC5cWOlr;veM@+I-&*XE8*OTMxqw)fTnc~ zatw}+of*Zcl%(npc))*?9lL)N7N*?NXi0i48tHJUrxbvU4&BJ~4fQJ!ju3OZ;T(esHR!scC-v#Ko!Tlb zO}XHlf0X&ElyjpjBO`hOvg4DWu|)GdtD)uNxQbkQz|s$=>{wSgV8p$8lqp^++04=X#UCg1AmUOay-p`Dl~J=D zv$^tfY91KbpQ0nKHN0OVDq{1Tuo{m>i&~ES9_pRIhjCyq2)@^C6FW)PWyeM!|7$D5 zSRV1lDR&u23;RZxp~L=1P`y4(-gj0(tIJ&`Ft% zAI=bs-JZoEzs+CZ<{y!ZL}uy}b+6SBfBpzL2mB{h3ffd+AZwx4@enT*#OUp;ry7+vq)ep>Q(ptK|CVLZebdU+9&&G zPK=y?s0-nQ(@p#dBNfWqrNryYDsuAsv)Ry|KV$|mMN)t#uFr~hE<{ggsLaz-5Nlae zU|h(oN~4pAWMQIi94<3offp*A&HEeiYlUFMSr;~R5P+4IUZa`9XxKcJDs=Xi!a|(; zyNPbx{4OzRAQxVa(~?xba4nG%!a{s7riUktxXVocVcmfYwXtt}KRIdQ3#h^mo64r- z2Js|J{tZK4yrrt=r&ottOFhg?pJ#ScZm~+5P~Kn(??~gqOi==+8T0b&-c4W58_&TF zP8=mgetev3NW(wN=REeC-AW!byDP|H5%B&y4eS=ig=l|S#fONuWV2Q)Au@aX!^di7 z>YqHyJC@yR=YTQjpfIiB4z`C{aA9BF5Aal|vu~5T4CklFt?@eKZtV?_xr3A6%&V-d ze#(T%(8q5^Ig@{c(J}M=%sp3xrK#ok6bms&8Ko6e7liZ^DLnC5C`dny;uMbPrILhX z?Nx&!p&FxPgQfB9fRn$qETMUKk;_9Mx%@Es>Bg%qe-Y*=mQRs#@)gM41X2)+koR`; z=;u#UAI)|MEv-XjJR7}w0dN3+EHfm6)BK z9s7P3IVN9OdUX`?sNS%k{LVmQmE&Zb#!+yYbfWI*jlk-HzVeSBRoY&aD$j`AXVESs zGfLWN%e5&?PCQj2x@e1Lqe(NbahZ;S2qtK3N#8;~ef6~E!NB-9ffdu#57}t4{?*V? z1~ye#a0_@2V#SUdv~Rvx(8!H(`G*7O`ui>m!?>v=Su^*Q!S*>U*R`Mp@B|52%+D!s zv;mRyjSfaxN65hj@cE1>cGLWPV`vOhI7S~*;JpXh-2C2RrJg}&*akPsZobW_s} zA~P+Sj^`<#F=%BExE75z>*D#_*E*lFoIf6gPFICR);&|A%UV5X$lky|*E4)<*9=g6 zz8i;y#xb2=Z4ne|NzAV)Ja(Z3^NDcmrX+fE{>o{i}{_qmx5V@}tc9__wJqTl4t%#ES%(9z+*=BP_QPY*Qtl!A88b zJ@XpQre+GfH%ezvWS~A-FW7PANa`huV{xo1g({kBd}6}wsKVtLb3jz)2hvGrJE?W% zaQc*8BUWL5)Oj`KZA$;Ew}V2b3OByfC~Q5HqBTop{{s;Ai~!ic2k70*_fT+)uzVfv ze{tWi0hM9Wda3Q>b0$xK8OEuD&a+f(3^duxK6!GV(u_Gs$OcZSGPM2tB9lL?};|be#))qHsxmDm|c*>Fx+8qu1C{% zsVaGVfe6WdzF<8eIn@AlPIjSIYFHx98BBiin@Jn0t85s_xJM+Dm7W#sAB){)Nwf8W%cyA5=L;g?9}3 z`uegQXQBon3+Run{c)S!6ZQAd~hT=CudB2;sY^eH8FuGM!Yr< zd~crqRfhSFhnH!VJ4&;Gwcgc)aS@%91>}BQe?0ch+u8oDlhalBn~GiL`S}YVe&tW! zt97H+O~lP^fRvP?E`1lN`s~pBX6FqP;OOgDz6iug!id@W*~iY#!1r5N^QzmpW4@n4 z$TJSQ-@tkxD1+K@3z!54`GL})oIa^;Sq|N6$a^52yy@<#$J?5w(S{qdbYKKyfDNdY zi;Hnf!ezEk+iOHgPqKM1pK_VVcyuKc-h zP*Hwy+DX45udAtviNX8T74(u7HEzCTUYs|)o#u-1Gc!2a4_3i}srLez>f&DUw0>7O z{t0kK(Hp&K&P>WMi}itlj$*6QKJ_N^zy%tO=BHm;=2HyvU;7n?QR3%*S(lx$0dnTy zU?9xOBHc$KVWVCfqD2j?5`VpRk?mSmr7iCUOQ`^KK;O%#?E!i43Gc`JS%s5}aroLRLkxkX~r%Kg~z5-Tlo z#0S;UWrX}<=5n90PnWV`Dc5znAM6|E?J|qR0};=VKohex=XFn44f4cR_6?5cVolirQ29rsU0C(eq?DVMT@5E%CT5 zVJ?=`MVYHPaCe6k@2=LC4PE{lH)^92BO}f~%5pacs@AB@?Y3|XY7stb^~fyFG080k zCC|pwHUT2OR6Gq4xE-iPNGC7hQWgY~OI$ub{rWech1ClfY(Nl5H?wW_rMe%SCZK(# z(-6^`h{~og(XaNS z1JRBxs#e9(lG;;MCiO%FHbwq|WPnkk<8LXz8cE1G8XFWGv*GDWx=?F00Pj!R`{CQCy5(mNlqN zaX-(hpj4>5pwWKz0k3vC$GbBnmyq_Ani<~nBG{)&p42SLI%0Na+ z*4W_0c0vk;Fey?GUwDIpTLz8;ZPeLL$9zK)!4T%0Vy4ZRrV-&29rR zbLKM?!H;Zf^E`@*Fg-YIYs>P1xHvuyOQIJrt9H3Ock_F<(BVdN`epK-qoeFL^GAx! z2L)yof7))jNdjq6T>cy>cs#XpMYdgQ`y7;p(5`*++Ydr=c!~>8mwQmjlJ{DpN&lS| zd3Tt6Y-fjh9Cj4GXrUC|OJy_;%=W`am8$UBdi)^SkE%nq_wVbq+5pPFChV0r_k_y3 ztIC6h)JUKeko&EqMBesWt5UIQ941KZK1M)gI+r@0(Zj~RhSdk0!=$Dz9>4xuP+c)u z1Ex;+%N!6QvTd56b|~W@yd-Gh28nxfa9~CS4@xMFgIR{B*Aq^CRrEHui6p27?1AiF z;8VmVlMth0p|=r(fSd?LN1e-LDHjcBi-oc7>Mc!lNK=NAbW~*I)?Z8A!SRnENh1=n=f3f*EpdklK3ZtAI6;NRu z7;$7|yg};Ywk3jR!t8vCi|bv7Y+Uig9KU7re2U*@y0>zn47+xVwR`PEKmjUqWIC0k zc6cc+LKQOMu0>w2MN&G(StBV7dY+~2-Tz&|t1D3W0blWDLc{d9!!!fh4A8t375x1qX?mCiPPYz!^HPcKIRClaZ3-nLA(-#o zfIHt)y)|#-&QTI6K)8rB=n}nfnR^Wx8Sg2H8OO@II5K<}>TNudug&I{`-fZT&{1iK zt1{g<;HrwSWsC0U%Tih1ltS)Aj(ob#r~vkuArkh2Hb(ljyUSPtm6zSqyu8z>yg6Es zy&hW*(YrD<{|(%>)h7rpiTyQw9!+#NFOOV|+MmHCFlFStpZ@XTVJpa;?Yl2p*|*yC3+<-;f2pc}7$1+LOmY8ZLV?xg4d^>MI;!xAe#qu>)>=l*NW_X= z^ZxD5%ijfBA(`!TE%7}&;scifDsK4!lZdL)US4K*W{iN8A1@c?n{FSP8cSY}*6TlQR3i2Im2C{j<); zcgvjArRN?sDFsu?$c+5t?-}{BgN<^NWAFP)-yLYFK#x;{Z7Zv*&DU%o&jv?E3<|BO z<1d6oMIEF_1dx7AxoeAzVh)1SNefBsQ^Sx`hna?pd2q}={mx7Ccs8(b#Q&(X?q#Nx zWPX$GO6E6kIvwI46hN3h?z${!U2@fFoAeIHn&)ol;0V6oNDd|9ry_^W9iUZg>@>llhym|GN<}-_ltD-(Ap!&QVZ{%aw<2F17we z5w6CVo-HP7#+L6f&pJIkXpjzk%w^6g-H3lpJzQ{QYrdQ>yLcu&vaYzekQ67-mOdr( zIUGat^*1JWoGWE;p7pH8t<3*Df{9jYncOi4H6iBXmot&~dw+n8CXLO2K<8F22|mlQ zDow*c#{<+%oiozLS{qVQ&LPF3|K6*RFfAIrbQ{;8{|a;|!XV9s=uNV(!y=rp?;iH0 zI2Y**Z?`UY7&x`!WdpPt(#vTA8Eq1uv^yhASGut2VZHO7Op98klS!>gg~9clNwtf^g%Mne-32*sM{lA_1J8yvG*7-U zG#UR@vRUiXajNTlGrZIoJ0m7V$eOH@#rvKf_ez&PX^-As{QI(?JgQ}|feyqn(Us0$mJv|~@7 zmrcWO#4XXk3}b@bw?7qJ9f9mp9|68&CKaG!_<^M2CdpZ=nX03!)+KJD&GzKT59VSa(wSQfe z=#Yf<`b + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306AsciiWire.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
SSD1306AsciiWire.h File Reference
+
+
+ +

Class for I2C displays using Wire. +More...

+
#include <Wire.h>
+#include "SSD1306Ascii.h"
+
+Include dependency graph for SSD1306AsciiWire.h:
+
+
+ + + + +
+
+ + + + +

+Classes

class  SSD1306AsciiWire
 Class for I2C displays using Wire. More...
 
+

Detailed Description

+

Class for I2C displays using Wire.

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_wire_8h__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306_ascii_wire_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4c783feda0f13d45afec900ad9b947f47be0d7 GIT binary patch literal 7461 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h.html new file mode 100644 index 0000000..9da36bd --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h.html @@ -0,0 +1,792 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/SSD1306init.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
SSD1306init.h File Reference
+
+
+ +

Display controller initialization commands. +More...

+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + +
+
+ + + + +

+Classes

struct  DevType
 Device initialization structure. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define MEM_TYPE
 
#define SH1106_PUMP_OFF   0X8A
 
#define SH1106_PUMP_ON   0X8B
 
#define SH1106_SET_PUMP_MODE   0XAD
 
#define SH1106_SET_PUMP_VOLTAGE   0X30
 
#define SSD1306_CHARGEPUMP   0x8D
 
#define SSD1306_COMSCANDEC   0xC8
 
#define SSD1306_COMSCANINC   0xC0
 
#define SSD1306_DISPLAYALLON   0xA5
 
#define SSD1306_DISPLAYALLON_RESUME   0xA4
 
#define SSD1306_DISPLAYOFF   0xAE
 
#define SSD1306_DISPLAYON   0xAF
 
#define SSD1306_INVERTDISPLAY   0xA7
 
#define SSD1306_MEMORYMODE   0x20
 
#define SSD1306_NOP   0XE3
 
#define SSD1306_NORMALDISPLAY   0xA6
 
#define SSD1306_SEGREMAP   0xA0
 
#define SSD1306_SETCOMPINS   0xDA
 
#define SSD1306_SETCONTRAST   0x81
 
#define SSD1306_SETDISPLAYCLOCKDIV   0xD5
 
#define SSD1306_SETDISPLAYOFFSET   0xD3
 
#define SSD1306_SETHIGHCOLUMN   0x10
 
#define SSD1306_SETLOWCOLUMN   0x00
 
#define SSD1306_SETMULTIPLEX   0xA8
 
#define SSD1306_SETPRECHARGE   0xD9
 
#define SSD1306_SETSTARTLINE   0x40
 
#define SSD1306_SETSTARTPAGE   0XB0
 
#define SSD1306_SETVCOMDETECT   0xDB
 
+ + + + + + + + + + + + + + + + + +

+Variables

static const DevType MEM_TYPE Adafruit128x32
 
static const uint8_t MEM_TYPE Adafruit128x32init []
 
static const DevType MEM_TYPE Adafruit128x64
 
static const uint8_t MEM_TYPE Adafruit128x64init []
 
static const DevType MEM_TYPE MicroOLED64x48
 
static const uint8_t MEM_TYPE MicroOLED64x48init []
 
static const DevType MEM_TYPE SH1106_128x64
 
static const uint8_t MEM_TYPE SH1106_128x64init []
 
+

Detailed Description

+

Display controller initialization commands.

+

Macro Definition Documentation

+ +

◆ MEM_TYPE

+ +
+
+ + + + +
#define MEM_TYPE
+
+

Handle AVR flash addressing.

+ +
+
+ +

◆ SH1106_PUMP_OFF

+ +
+
+ + + + +
#define SH1106_PUMP_OFF   0X8A
+
+

Second byte charge pump off.

+ +
+
+ +

◆ SH1106_PUMP_ON

+ +
+
+ + + + +
#define SH1106_PUMP_ON   0X8B
+
+

Second byte charge pump on.

+ +
+
+ +

◆ SH1106_SET_PUMP_MODE

+ +
+
+ + + + +
#define SH1106_SET_PUMP_MODE   0XAD
+
+

First byte of set charge pump mode

+ +
+
+ +

◆ SH1106_SET_PUMP_VOLTAGE

+ +
+
+ + + + +
#define SH1106_SET_PUMP_VOLTAGE   0X30
+
+

Set Pump voltage value: (30H~33H) 6.4, 7.4, 8.0 (POR), 9.0.

+ +
+
+ +

◆ SSD1306_CHARGEPUMP

+ +
+
+ + + + +
#define SSD1306_CHARGEPUMP   0x8D
+
+

Enable or disable charge pump. Follow with 0X14 enable, 0X10 disable.

+ +
+
+ +

◆ SSD1306_COMSCANDEC

+ +
+
+ + + + +
#define SSD1306_COMSCANDEC   0xC8
+
+

Set COM output scan direction reversed.

+ +
+
+ +

◆ SSD1306_COMSCANINC

+ +
+
+ + + + +
#define SSD1306_COMSCANINC   0xC0
+
+

Set COM output scan direction normal.

+ +
+
+ +

◆ SSD1306_DISPLAYALLON

+ +
+
+ + + + +
#define SSD1306_DISPLAYALLON   0xA5
+
+

Force display on regardless of GRAM content.

+ +
+
+ +

◆ SSD1306_DISPLAYALLON_RESUME

+ +
+
+ + + + +
#define SSD1306_DISPLAYALLON_RESUME   0xA4
+
+

Resume display from GRAM content.

+ +
+
+ +

◆ SSD1306_DISPLAYOFF

+ +
+
+ + + + +
#define SSD1306_DISPLAYOFF   0xAE
+
+

Set Display off.

+ +
+
+ +

◆ SSD1306_DISPLAYON

+ +
+
+ + + + +
#define SSD1306_DISPLAYON   0xAF
+
+

Set Display on.

+ +
+
+ +

◆ SSD1306_INVERTDISPLAY

+ +
+
+ + + + +
#define SSD1306_INVERTDISPLAY   0xA7
+
+

Set Inverse Display.

+ +
+
+ +

◆ SSD1306_MEMORYMODE

+ +
+
+ + + + +
#define SSD1306_MEMORYMODE   0x20
+
+

Set Memory Addressing Mode.

+ +
+
+ +

◆ SSD1306_NOP

+ +
+
+ + + + +
#define SSD1306_NOP   0XE3
+
+

No Operation Command.

+ +
+
+ +

◆ SSD1306_NORMALDISPLAY

+ +
+
+ + + + +
#define SSD1306_NORMALDISPLAY   0xA6
+
+

Set Normal Display.

+ +
+
+ +

◆ SSD1306_SEGREMAP

+ +
+
+ + + + +
#define SSD1306_SEGREMAP   0xA0
+
+

Set Segment Re-map between data column and the segment driver.

+ +
+
+ +

◆ SSD1306_SETCOMPINS

+ +
+
+ + + + +
#define SSD1306_SETCOMPINS   0xDA
+
+

Sets COM signals pin configuration to match the OLED panel layout.

+ +
+
+ +

◆ SSD1306_SETCONTRAST

+ +
+
+ + + + +
#define SSD1306_SETCONTRAST   0x81
+
+

Set Display Contrast to one of 256 steps.

+ +
+
+ +

◆ SSD1306_SETDISPLAYCLOCKDIV

+ +
+
+ + + + +
#define SSD1306_SETDISPLAYCLOCKDIV   0xD5
+
+

Set Display Clock Divide Ratio/ Oscillator Frequency.

+ +
+
+ +

◆ SSD1306_SETDISPLAYOFFSET

+ +
+
+ + + + +
#define SSD1306_SETDISPLAYOFFSET   0xD3
+
+

Set Display Offset.

+ +
+
+ +

◆ SSD1306_SETHIGHCOLUMN

+ +
+
+ + + + +
#define SSD1306_SETHIGHCOLUMN   0x10
+
+

Set Higher Column Start Address for Page Addressing Mode.

+ +
+
+ +

◆ SSD1306_SETLOWCOLUMN

+ +
+
+ + + + +
#define SSD1306_SETLOWCOLUMN   0x00
+
+

Set Lower Column Start Address for Page Addressing Mode.

+ +
+
+ +

◆ SSD1306_SETMULTIPLEX

+ +
+
+ + + + +
#define SSD1306_SETMULTIPLEX   0xA8
+
+

Set Multiplex Ratio from 16 to 63.

+ +
+
+ +

◆ SSD1306_SETPRECHARGE

+ +
+
+ + + + +
#define SSD1306_SETPRECHARGE   0xD9
+
+

Set Pre-charge Period

+ +
+
+ +

◆ SSD1306_SETSTARTLINE

+ +
+
+ + + + +
#define SSD1306_SETSTARTLINE   0x40
+
+

Set display RAM display start line register from 0 - 63.

+ +
+
+ +

◆ SSD1306_SETSTARTPAGE

+ +
+
+ + + + +
#define SSD1306_SETSTARTPAGE   0XB0
+
+

Set GDDRAM Page Start Address.

+ +
+
+ +

◆ SSD1306_SETVCOMDETECT

+ +
+
+ + + + +
#define SSD1306_SETVCOMDETECT   0xDB
+
+

This command adjusts the VCOMH regulator output.

+ +
+
+

Variable Documentation

+ +

◆ Adafruit128x32

+ +
+
+ + + + + +
+ + + + +
const DevType MEM_TYPE Adafruit128x32
+
+static
+
+

Initialize a 128x32 SSD1306 oled display.

+ +
+
+ +

◆ Adafruit128x32init

+ +
+
+ + + + + +
+ + + + +
const uint8_t MEM_TYPE Adafruit128x32init[]
+
+static
+
+

Initialization commands for a 128x32 SSD1306 oled display.

+ +
+
+ +

◆ Adafruit128x64

+ +
+
+ + + + + +
+ + + + +
const DevType MEM_TYPE Adafruit128x64
+
+static
+
+

Initialize a 128x64 oled display.

+ +
+
+ +

◆ Adafruit128x64init

+ +
+
+ + + + + +
+ + + + +
const uint8_t MEM_TYPE Adafruit128x64init[]
+
+static
+
+

Initialization commands for a 128x64 SSD1306 oled display.

+ +
+
+ +

◆ MicroOLED64x48

+ +
+
+ + + + + +
+ + + + +
const DevType MEM_TYPE MicroOLED64x48
+
+static
+
+

Initialize a 64x48 Micro OLED display.

+ +
+
+ +

◆ MicroOLED64x48init

+ +
+
+ + + + + +
+ + + + +
const uint8_t MEM_TYPE MicroOLED64x48init[]
+
+static
+
+

Initialization commands for a 64x48 Micro OLED display (by r7)

+ +
+
+ +

◆ SH1106_128x64

+ +
+
+ + + + + +
+ + + + +
const DevType MEM_TYPE SH1106_128x64
+
+static
+
+

Initialize a 128x64 oled SH1106 display.

+ +
+
+ +

◆ SH1106_128x64init

+ +
+
+ + + + + +
+ + + + +
const uint8_t MEM_TYPE SH1106_128x64init[]
+
+static
+
+

Initialization commands for a 128x64 SH1106 oled display.

+ +
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h__dep__incl.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/_s_s_d1306init_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..072e06c1100412abd9ad8f1ca692d44194f22772 GIT binary patch literal 11590 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 + + + + + + +SSD1306Ascii: Class List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + +
 CAvrI2cHardware I2C master class for AVR
 CDevTypeDevice initialization structure
 CDigitalOutputFaster version of digitalWrite()
 CSSD1306AsciiSSD1306 base class
 CSSD1306AsciiAvrI2cClass for I2C displays on AVR
 CSSD1306AsciiSoftSpiClass for SPI displays using software SPI
 CSSD1306AsciiSpiClass for SPI displays on the hardware SPI bus
 CSSD1306AsciiWireClass for I2C displays using Wire
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/bc_s.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/bdwn.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
AvrI2c Member List
+
+
+ +

This is the complete list of members for AvrI2c, including all inherited members.

+ + + + + + + + +
begin(bool fastMode=true)AvrI2cinline
read(bool last)AvrI2cinline
repeatedStart(uint8_t addressRW)AvrI2cinline
start(uint8_t addressRW)AvrI2cinline
status(void)AvrI2cinline
stop(void)AvrI2cinline
write(uint8_t data)AvrI2cinline
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_avr_i2c.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_avr_i2c.html new file mode 100644 index 0000000..a18c9ff --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_avr_i2c.html @@ -0,0 +1,343 @@ + + + + + + + +SSD1306Ascii: AvrI2c Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
AvrI2c Class Reference
+
+
+ +

Hardware I2C master class for AVR. + More...

+ +

#include <AvrI2c.h>

+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (bool fastMode=true)
 Initialize prescalar and SLC clock rate. More...
 
uint8_t read (bool last)
 Read a byte and send Ack if more reads follow else Nak to terminate read. More...
 
bool repeatedStart (uint8_t addressRW)
 Issue a repeated start condition. More...
 
bool start (uint8_t addressRW)
 Issue a start condition. More...
 
uint8_t status (void)
 
void stop (void)
 
bool write (uint8_t data)
 Write a byte. More...
 
+

Detailed Description

+

Hardware I2C master class for AVR.

+

Uses ATmega TWI hardware port

+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + +
+ + + + + + + + +
void AvrI2c::begin (bool fastMode = true)
+
+inline
+
+ +

Initialize prescalar and SLC clock rate.

+
Parameters
+ + +
[in]fastModeFast 400 kHz mode if true else standard 100 kHz mode.
+
+
+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t AvrI2c::read (bool last)
+
+inline
+
+ +

Read a byte and send Ack if more reads follow else Nak to terminate read.

+
Parameters
+ + +
[in]lastSet true to terminate the read else false.
+
+
+
Returns
The byte read from the I2C bus.
+ +
+
+ +

◆ repeatedStart()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AvrI2c::repeatedStart (uint8_t addressRW)
+
+inline
+
+ +

Issue a repeated start condition.

+

same as start with no stop. Included to document intention.

+
Parameters
+ + +
[in]addressRWI2C address with read/write bit.
+
+
+
Returns
The value true, 1, for success or false, 0, for failure.
+ +
+
+ +

◆ start()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AvrI2c::start (uint8_t addressRW)
+
+inline
+
+ +

Issue a start condition.

+
Parameters
+ + +
[in]addressRWI2C address with read/write bit.
+
+
+
Returns
The value true for success or false for failure.
+ +
+
+ +

◆ status()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t AvrI2c::status (void )
+
+inline
+
+
Returns
status from last TWI command - useful for library debug
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + + +
void AvrI2c::stop (void )
+
+inline
+
+

Issue a stop condition.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AvrI2c::write (uint8_t data)
+
+inline
+
+ +

Write a byte.

+
Parameters
+ + +
[in]dataThe byte to send.
+
+
+
Returns
The value true, 1, if the slave returned an Ack or false for Nak.
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • Arduino/libraries/SSD1306Ascii/src/utility/AvrI2c.h
  • +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output-members.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output-members.html new file mode 100644 index 0000000..ea0caca --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output-members.html @@ -0,0 +1,81 @@ + + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
DigitalOutput Member List
+
+
+ +

This is the complete list of members for DigitalOutput, including all inherited members.

+ + + +
begin(uint8_t pin)DigitalOutputinline
write(bool level)DigitalOutputinline
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output.html new file mode 100644 index 0000000..5fae219 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_digital_output.html @@ -0,0 +1,168 @@ + + + + + + + +SSD1306Ascii: DigitalOutput Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
DigitalOutput Class Reference
+
+
+ +

Faster version of digitalWrite(). + More...

+ +

#include <DigitalOutput.h>

+ + + + + + + + +

+Public Member Functions

void begin (uint8_t pin)
 initialize the digital pin. More...
 
void write (bool level)
 Set the level of a digital pin. More...
 
+

Detailed Description

+

Faster version of digitalWrite().

+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + +
+ + + + + + + + +
void DigitalOutput::begin (uint8_t pin)
+
+inline
+
+ +

initialize the digital pin.

+
Parameters
+ + +
[in]pinThe Arduino pin number.
+
+
+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + +
void DigitalOutput::write (bool level)
+
+inline
+
+ +

Set the level of a digital pin.

+
Parameters
+ + +
[in]levelThe value to be set.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii-members.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii-members.html new file mode 100644 index 0000000..b6a4cdb --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii-members.html @@ -0,0 +1,117 @@ + + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SSD1306Ascii Member List
+
+
+ +

This is the complete list of members for SSD1306Ascii, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
charWidth(uint8_t c)SSD1306Ascii
clear()SSD1306Ascii
clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)SSD1306Ascii
clearField(uint8_t col, uint8_t row, uint8_t n)SSD1306Ascii
clearToEOL()SSD1306Ascii
col()SSD1306Asciiinline
displayHeight()SSD1306Asciiinline
displayRemap(bool mode)SSD1306Ascii
displayRows()SSD1306Asciiinline
displayWidth()SSD1306Asciiinline
fieldWidth(uint8_t n)SSD1306Ascii
font()SSD1306Asciiinline
fontCharCount()SSD1306Ascii
fontFirstChar()SSD1306Ascii
fontHeight()SSD1306Ascii
fontRows()SSD1306Asciiinline
fontWidth()SSD1306Ascii
home()SSD1306Asciiinline
init(const DevType *dev)SSD1306Ascii
letterSpacing()SSD1306Asciiinline
magFactor()SSD1306Asciiinline
row()SSD1306Asciiinline
set1X()SSD1306Asciiinline
set2X()SSD1306Asciiinline
setCol(uint8_t col)SSD1306Ascii
setContrast(uint8_t value)SSD1306Ascii
setCursor(uint8_t col, uint8_t row)SSD1306Ascii
setFont(const uint8_t *font)SSD1306Ascii
setLetterSpacing(uint8_t pixels)SSD1306Asciiinline
setRow(uint8_t row)SSD1306Ascii
setScroll(bool enable)SSD1306Ascii
SSD1306Ascii() (defined in SSD1306Ascii)SSD1306Asciiinline
ssd1306WriteCmd(uint8_t c)SSD1306Asciiinline
ssd1306WriteRam(uint8_t c)SSD1306Ascii
ssd1306WriteRamBuf(uint8_t c)SSD1306Ascii
strWidth(const char *str)SSD1306Ascii
write(uint8_t c)SSD1306Ascii
write(const char *s)SSD1306Ascii
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii.html new file mode 100644 index 0000000..689d1c9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii.html @@ -0,0 +1,1117 @@ + + + + + + + +SSD1306Ascii: SSD1306Ascii Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SSD1306Ascii Class Referenceabstract
+
+
+ +

SSD1306 base class. + More...

+ +

#include <SSD1306Ascii.h>

+
+Inheritance diagram for SSD1306Ascii:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for SSD1306Ascii:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

uint8_t charWidth (uint8_t c)
 Determine the width of a character. More...
 
+void clear ()
 Clear the display and set the cursor to (0, 0).
 
void clear (uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)
 Clear a region of the display. More...
 
void clearField (uint8_t col, uint8_t row, uint8_t n)
 Clear a field of n fieldWidth() characters. More...
 
void clearToEOL ()
 Clear the display to the end of the current line. More...
 
uint8_t col ()
 
uint8_t displayHeight ()
 
void displayRemap (bool mode)
 Set display to normal or 180 degree remap mode. More...
 
uint8_t displayRows ()
 
uint8_t displayWidth ()
 
size_t fieldWidth (uint8_t n)
 Width of a field in pixels. More...
 
const uint8_t * font ()
 
uint8_t fontCharCount ()
 
char fontFirstChar ()
 
uint8_t fontHeight ()
 
uint8_t fontRows ()
 
uint8_t fontWidth ()
 
+void home ()
 Set the cursor position to (0, 0).
 
void init (const DevType *dev)
 Initialize the display controller. More...
 
uint8_t letterSpacing ()
 
uint8_t magFactor ()
 
uint8_t row ()
 
+void set1X ()
 Set the character magnification factor to one.
 
+void set2X ()
 Set the character magnification factor to two.
 
void setCol (uint8_t col)
 Set the current column number. More...
 
void setContrast (uint8_t value)
 Set the display contrast. More...
 
void setCursor (uint8_t col, uint8_t row)
 Set the cursor position. More...
 
void setFont (const uint8_t *font)
 Set the current font. More...
 
void setLetterSpacing (uint8_t pixels)
 Set letter-spacing. setFont() will restore default letter-spacing. More...
 
void setRow (uint8_t row)
 Set the current row number. More...
 
void setScroll (bool enable)
 Enable or disable scroll mode. More...
 
void ssd1306WriteCmd (uint8_t c)
 Write a command byte to the display controller. More...
 
void ssd1306WriteRam (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
void ssd1306WriteRamBuf (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
size_t strWidth (const char *str)
 
size_t write (uint8_t c)
 Display a character. More...
 
size_t write (const char *s)
 Display a string. More...
 
+

Detailed Description

+

SSD1306 base class.

+

Member Function Documentation

+ +

◆ charWidth()

+ +
+
+ + + + + + + + +
uint8_t SSD1306Ascii::charWidth (uint8_t c)
+
+ +

Determine the width of a character.

+
Parameters
+ + +
[in]cCharacter code.
+
+
+
Returns
Width of the character in pixels.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clear (uint8_t c0,
uint8_t c1,
uint8_t r0,
uint8_t r1 
)
+
+ +

Clear a region of the display.

+
Parameters
+ + + + + +
[in]c0Starting column.
[in]c1Ending column.
[in]r0Starting row;
[in]r1Ending row;
+
+
+
Note
The final cursor position will be (c0, r0).
+ +
+
+ +

◆ clearField()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clearField (uint8_t col,
uint8_t row,
uint8_t n 
)
+
+ +

Clear a field of n fieldWidth() characters.

+
Parameters
+ + + + +
[in]colField start column.
+
[in]rowField start row.
+
[in]nNumber of characters in the field.
+
+
+ +
+
+ +

◆ clearToEOL()

+ +
+
+ + + + + + + +
void SSD1306Ascii::clearToEOL ()
+
+ +

Clear the display to the end of the current line.

+
Note
The number of rows cleared will be determined by the height of the current font.
+
+The cursor will be returned to the original position.
+ +
+
+ +

◆ col()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::col ()
+
+inline
+
+
Returns
The current column in pixels.
+ +
+
+ +

◆ displayHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayHeight ()
+
+inline
+
+
Returns
The display hight in pixels.
+ +
+
+ +

◆ displayRemap()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::displayRemap (bool mode)
+
+ +

Set display to normal or 180 degree remap mode.

+
Parameters
+ + +
[in]modetrue for normal mode, false for remap mode.
+
+
+
Note
Adafruit and many ebay displays use remap mode. Use normal mode to rotate these displays 180 degrees.
+ +
+
+ +

◆ displayRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayRows ()
+
+inline
+
+
Returns
The display height in rows with eight pixels to a row.
+ +
+
+ +

◆ displayWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayWidth ()
+
+inline
+
+
Returns
The display width in pixels.
+ +
+
+ +

◆ fieldWidth()

+ +
+
+ + + + + + + + +
size_t SSD1306Ascii::fieldWidth (uint8_t n)
+
+ +

Width of a field in pixels.

+
Parameters
+ + +
[in]nNumber of characters in the field.
+
+
+
Returns
Width of the field.
+ +
+
+ +

◆ font()

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t* SSD1306Ascii::font ()
+
+inline
+
+
Returns
The current font pointer.
+ +
+
+ +

◆ fontCharCount()

+ +
+
+ + + + + + + +
uint8_t SSD1306Ascii::fontCharCount ()
+
+
Returns
The count of characters in a font.
+ +
+
+ +

◆ fontFirstChar()

+ +
+
+ + + + + + + +
char SSD1306Ascii::fontFirstChar ()
+
+
Returns
The first character in a font.
+ +
+
+ +

◆ fontHeight()

+ +
+
+ + + + + + + +
uint8_t SSD1306Ascii::fontHeight ()
+
+
Returns
The current font height in pixels.
+ +
+
+ +

◆ fontRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontRows ()
+
+inline
+
+
Returns
The number of eight pixel rows required to display a character in the current font.
+ +
+
+ +

◆ fontWidth()

+ +
+
+ + + + + + + +
uint8_t SSD1306Ascii::fontWidth ()
+
+
Returns
The maximum width of characters in the current font.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::init (const DevTypedev)
+
+ +

Initialize the display controller.

+
Parameters
+ + +
[in]devA display initialization structure.
+
+
+ +
+
+ +

◆ letterSpacing()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::letterSpacing ()
+
+inline
+
+
Returns
letter-spacing in pixels with magnification factor.
+ +
+
+ +

◆ magFactor()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::magFactor ()
+
+inline
+
+
Returns
The character magnification factor.
+ +
+
+ +

◆ row()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::row ()
+
+inline
+
+
Returns
the current row number with eight pixels to a row.
+ +
+
+ +

◆ setCol()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::setCol (uint8_t col)
+
+ +

Set the current column number.

+
Parameters
+ + +
[in]colThe desired column number in pixels.
+
+
+ +
+
+ +

◆ setContrast()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::setContrast (uint8_t value)
+
+ +

Set the display contrast.

+
Parameters
+ + +
[in]valueThe contrast level in th range 0 to 255.
+
+
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::setCursor (uint8_t col,
uint8_t row 
)
+
+ +

Set the cursor position.

+
Parameters
+ + + +
[in]colThe column number in pixels.
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::setFont (const uint8_t * font)
+
+ +

Set the current font.

+
Parameters
+ + +
[in]fontPointer to a font table.
+
+
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setLetterSpacing (uint8_t pixels)
+
+inline
+
+ +

Set letter-spacing. setFont() will restore default letter-spacing.

+
Parameters
+ + +
[in]pixelsletter-spacing in pixels before magnification.
+
+
+ +
+
+ +

◆ setRow()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::setRow (uint8_t row)
+
+ +

Set the current row number.

+
Parameters
+ + +
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setScroll()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::setScroll (bool enable)
+
+ +

Enable or disable scroll mode.

+
Parameters
+ + +
[in]enabletrue enable scroll on new line false disable scroll.
+
+
+
Note
Scroll mode is only supported on 64 pixel high displays. Using setRow() or setCursor() will be unpredictable in scroll mode. You must use a font with an integral number of line on the display.
+ +
+
+ +

◆ ssd1306WriteCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteCmd (uint8_t c)
+
+inline
+
+ +

Write a command byte to the display controller.

+
Parameters
+ + +
[in]cThe command byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRam()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRam (uint8_t c)
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRamBuf()

+ +
+
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRamBuf (uint8_t c)
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte may be buffered until a call to ssd1306WriteCmd or ssd1306WriteRam.
+ +
+
+ +

◆ strWidth()

+ +
+
+ + + + + + + + +
size_t SSD1306Ascii::strWidth (const char * str)
+
+
Parameters
+ + +
[in]strThe pointer to string.
+
+
+
Returns
the width of the string in pixels.
+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + + + + +
size_t SSD1306Ascii::write (uint8_t c)
+
+ +

Display a character.

+
Parameters
+ + +
[in]cThe character to display.
+
+
+
Returns
the value one.
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + + + + +
size_t SSD1306Ascii::write (const char * s)
+
+ +

Display a string.

+
Parameters
+ + +
[in]sThe string to display.
+
+
+
Returns
The length of the string.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Arduino/libraries/SSD1306Ascii/src/SSD1306Ascii.h
  • +
  • Arduino/libraries/SSD1306Ascii/src/SSD1306Ascii.cpp
  • +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__coll__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb2bd25f115212b25e6ab31d222e80fc4d04a16 GIT binary patch literal 1236 zcmeAS@N?(olHy`uVBq!ia0vp^r9fQ3!3HE1PTKPWDYhhUcNd2LAh=-f^2rPgES;V% zjv*Cu-p+N*mv)tCyRTois$)gNgjH(GLR_1IcOF{UevNMxi%^G`s)*33jnCN*GU{b6 zae1}&FaHYL0;fk^k8NH4ba~k-TuIj3D=_D;1&jH$v~t_*_ix_R)ybdSWMn+Ac5nap z+aJ|7GCFZ6wg^n>YT;vG2o$MZx2oLv`3%v}+HKpmeJg$;!@ZFC&-v>N*PPpDOe_`r zsae9okkQU(;N&u|Z1>%>7c7^h*4NiNyUc4j$9UzrhpMX6O16a|%>k<%vo;6JVmg~~ zzIygD;a|QNQdT0D2yUkaT6AY_rsJ8AdJ z=T~OB2M4*$n{%w|^x~I6zFsq@R%+}oW?w4R60|w<&8zJvpNCBUoOy52N{{%(4<=>_ zc$sp5suhsK^Hn#KsKl1Du`;MBQ zrSh{G7&=Z&+{#CEww-${ z{W)lTTy240=sSi6j(ZWYvHvVe)b7uiUR6=?qm$ztbA#4D)(bcOUoSkm=ZeKK^HmZ| z4IE;Od+)xyQ>|N~H-E;os*jKOPb=*xRr)OIUAX5@HV3 zcY4C*pwP#=)!zsC3tlu+m>;*Z=>OS(oi)i}uaF%j9ZOnAU>(E7Rf(qXiCr7vG;jWq zx8FYam9AWMc*zxuYwHuv~Q@<>%aTjjIY%u!KJqgkR11An3PW^q?X7ayhJn-#XnV0xV;p*yY3BLCCYPXH;Pb|Luwu;v!?fHWT41eqX`&gfc zB}1TNmexLsTz}pAvY7-AS8w6W*Pq$xJ#m)k3DuHKw!TwN zcPnS#NidkP>wM{-El+IUN3N*-Df{+>V5IfdGjoHU#VCHzx|;f2-G_VQ-d{bt zRsUy_ZgRyJY(P{?x$B;6E!$ z>v`whyRlz>|6T4;b2;VhX?;yT)C>X)lbPc3Wo2cn&Nwbp=vs8;+m>#AZ3a0;i_g3V omrVP^^x*piMNp~WBz3U<^-RuFe?%IV1B)pJPgg&ebxsLQ08h0|y8r+H literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__inherit__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..26c1231f9abd6e3d7bc24af4df7a476eb0c1c69d GIT binary patch literal 8296 zcmd^lhg(z4w)akGN)H%8I+3Du6c7O+N)V7HC19jVKtOu$5cCykf{4)p_T06# zEvE_=_tk?k4~GJM#gM4~r7>2~@F4DukYbchW>l-pto7ae@v)d0K0jwKgc@}41S$Qj=!o~Glx2sk=h8qJ9xm@Zf5nGDHHE0;v zt~7!F0h>Z7BnIp{u>TygU>IW)mT6;hlM(l9Fxn`C9q>-a>g(qf2E1ZZF6}&OD3!<; zw&DMr+m+I@vA5Iy*zbK<-jc*D43@1pDOaPpVU`|e7t9QU!&9HBqRbK;#3yzv;)U`g zzrb`m9}zAiim}McnWZhtP#76x|L@v z!T<~Gb0ING09Mw#_9QIKtr=VjIS=c{ntSAt01{nfT#{KZu$CMaR@w^QdGqNuoCNSZ zecsa2qUFSbLcI~CR6q#%N0*hb^@)e2Lje@ybxL!OIx$41gCxlM*!7$o3gpoDUVI*7 zb4AeU$P*Kh$gnH+XOfa&H{d@xY0ny{B(44Wri^;Sen!jw;h~340yX~iVe6o0r zJ{+d&bhg%yFJCURprkr&GDdL$l^GfCos&i?|D4s}$(d<6M20{JrNX{6F@ zsHW)p9uzo`O=bs0*1x5pV`&_fg!j?V73nUrV;GmpJ9j&9Nm?p-dTK|6cmg4 zeoGNVgUr{SMZJqHH=6dfs#eo6lU@^!z$XsEb+LpyDEGfW!!Pw}g&SE6;n7YBx62aG zfx5W+w~_wuG88Z6$-G(Nx4XiiQ0cus9W|_;`!avEXE+F7IcO?loK}-KZq_&B46W)}bJVC>#*ZFt!0Io^ket-m_&OWWn(-uB|Y zd{RNRMu2>oBxv97lG23R|9RNpw_6uHU@CK~nhDk&3L=SZkLC~%3Z`2za(Bj>+Wx_#8SX~?+CoW zES9e4`>$PFe#fHEs4G@Y1wQKQj`ACQ?p`ZSo@4bFgZYngl=GIwG>q`dsc6j$LJ=ax~DH=^oFf=MY+Nk%XqXQVj9S*Oi zUv04!6A~t)=~dY7eFs>0>}+srrv_~9efUt^kW~CzCBTr!Wss#b@MKU&X;T6R17a2n z1Q0?&AdI|$6Y<9xVODM}-x7t)V9lPFFH@O!+K763-Voc^7m@)=FA-EBUqFogMd_ih zc$n&to}E<+4)#yooM8a=0HmtSn;-7%Gd%zzzN*!tZ zXs+Lid(DmxDmxsEd%A{qRSUQv76T8Y>GLAeZJM9{X^mCWnf`1VcpM)?{*3dMqPg{j zSN_1QV9Qt?^mP75j(xAjgL^9ICOn>m&r9@K!UDfG_k~_?kS5WGyrWZg3x1lkw=M`ZH^E!RRFE+8h><|bvE7(>Oz)Igs2~2G9z4pc83WER*w4B zg#G29hBevU!nTfXMD0EDlB>;6^i0r=Tra(5lF}4ySk8G&(pyA!9L7ZDtyG5@S9 zb8`c(eqB%XS2RE@I6ltNK5_W8a_lpZ7j~(^5 z6~qkXJ@IIUx|@mJ7Sa#jv)y6DwO;>d2_WI?58@|nFxAc$>4z3FfuiP(cGKa^zh}Z{ z1&|l|7&u<)syrYM0wj@p_M3Q_seB)KS^bLFahAbto^+D5(|y{4u(Q7RUGd z&ZC5|3VDv{gUp$keP>aPQ|py<ht`B&_Tz$MkQ8{k&FJCk&oVXD^eMVk28EYcV8X zCnX%2PAUL?F{!WbuwVmdLPHyauT7kAA-jcQw{QZ8#+fm+2N8y*TAYu(D zqP$NwdlS7gUO6N$TfLj@a43*D-v-8P0BAb3m#*YAkCWXI>IQlsF63YWGir?~6&y>g zw)k|JnxM3adLAKw9Ng?*l>dvzny(R0n?Y+nMbedyzivrqG9HDku zZ}>cgl|SD=!_5&cPMhtqwvHGTm(FjBDj#WD<_g6%PbNo4(bCu4j_$z*b0Q33vH(3~ zz#g+X-Q3K77*gcXvvxU?iGWizXk%k@I&o2OsshHzmlkjaP#z32OvL--+`ym``Kulu{M(yz%!DeDP0+m{{CL(>-u zz5ogr!gm~y(|2qWdR?avD)B)yjJmDz;4&^FO@LWZ;22R$+F8c; zZEUPPPeHy4qXywVFG@vEd$k6>wx~b_3cCHm~4b;hp#T`u1izvbrr?wij?e z$*oNJ298mWgmli4%M4-Sccpl2bd=V`U2Pw5$Dk^u;iaJ-px+&;Y}gFi8?;ti&z%kr zi#4tgLW)WP_SnxkU_>psjE1;XKTI?x{@Ok|>Dd;cDMaK1&b!n@KAFSiMKlgS&pE!> zHWh}!FOqS^wo^bkU*bN(C079qMLHWH5;%a+sURwJ-gafww6#UIVzHxz5lWEz;d|W+ zSKC-WatpNU za)_JoeEej2AUeJG#jA5YQSGi}j-)imS1OC}rE1A7q|~_kvk6aaYD)QEEX^!}zvo*G zHXo~~1O$paKGi|9rs*Va2c}v!7Cz`l`~Do=SV4^{)8MQD`p6}1fMH~K_?P&XR5e5w zCny1`ZzIl6?pM4s@D$}qqxb~$8L511^f6J^NDvDueRJbWv^#MhzsZ=M3o+N{b6ey- zI*Arm`D8O6P_H`?&j261z(Yruvb$N`82Tl(Ev~I2jgHQRg1_;Dn}If&2bB0C+Y;?c853HE%M=Rt_)&nL3b(wkGO#R(0E z&yoObNG-#s0|V&`FMo5m)pXQv9Nsw1x9$`}AN4H8#pfGs$@Tn@L61Swm6(<>tCmUX zH?|Hv0b*sviEi|_4>L{xWU(EsI6t5n~_l#WMR>N-!)ZrbiufGr?B>esz0JLp5mGF zF+iZhO|pi2%-mR9SWtId8)4~AQyO-Nva1rYGi*fw;*bF<3sukqI82f%L-PW_yc%98 zMqF143U_>0fwzUaz|yg}BWh%mBeBO)>4h*$^q}uE{4`a^acl>{2=`*%X~f_h=;Pj~ z4NhbuOSnfcJ3sedGKR9+-SD<_Q^gOrO7%uN8`cDKOHf9jxB@dU+}S;2`?#rtG*% z7QBxJ@}8XW&b*9Q-Igo6JmP={Ov1dwNe&phC_6}>$WslJ1)%UKD%7AN*mkLCrq=ZP zB*vKvN_Pu!kcM9PVOxG^RwbM)+-zaPoX!C8@e8QmqEU^R-i)4*UU&zRc^qX2yDg6! z0{J7INBWUAAFQ)GJDfHU`I&qv$+-GCG$!8!S-lJ^&wIkm6B5qevQ8-_bxm*g!OdwE zi~TLFZSBK|a2xDz}(d#AQT`88xxbTM|Oan(9S zA1TT&5+F!#)@Rch8RIiwy;$Ig_4rQKkJ$)fFyRaI&Vev4CEBEW zSZw=zzwQx~a1UK0!?rfP?xp3ldFU)RQW|g!-~lOB#I53LQ~f#5eP{?NAw1CwIS$-1 zB8Q>J?4p)al$w4^7Mmhb2DYF|DDE41lb%LI_!{LuxsLM$*Z>X)BU8U=y!EXv_ZX%e zZ3~AeDVCO$E0giEEX;wpRECa<=ZzF5C7U3NpF|wV`Y2~D`Eme16xvUeIDLtJ#`oI- zQ+Nay8JBJD`wU@Q~eTK+okv1F{?3v zY2>wAR&)R{e(L)dOD|!jN9*^HLV!YH1gB!!n52ZuNK>r|LRS|o2fAL996riCZWcnm z6V-T!-sC+)`Mh&p`EAOreog(Bubx1$$veMP1aCk~`I(lde|V`l;S1_qLwb!|wdN(n zh9R=deMaa)&iL%WxsCbUeg23mA&{6WWI@4;zRcSL(qyI7gaD*DIUnCs)47e=;s!Z$ zW5w+2A(9P(jH3YsVUuE+#w~M>Rhdz}BLTgB@{G2BqO6k)v00|%L`XeEE$!R^E-uE+ zME53^aQWV&)`+66xw$HFBWZhx6q#G&xoN|k8{6^St@z5fS~p z+-HzjWiNEsCZ%G`dBRrzts(3qM1tX!d1Rs)dRa6^I4*w@#Du{-?D~0oX_8W*c;g8k|bylRoM|SeWHFV%uqfN>HMw z>5JLpI&Ng4p2)ab0TXIL^sP{S5=H zkAcAO#P05HLS7~YOaua;eY(gX{>;F5>*th|wG6eU*&{Ac(q}t|pAQsda+HkTMn*L+ zhKBladDrFW>6C!JD znQ_-498jsOCwrLT@WA@6A{W^Z*SWKBxc}o_%U)#1BIGzGwxg1}##BF_`tMX@3Ljwz z7+rQ1jJ1J`WkhiH+wMUUH2AvCk#YHklSAJromXSVJ%$}!#U-9gmAb1OzpzU4Vm)AJ z4MBtmN~G$~%cfKntc;*`*ylDXC#J;mzDY}Y^xUAdH>jXP3Ij^G5nw7qsG)ypUNEF6 zk!a17{ROAWUs(BjHS$L25(SSHW{I2Qr*D75N*BAJgqM-T=%z1{8{o5=a62X-_w1_dw~|9cdlpJq z$5qPd2)SS_HB}(gpqRD;X8fRbF2lealRv%aR~rQ!{?=YVEZP>@2h7sJeo{(VVTM0U zYJ6AJwlLuUtDQmo61;yV{L4d1s&(JNwd8ty<4J){8>!I~F%bR5*Iyb))mJHYG;VnI z%-Gzm1|@_A*?l9>Gxt#VsVDvqEx?TfEsweHzSP4*j`f=u1yFykuJ5}~@1pMjZ31F0 zzTF_vqLPw=CsyD8yhY?_!3z;C00%T{q;wu6s_}cf{??fj8eHJ8!B$Ap7-Hfv@+G-N zu<&h@-@s@#TQDEnRM3|p#MSd4%OB5z{ht65xYt59z!dJGwCbg0je>^sM5>f)kvlTS z;$+U<_`KhB71QI22BZgo8OGz|j($5c|uCEfn( z!nJ&q#vQfDaihFM=h0y1g{G!@6MYC0=$t+TV$9(q>UXPs4ZmspT~k9Ii2xXn7Q&Xo1$G8X25(ak zhQYD{iv=LsK9{~3QgW^lRCoZ@q{i%3FpbyaY1D@kRWyxd14i_nMo>xl#p@3)#e6VD zJ%ltc64U`+prKN<&PPaP-;(gb8-y=0$+m!tuX4gWLstP>;9Ph|&*o;o`Bp%RTl4uS z;&U+C8x{sJ5{3}fiX6XuN7s_C$b-8VNs>7#C=pKwZjJO#6@^nfHgM9)d6R98AjV4+C>^L3a7{D8(AbLN$N;~W{hZ3m6-{$%Tn#TF#a~5C56mwb8bq1V zby(%u15!c=UTjvdN4Xn=bB2B+2qL~Tl=6*`S%18ns?_)~-NvhWRlb~JCdoBiImEB% z90FfD$T}z=9JGdgLGSqz1kwc-GP6tPDCHILc+q%%tut&ghW7$XEU`gmAu5EO^HExZ zeSM})o^=Ar{vm`P;*lLQWCw%%8c&>OQFYU#J#RA$%s6E_9ibI0XAZ*fI}hU3w*96|KdLc*)MXiso^an*HaNr!OVH)5QsvZ;|z7_D>E z-BQK>UfP(hkE?qJ2)k9s z{pi}Qy&n5b)dZbSa=iRrW5Vnbk)v$vDoE_}8L=LRiABu=FKdpspLxeSZ#WHTI$J8v zAjOYzQ@iYob6H(X^z!Etvjc>yB&CmcbLJ1U-`t_9zZ0M=G|WJovL!fWJ$Q<>8ZatN z%RNmAH`w(DpSNP26iu|6$;quM7>u_b^eUCf5#JVy9{WagyHvIyS0tOGCrXQtuqR?HT6fhflfM+*_%wXf>gVU)0i?@APWTIk-8ctlPPwK4c@;t6@|reNjG| zcoa?am@Y^fPcbtuRaRQAS6${X6td)4b6HkRqaNcLs&aup1}Z1k ztBhsEwhLaZqa}~ICcj9&GjH87t9g#a|M|Y#_cQB`xyrj`xmF>})L=00{&Z`yc3P6q z!pv&t##fs*~c0-U*oBx^P!y3?hjAD=~El^KQ3kW7CTHmDCCK2v@yOh zr8qc7_ui?lb2$53m!rwWNWJ_rR@bjRTE+`mChgxeCuTIOh&A6N3htO%N$zfH4&Q$5 zdF^JeWzOQ`IuX-+F9=J^uel^jzpHDXdnntjgW9cS))yUK80j@kTlJ=$@VDE`K3)v^ zs%_qDPl~|etE+k`3Nr4qV65u21;jTF_n;ju&8Pt8?dYZFj2!$AVYHkF=>4(~yGdx!vA7x4d&?sW4v zy5_D4iE$WxR|m@^u>F_w-v2&~bI2s=GY4-Ei@wR%FDriSKEaV-AaoZp3C#Lc(eU=p zF7kALCj+4*;l&|P4*5i5M(?YB24)XJ#uuxz0@#5K56FZ$<*Yu1Lt2DBZ#!Ix>T1#* x=iswb>wjr#_P$Es+X1k%cLDzM^1YE$syJKq?5yEoUhpQMuA+@9x?}P5KLFu=VBi1% literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c-members.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c-members.html new file mode 100644 index 0000000..0fb2a34 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c-members.html @@ -0,0 +1,119 @@ + + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SSD1306AsciiAvrI2c Member List
+
+
+ +

This is the complete list of members for SSD1306AsciiAvrI2c, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin(const DevType *dev, uint8_t i2cAddr)SSD1306AsciiAvrI2cinline
begin(const DevType *dev, uint8_t i2cAddr, uint8_t rst)SSD1306AsciiAvrI2cinline
charWidth(uint8_t c)SSD1306Ascii
clear()SSD1306Ascii
clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)SSD1306Ascii
clearField(uint8_t col, uint8_t row, uint8_t n)SSD1306Ascii
clearToEOL()SSD1306Ascii
col()SSD1306Asciiinline
displayHeight()SSD1306Asciiinline
displayRemap(bool mode)SSD1306Ascii
displayRows()SSD1306Asciiinline
displayWidth()SSD1306Asciiinline
fieldWidth(uint8_t n)SSD1306Ascii
font()SSD1306Asciiinline
fontCharCount()SSD1306Ascii
fontFirstChar()SSD1306Ascii
fontHeight()SSD1306Ascii
fontRows()SSD1306Asciiinline
fontWidth()SSD1306Ascii
home()SSD1306Asciiinline
init(const DevType *dev)SSD1306Ascii
letterSpacing()SSD1306Asciiinline
magFactor()SSD1306Asciiinline
row()SSD1306Asciiinline
set1X()SSD1306Asciiinline
set2X()SSD1306Asciiinline
setCol(uint8_t col)SSD1306Ascii
setContrast(uint8_t value)SSD1306Ascii
setCursor(uint8_t col, uint8_t row)SSD1306Ascii
setFont(const uint8_t *font)SSD1306Ascii
setLetterSpacing(uint8_t pixels)SSD1306Asciiinline
setRow(uint8_t row)SSD1306Ascii
setScroll(bool enable)SSD1306Ascii
SSD1306Ascii() (defined in SSD1306Ascii)SSD1306Asciiinline
ssd1306WriteCmd(uint8_t c)SSD1306Asciiinline
ssd1306WriteRam(uint8_t c)SSD1306Ascii
ssd1306WriteRamBuf(uint8_t c)SSD1306Ascii
strWidth(const char *str)SSD1306Ascii
write(uint8_t c)SSD1306Ascii
write(const char *s)SSD1306Ascii
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c.html new file mode 100644 index 0000000..126552f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c.html @@ -0,0 +1,1394 @@ + + + + + + + +SSD1306Ascii: SSD1306AsciiAvrI2c Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SSD1306AsciiAvrI2c Class Reference
+
+
+ +

Class for I2C displays on AVR. + More...

+ +

#include <SSD1306AsciiAvrI2c.h>

+
+Inheritance diagram for SSD1306AsciiAvrI2c:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for SSD1306AsciiAvrI2c:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (const DevType *dev, uint8_t i2cAddr)
 Initialize the display controller. More...
 
void begin (const DevType *dev, uint8_t i2cAddr, uint8_t rst)
 Initialize the display controller. More...
 
uint8_t charWidth (uint8_t c)
 Determine the width of a character. More...
 
+void clear ()
 Clear the display and set the cursor to (0, 0).
 
void clear (uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)
 Clear a region of the display. More...
 
void clearField (uint8_t col, uint8_t row, uint8_t n)
 Clear a field of n fieldWidth() characters. More...
 
void clearToEOL ()
 Clear the display to the end of the current line. More...
 
uint8_t col ()
 
uint8_t displayHeight ()
 
void displayRemap (bool mode)
 Set display to normal or 180 degree remap mode. More...
 
uint8_t displayRows ()
 
uint8_t displayWidth ()
 
size_t fieldWidth (uint8_t n)
 Width of a field in pixels. More...
 
const uint8_t * font ()
 
uint8_t fontCharCount ()
 
char fontFirstChar ()
 
uint8_t fontHeight ()
 
uint8_t fontRows ()
 
uint8_t fontWidth ()
 
+void home ()
 Set the cursor position to (0, 0).
 
void init (const DevType *dev)
 Initialize the display controller. More...
 
uint8_t letterSpacing ()
 
uint8_t magFactor ()
 
uint8_t row ()
 
+void set1X ()
 Set the character magnification factor to one.
 
+void set2X ()
 Set the character magnification factor to two.
 
void setCol (uint8_t col)
 Set the current column number. More...
 
void setContrast (uint8_t value)
 Set the display contrast. More...
 
void setCursor (uint8_t col, uint8_t row)
 Set the cursor position. More...
 
void setFont (const uint8_t *font)
 Set the current font. More...
 
void setLetterSpacing (uint8_t pixels)
 Set letter-spacing. setFont() will restore default letter-spacing. More...
 
void setRow (uint8_t row)
 Set the current row number. More...
 
void setScroll (bool enable)
 Enable or disable scroll mode. More...
 
void ssd1306WriteCmd (uint8_t c)
 Write a command byte to the display controller. More...
 
void ssd1306WriteRam (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
void ssd1306WriteRamBuf (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
size_t strWidth (const char *str)
 
size_t write (uint8_t c)
 Display a character. More...
 
size_t write (const char *s)
 Display a string. More...
 
+

Detailed Description

+

Class for I2C displays on AVR.

+

Uses the AvrI2c class that is smaller and faster than the Wire library.

+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306AsciiAvrI2c::begin (const DevTypedev,
uint8_t i2cAddr 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + +
[in]devA device initialization structure.
[in]i2cAddrThe I2C address of the display controller.
+
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiAvrI2c::begin (const DevTypedev,
uint8_t i2cAddr,
uint8_t rst 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + +
[in]devA device initialization structure.
[in]i2cAddrThe I2C address of the display controller.
[in]rstThe display controller reset pin.
+
+
+ +
+
+ +

◆ charWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t SSD1306Ascii::charWidth (uint8_t c)
+
+inherited
+
+ +

Determine the width of a character.

+
Parameters
+ + +
[in]cCharacter code.
+
+
+
Returns
Width of the character in pixels.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clear (uint8_t c0,
uint8_t c1,
uint8_t r0,
uint8_t r1 
)
+
+inherited
+
+ +

Clear a region of the display.

+
Parameters
+ + + + + +
[in]c0Starting column.
[in]c1Ending column.
[in]r0Starting row;
[in]r1Ending row;
+
+
+
Note
The final cursor position will be (c0, r0).
+ +
+
+ +

◆ clearField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clearField (uint8_t col,
uint8_t row,
uint8_t n 
)
+
+inherited
+
+ +

Clear a field of n fieldWidth() characters.

+
Parameters
+ + + + +
[in]colField start column.
+
[in]rowField start row.
+
[in]nNumber of characters in the field.
+
+
+ +
+
+ +

◆ clearToEOL()

+ +
+
+ + + + + +
+ + + + + + + +
void SSD1306Ascii::clearToEOL ()
+
+inherited
+
+ +

Clear the display to the end of the current line.

+
Note
The number of rows cleared will be determined by the height of the current font.
+
+The cursor will be returned to the original position.
+ +
+
+ +

◆ col()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::col ()
+
+inlineinherited
+
+
Returns
The current column in pixels.
+ +
+
+ +

◆ displayHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayHeight ()
+
+inlineinherited
+
+
Returns
The display hight in pixels.
+ +
+
+ +

◆ displayRemap()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::displayRemap (bool mode)
+
+inherited
+
+ +

Set display to normal or 180 degree remap mode.

+
Parameters
+ + +
[in]modetrue for normal mode, false for remap mode.
+
+
+
Note
Adafruit and many ebay displays use remap mode. Use normal mode to rotate these displays 180 degrees.
+ +
+
+ +

◆ displayRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayRows ()
+
+inlineinherited
+
+
Returns
The display height in rows with eight pixels to a row.
+ +
+
+ +

◆ displayWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayWidth ()
+
+inlineinherited
+
+
Returns
The display width in pixels.
+ +
+
+ +

◆ fieldWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::fieldWidth (uint8_t n)
+
+inherited
+
+ +

Width of a field in pixels.

+
Parameters
+ + +
[in]nNumber of characters in the field.
+
+
+
Returns
Width of the field.
+ +
+
+ +

◆ font()

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t* SSD1306Ascii::font ()
+
+inlineinherited
+
+
Returns
The current font pointer.
+ +
+
+ +

◆ fontCharCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontCharCount ()
+
+inherited
+
+
Returns
The count of characters in a font.
+ +
+
+ +

◆ fontFirstChar()

+ +
+
+ + + + + +
+ + + + + + + +
char SSD1306Ascii::fontFirstChar ()
+
+inherited
+
+
Returns
The first character in a font.
+ +
+
+ +

◆ fontHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontHeight ()
+
+inherited
+
+
Returns
The current font height in pixels.
+ +
+
+ +

◆ fontRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontRows ()
+
+inlineinherited
+
+
Returns
The number of eight pixel rows required to display a character in the current font.
+ +
+
+ +

◆ fontWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontWidth ()
+
+inherited
+
+
Returns
The maximum width of characters in the current font.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::init (const DevTypedev)
+
+inherited
+
+ +

Initialize the display controller.

+
Parameters
+ + +
[in]devA display initialization structure.
+
+
+ +
+
+ +

◆ letterSpacing()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::letterSpacing ()
+
+inlineinherited
+
+
Returns
letter-spacing in pixels with magnification factor.
+ +
+
+ +

◆ magFactor()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::magFactor ()
+
+inlineinherited
+
+
Returns
The character magnification factor.
+ +
+
+ +

◆ row()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::row ()
+
+inlineinherited
+
+
Returns
the current row number with eight pixels to a row.
+ +
+
+ +

◆ setCol()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setCol (uint8_t col)
+
+inherited
+
+ +

Set the current column number.

+
Parameters
+ + +
[in]colThe desired column number in pixels.
+
+
+ +
+
+ +

◆ setContrast()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setContrast (uint8_t value)
+
+inherited
+
+ +

Set the display contrast.

+
Parameters
+ + +
[in]valueThe contrast level in th range 0 to 255.
+
+
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::setCursor (uint8_t col,
uint8_t row 
)
+
+inherited
+
+ +

Set the cursor position.

+
Parameters
+ + + +
[in]colThe column number in pixels.
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setFont (const uint8_t * font)
+
+inherited
+
+ +

Set the current font.

+
Parameters
+ + +
[in]fontPointer to a font table.
+
+
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setLetterSpacing (uint8_t pixels)
+
+inlineinherited
+
+ +

Set letter-spacing. setFont() will restore default letter-spacing.

+
Parameters
+ + +
[in]pixelsletter-spacing in pixels before magnification.
+
+
+ +
+
+ +

◆ setRow()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setRow (uint8_t row)
+
+inherited
+
+ +

Set the current row number.

+
Parameters
+ + +
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setScroll()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setScroll (bool enable)
+
+inherited
+
+ +

Enable or disable scroll mode.

+
Parameters
+ + +
[in]enabletrue enable scroll on new line false disable scroll.
+
+
+
Note
Scroll mode is only supported on 64 pixel high displays. Using setRow() or setCursor() will be unpredictable in scroll mode. You must use a font with an integral number of line on the display.
+ +
+
+ +

◆ ssd1306WriteCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteCmd (uint8_t c)
+
+inlineinherited
+
+ +

Write a command byte to the display controller.

+
Parameters
+ + +
[in]cThe command byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRam()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRam (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRamBuf()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRamBuf (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte may be buffered until a call to ssd1306WriteCmd or ssd1306WriteRam.
+ +
+
+ +

◆ strWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::strWidth (const char * str)
+
+inherited
+
+
Parameters
+ + +
[in]strThe pointer to string.
+
+
+
Returns
the width of the string in pixels.
+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (uint8_t c)
+
+inherited
+
+ +

Display a character.

+
Parameters
+ + +
[in]cThe character to display.
+
+
+
Returns
the value one.
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (const char * s)
+
+inherited
+
+ +

Display a string.

+
Parameters
+ + +
[in]sThe string to display.
+
+
+
Returns
The length of the string.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__coll__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f88a0286c8f589b76c09e301ef586b5b67588c0 GIT binary patch literal 2148 zcmb`Ic~BDC9>-lM^}4i~qTcjsE|s|8GdEISE>C&5r5ReOWMTR)E~SWArrkEn%9K%Y zUjt1MLWQe@T6WuT3)8NGSl0ztaK}XCQFq?Vdo#WN?wmR2H^2G)aelw~p3nE(4e;|) z|3UW$IXO9XsJBO;EaGLGp}bRe7H+~@WnpI|%*#Vg`gK(>i8whqWgV!;@slYf3!}&5 zxvz9yEnRFjucJJ8p`Lr%e8&UTT8t=vZWHhRsVZS_h;NYfAC$DcXMa`6t)i%TGgvd{;9%IJuFsZZCaq$ryef2JKEd0iNQbQjSCI8U zIdyhGy_OYiJAzv+s|g>74P~EXL%KdM&Jpwi?~n+30op=|FErkE^r7xE@K`}he|(!f zT2JE+`RM3v9&O9 zOFyT>BY$KLx2WJn+t(BQcw*NxvE$>}9sPs#uI!#-tI$|CHY&o$p5n%heVEL!2ma_| zJoCPqyvg<&Ae{NIqx-qhf>1ctE!IB=02M(l_hy%_oPT@Z=x9+RBJ+MiN(x5w7RRIa z&fGJ`lFi_aKIQ3)pKde}I77*+h&_J(VzL8~rR@qKvWP?pya*Kp-%UBRZC~U}pL>zi zu4V!>f*liaM-7DYsI<8fj-Qo?m)+Ng<9CP!H>7rhG|LJl^QTQsXxL>(f8QkLu+z=m zl)b&J_Ic8Xa>>;L3P2;p#xSwOpH4HC1}-H=5TWd`^sS9-X*iP6c2gfz@lmgXuxJps zfz{Fc2_X;tgLiVHZjdR<5Sbur;FiE7X4AScNw`_6_Sq@9FUM75r5N*2U&B z=m@wWeUe5O8AHdHKC07elKJfUr3!SD8oppv8)~2%r^sR)oXL0E_ORMH?J1NsFwHGlp7;UEkoa+VAMREm;~&IXDV^0g9? z9|-lt{`It}pHs0kcvc^-akVJat{Q(8rXcG7~O`4F0 z+&im`JMym1-s6a(SOK>UsV}pv+7lg0H`6Cbb8B3y_N`?mx(#^(l1kY-P?tXH_@IeZ zI*{VDriL?74p9-V(L^J?q3sJyUR(vV)U8uNL*rq*1F@@Wt#@Ye)2EGBM>rpj0zjQt zFs~gk;mtfpjDR@~u9OEf;9~ga)S!eCzg%OlKO*aP%bQa=(zjrIZupoYkftr0B+s&I0`4RRH!-Y!ioZ&g8G}C`*4*-#v=A#5MU7;(*Z{c@ z9T`J1H?=&MdGoKtc9Rta|G^{L~7Nv_g_= zY_RsF7654K(@Xu%XZD{Z*Fzh1Y3AaN{; zOhvD45n#wEG@p~Ye5dR4F7of_;fRtWoOfbJam&2`alr}J?!pD+y;MBa1|5>5S1EdY zrRSNU`D$Y5aKIHe&V6h|gC_@AO@m(J)i`qA;BCe zr_=X`BJpP?X#>n5n|-UE^w70+&p|30TsT3Lfp^g2n!7c5yUGxh9M;gkyY)#{@uR8; zK)s=hg|Mqz=9QBQ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__inherit__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_avr_i2c__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f88a0286c8f589b76c09e301ef586b5b67588c0 GIT binary patch literal 2148 zcmb`Ic~BDC9>-lM^}4i~qTcjsE|s|8GdEISE>C&5r5ReOWMTR)E~SWArrkEn%9K%Y zUjt1MLWQe@T6WuT3)8NGSl0ztaK}XCQFq?Vdo#WN?wmR2H^2G)aelw~p3nE(4e;|) z|3UW$IXO9XsJBO;EaGLGp}bRe7H+~@WnpI|%*#Vg`gK(>i8whqWgV!;@slYf3!}&5 zxvz9yEnRFjucJJ8p`Lr%e8&UTT8t=vZWHhRsVZS_h;NYfAC$DcXMa`6t)i%TGgvd{;9%IJuFsZZCaq$ryef2JKEd0iNQbQjSCI8U zIdyhGy_OYiJAzv+s|g>74P~EXL%KdM&Jpwi?~n+30op=|FErkE^r7xE@K`}he|(!f zT2JE+`RM3v9&O9 zOFyT>BY$KLx2WJn+t(BQcw*NxvE$>}9sPs#uI!#-tI$|CHY&o$p5n%heVEL!2ma_| zJoCPqyvg<&Ae{NIqx-qhf>1ctE!IB=02M(l_hy%_oPT@Z=x9+RBJ+MiN(x5w7RRIa z&fGJ`lFi_aKIQ3)pKde}I77*+h&_J(VzL8~rR@qKvWP?pya*Kp-%UBRZC~U}pL>zi zu4V!>f*liaM-7DYsI<8fj-Qo?m)+Ng<9CP!H>7rhG|LJl^QTQsXxL>(f8QkLu+z=m zl)b&J_Ic8Xa>>;L3P2;p#xSwOpH4HC1}-H=5TWd`^sS9-X*iP6c2gfz@lmgXuxJps zfz{Fc2_X;tgLiVHZjdR<5Sbur;FiE7X4AScNw`_6_Sq@9FUM75r5N*2U&B z=m@wWeUe5O8AHdHKC07elKJfUr3!SD8oppv8)~2%r^sR)oXL0E_ORMH?J1NsFwHGlp7;UEkoa+VAMREm;~&IXDV^0g9? z9|-lt{`It}pHs0kcvc^-akVJat{Q(8rXcG7~O`4F0 z+&im`JMym1-s6a(SOK>UsV}pv+7lg0H`6Cbb8B3y_N`?mx(#^(l1kY-P?tXH_@IeZ zI*{VDriL?74p9-V(L^J?q3sJyUR(vV)U8uNL*rq*1F@@Wt#@Ye)2EGBM>rpj0zjQt zFs~gk;mtfpjDR@~u9OEf;9~ga)S!eCzg%OlKO*aP%bQa=(zjrIZupoYkftr0B+s&I0`4RRH!-Y!ioZ&g8G}C`*4*-#v=A#5MU7;(*Z{c@ z9T`J1H?=&MdGoKtc9Rta|G^{L~7Nv_g_= zY_RsF7654K(@Xu%XZD{Z*Fzh1Y3AaN{; zOhvD45n#wEG@p~Ye5dR4F7of_;fRtWoOfbJam&2`alr}J?!pD+y;MBa1|5>5S1EdY zrRSNU`D$Y5aKIHe&V6h|gC_@AO@m(J)i`qA;BCe zr_=X`BJpP?X#>n5n|-UE^w70+&p|30TsT3Lfp^g2n!7c5yUGxh9M;gkyY)#{@uR8; zK)s=hg|Mqz=9QBQ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi-members.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi-members.html new file mode 100644 index 0000000..7bb6184 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi-members.html @@ -0,0 +1,119 @@ + + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SSD1306AsciiSoftSpi Member List
+
+
+ +

This is the complete list of members for SSD1306AsciiSoftSpi, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin(const DevType *dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data)SSD1306AsciiSoftSpiinline
begin(const DevType *dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data, uint8_t rst)SSD1306AsciiSoftSpiinline
charWidth(uint8_t c)SSD1306Ascii
clear()SSD1306Ascii
clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)SSD1306Ascii
clearField(uint8_t col, uint8_t row, uint8_t n)SSD1306Ascii
clearToEOL()SSD1306Ascii
col()SSD1306Asciiinline
displayHeight()SSD1306Asciiinline
displayRemap(bool mode)SSD1306Ascii
displayRows()SSD1306Asciiinline
displayWidth()SSD1306Asciiinline
fieldWidth(uint8_t n)SSD1306Ascii
font()SSD1306Asciiinline
fontCharCount()SSD1306Ascii
fontFirstChar()SSD1306Ascii
fontHeight()SSD1306Ascii
fontRows()SSD1306Asciiinline
fontWidth()SSD1306Ascii
home()SSD1306Asciiinline
init(const DevType *dev)SSD1306Ascii
letterSpacing()SSD1306Asciiinline
magFactor()SSD1306Asciiinline
row()SSD1306Asciiinline
set1X()SSD1306Asciiinline
set2X()SSD1306Asciiinline
setCol(uint8_t col)SSD1306Ascii
setContrast(uint8_t value)SSD1306Ascii
setCursor(uint8_t col, uint8_t row)SSD1306Ascii
setFont(const uint8_t *font)SSD1306Ascii
setLetterSpacing(uint8_t pixels)SSD1306Asciiinline
setRow(uint8_t row)SSD1306Ascii
setScroll(bool enable)SSD1306Ascii
SSD1306Ascii() (defined in SSD1306Ascii)SSD1306Asciiinline
ssd1306WriteCmd(uint8_t c)SSD1306Asciiinline
ssd1306WriteRam(uint8_t c)SSD1306Ascii
ssd1306WriteRamBuf(uint8_t c)SSD1306Ascii
strWidth(const char *str)SSD1306Ascii
write(uint8_t c)SSD1306Ascii
write(const char *s)SSD1306Ascii
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi.html new file mode 100644 index 0000000..0df53e5 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi.html @@ -0,0 +1,1435 @@ + + + + + + + +SSD1306Ascii: SSD1306AsciiSoftSpi Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SSD1306AsciiSoftSpi Class Reference
+
+
+ +

Class for SPI displays using software SPI. + More...

+ +

#include <SSD1306AsciiSoftSpi.h>

+
+Inheritance diagram for SSD1306AsciiSoftSpi:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for SSD1306AsciiSoftSpi:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (const DevType *dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data)
 Initialize the display controller. More...
 
void begin (const DevType *dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data, uint8_t rst)
 Initialize the display controller. More...
 
uint8_t charWidth (uint8_t c)
 Determine the width of a character. More...
 
+void clear ()
 Clear the display and set the cursor to (0, 0).
 
void clear (uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)
 Clear a region of the display. More...
 
void clearField (uint8_t col, uint8_t row, uint8_t n)
 Clear a field of n fieldWidth() characters. More...
 
void clearToEOL ()
 Clear the display to the end of the current line. More...
 
uint8_t col ()
 
uint8_t displayHeight ()
 
void displayRemap (bool mode)
 Set display to normal or 180 degree remap mode. More...
 
uint8_t displayRows ()
 
uint8_t displayWidth ()
 
size_t fieldWidth (uint8_t n)
 Width of a field in pixels. More...
 
const uint8_t * font ()
 
uint8_t fontCharCount ()
 
char fontFirstChar ()
 
uint8_t fontHeight ()
 
uint8_t fontRows ()
 
uint8_t fontWidth ()
 
+void home ()
 Set the cursor position to (0, 0).
 
void init (const DevType *dev)
 Initialize the display controller. More...
 
uint8_t letterSpacing ()
 
uint8_t magFactor ()
 
uint8_t row ()
 
+void set1X ()
 Set the character magnification factor to one.
 
+void set2X ()
 Set the character magnification factor to two.
 
void setCol (uint8_t col)
 Set the current column number. More...
 
void setContrast (uint8_t value)
 Set the display contrast. More...
 
void setCursor (uint8_t col, uint8_t row)
 Set the cursor position. More...
 
void setFont (const uint8_t *font)
 Set the current font. More...
 
void setLetterSpacing (uint8_t pixels)
 Set letter-spacing. setFont() will restore default letter-spacing. More...
 
void setRow (uint8_t row)
 Set the current row number. More...
 
void setScroll (bool enable)
 Enable or disable scroll mode. More...
 
void ssd1306WriteCmd (uint8_t c)
 Write a command byte to the display controller. More...
 
void ssd1306WriteRam (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
void ssd1306WriteRamBuf (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
size_t strWidth (const char *str)
 
size_t write (uint8_t c)
 Display a character. More...
 
size_t write (const char *s)
 Display a string. More...
 
+

Detailed Description

+

Class for SPI displays using software SPI.

+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiSoftSpi::begin (const DevTypedev,
uint8_t cs,
uint8_t dc,
uint8_t clk,
uint8_t data 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + + + +
[in]devA device initialization structure.
[in]csThe display controller chip select pin.
[in]dcThe display controller cdata/command pin.
[in]clkThe SPI clock pin.
[in]dataThe SPI MOSI pin.
+
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiSoftSpi::begin (const DevTypedev,
uint8_t cs,
uint8_t dc,
uint8_t clk,
uint8_t data,
uint8_t rst 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + + + + +
[in]devA device initialization structure.
[in]csThe display controller chip select pin.
[in]dcThe display controller cdata/command pin.
[in]clkThe SPI clock pin.
[in]dataThe SPI MOSI pin.
[in]rstThe display controller reset pin.
+
+
+ +
+
+ +

◆ charWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t SSD1306Ascii::charWidth (uint8_t c)
+
+inherited
+
+ +

Determine the width of a character.

+
Parameters
+ + +
[in]cCharacter code.
+
+
+
Returns
Width of the character in pixels.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clear (uint8_t c0,
uint8_t c1,
uint8_t r0,
uint8_t r1 
)
+
+inherited
+
+ +

Clear a region of the display.

+
Parameters
+ + + + + +
[in]c0Starting column.
[in]c1Ending column.
[in]r0Starting row;
[in]r1Ending row;
+
+
+
Note
The final cursor position will be (c0, r0).
+ +
+
+ +

◆ clearField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clearField (uint8_t col,
uint8_t row,
uint8_t n 
)
+
+inherited
+
+ +

Clear a field of n fieldWidth() characters.

+
Parameters
+ + + + +
[in]colField start column.
+
[in]rowField start row.
+
[in]nNumber of characters in the field.
+
+
+ +
+
+ +

◆ clearToEOL()

+ +
+
+ + + + + +
+ + + + + + + +
void SSD1306Ascii::clearToEOL ()
+
+inherited
+
+ +

Clear the display to the end of the current line.

+
Note
The number of rows cleared will be determined by the height of the current font.
+
+The cursor will be returned to the original position.
+ +
+
+ +

◆ col()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::col ()
+
+inlineinherited
+
+
Returns
The current column in pixels.
+ +
+
+ +

◆ displayHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayHeight ()
+
+inlineinherited
+
+
Returns
The display hight in pixels.
+ +
+
+ +

◆ displayRemap()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::displayRemap (bool mode)
+
+inherited
+
+ +

Set display to normal or 180 degree remap mode.

+
Parameters
+ + +
[in]modetrue for normal mode, false for remap mode.
+
+
+
Note
Adafruit and many ebay displays use remap mode. Use normal mode to rotate these displays 180 degrees.
+ +
+
+ +

◆ displayRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayRows ()
+
+inlineinherited
+
+
Returns
The display height in rows with eight pixels to a row.
+ +
+
+ +

◆ displayWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayWidth ()
+
+inlineinherited
+
+
Returns
The display width in pixels.
+ +
+
+ +

◆ fieldWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::fieldWidth (uint8_t n)
+
+inherited
+
+ +

Width of a field in pixels.

+
Parameters
+ + +
[in]nNumber of characters in the field.
+
+
+
Returns
Width of the field.
+ +
+
+ +

◆ font()

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t* SSD1306Ascii::font ()
+
+inlineinherited
+
+
Returns
The current font pointer.
+ +
+
+ +

◆ fontCharCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontCharCount ()
+
+inherited
+
+
Returns
The count of characters in a font.
+ +
+
+ +

◆ fontFirstChar()

+ +
+
+ + + + + +
+ + + + + + + +
char SSD1306Ascii::fontFirstChar ()
+
+inherited
+
+
Returns
The first character in a font.
+ +
+
+ +

◆ fontHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontHeight ()
+
+inherited
+
+
Returns
The current font height in pixels.
+ +
+
+ +

◆ fontRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontRows ()
+
+inlineinherited
+
+
Returns
The number of eight pixel rows required to display a character in the current font.
+ +
+
+ +

◆ fontWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontWidth ()
+
+inherited
+
+
Returns
The maximum width of characters in the current font.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::init (const DevTypedev)
+
+inherited
+
+ +

Initialize the display controller.

+
Parameters
+ + +
[in]devA display initialization structure.
+
+
+ +
+
+ +

◆ letterSpacing()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::letterSpacing ()
+
+inlineinherited
+
+
Returns
letter-spacing in pixels with magnification factor.
+ +
+
+ +

◆ magFactor()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::magFactor ()
+
+inlineinherited
+
+
Returns
The character magnification factor.
+ +
+
+ +

◆ row()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::row ()
+
+inlineinherited
+
+
Returns
the current row number with eight pixels to a row.
+ +
+
+ +

◆ setCol()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setCol (uint8_t col)
+
+inherited
+
+ +

Set the current column number.

+
Parameters
+ + +
[in]colThe desired column number in pixels.
+
+
+ +
+
+ +

◆ setContrast()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setContrast (uint8_t value)
+
+inherited
+
+ +

Set the display contrast.

+
Parameters
+ + +
[in]valueThe contrast level in th range 0 to 255.
+
+
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::setCursor (uint8_t col,
uint8_t row 
)
+
+inherited
+
+ +

Set the cursor position.

+
Parameters
+ + + +
[in]colThe column number in pixels.
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setFont (const uint8_t * font)
+
+inherited
+
+ +

Set the current font.

+
Parameters
+ + +
[in]fontPointer to a font table.
+
+
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setLetterSpacing (uint8_t pixels)
+
+inlineinherited
+
+ +

Set letter-spacing. setFont() will restore default letter-spacing.

+
Parameters
+ + +
[in]pixelsletter-spacing in pixels before magnification.
+
+
+ +
+
+ +

◆ setRow()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setRow (uint8_t row)
+
+inherited
+
+ +

Set the current row number.

+
Parameters
+ + +
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setScroll()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setScroll (bool enable)
+
+inherited
+
+ +

Enable or disable scroll mode.

+
Parameters
+ + +
[in]enabletrue enable scroll on new line false disable scroll.
+
+
+
Note
Scroll mode is only supported on 64 pixel high displays. Using setRow() or setCursor() will be unpredictable in scroll mode. You must use a font with an integral number of line on the display.
+ +
+
+ +

◆ ssd1306WriteCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteCmd (uint8_t c)
+
+inlineinherited
+
+ +

Write a command byte to the display controller.

+
Parameters
+ + +
[in]cThe command byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRam()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRam (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRamBuf()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRamBuf (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte may be buffered until a call to ssd1306WriteCmd or ssd1306WriteRam.
+ +
+
+ +

◆ strWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::strWidth (const char * str)
+
+inherited
+
+
Parameters
+ + +
[in]strThe pointer to string.
+
+
+
Returns
the width of the string in pixels.
+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (uint8_t c)
+
+inherited
+
+ +

Display a character.

+
Parameters
+ + +
[in]cThe character to display.
+
+
+
Returns
the value one.
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (const char * s)
+
+inherited
+
+ +

Display a string.

+
Parameters
+ + +
[in]sThe string to display.
+
+
+
Returns
The length of the string.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi__coll__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_soft_spi__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e45a9b69bbbbf6db23a6a633925b395c331b8e67 GIT binary patch literal 2199 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 + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SSD1306AsciiSpi Member List
+
+
+ +

This is the complete list of members for SSD1306AsciiSpi, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin(const DevType *dev, uint8_t cs, uint8_t dc)SSD1306AsciiSpiinline
begin(const DevType *dev, uint8_t cs, uint8_t dc, uint8_t rst)SSD1306AsciiSpiinline
charWidth(uint8_t c)SSD1306Ascii
clear()SSD1306Ascii
clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)SSD1306Ascii
clearField(uint8_t col, uint8_t row, uint8_t n)SSD1306Ascii
clearToEOL()SSD1306Ascii
col()SSD1306Asciiinline
displayHeight()SSD1306Asciiinline
displayRemap(bool mode)SSD1306Ascii
displayRows()SSD1306Asciiinline
displayWidth()SSD1306Asciiinline
fieldWidth(uint8_t n)SSD1306Ascii
font()SSD1306Asciiinline
fontCharCount()SSD1306Ascii
fontFirstChar()SSD1306Ascii
fontHeight()SSD1306Ascii
fontRows()SSD1306Asciiinline
fontWidth()SSD1306Ascii
home()SSD1306Asciiinline
init(const DevType *dev)SSD1306Ascii
letterSpacing()SSD1306Asciiinline
magFactor()SSD1306Asciiinline
row()SSD1306Asciiinline
set1X()SSD1306Asciiinline
set2X()SSD1306Asciiinline
setCol(uint8_t col)SSD1306Ascii
setContrast(uint8_t value)SSD1306Ascii
setCursor(uint8_t col, uint8_t row)SSD1306Ascii
setFont(const uint8_t *font)SSD1306Ascii
setLetterSpacing(uint8_t pixels)SSD1306Asciiinline
setRow(uint8_t row)SSD1306Ascii
setScroll(bool enable)SSD1306Ascii
SSD1306Ascii() (defined in SSD1306Ascii)SSD1306Asciiinline
ssd1306WriteCmd(uint8_t c)SSD1306Asciiinline
ssd1306WriteRam(uint8_t c)SSD1306Ascii
ssd1306WriteRamBuf(uint8_t c)SSD1306Ascii
strWidth(const char *str)SSD1306Ascii
write(uint8_t c)SSD1306Ascii
write(const char *s)SSD1306Ascii
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi.html new file mode 100644 index 0000000..6af52f7 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi.html @@ -0,0 +1,1407 @@ + + + + + + + +SSD1306Ascii: SSD1306AsciiSpi Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SSD1306AsciiSpi Class Reference
+
+
+ +

Class for SPI displays on the hardware SPI bus. + More...

+ +

#include <SSD1306AsciiSpi.h>

+
+Inheritance diagram for SSD1306AsciiSpi:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for SSD1306AsciiSpi:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (const DevType *dev, uint8_t cs, uint8_t dc)
 Initialize the display controller. More...
 
void begin (const DevType *dev, uint8_t cs, uint8_t dc, uint8_t rst)
 Initialize the display controller. More...
 
uint8_t charWidth (uint8_t c)
 Determine the width of a character. More...
 
+void clear ()
 Clear the display and set the cursor to (0, 0).
 
void clear (uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)
 Clear a region of the display. More...
 
void clearField (uint8_t col, uint8_t row, uint8_t n)
 Clear a field of n fieldWidth() characters. More...
 
void clearToEOL ()
 Clear the display to the end of the current line. More...
 
uint8_t col ()
 
uint8_t displayHeight ()
 
void displayRemap (bool mode)
 Set display to normal or 180 degree remap mode. More...
 
uint8_t displayRows ()
 
uint8_t displayWidth ()
 
size_t fieldWidth (uint8_t n)
 Width of a field in pixels. More...
 
const uint8_t * font ()
 
uint8_t fontCharCount ()
 
char fontFirstChar ()
 
uint8_t fontHeight ()
 
uint8_t fontRows ()
 
uint8_t fontWidth ()
 
+void home ()
 Set the cursor position to (0, 0).
 
void init (const DevType *dev)
 Initialize the display controller. More...
 
uint8_t letterSpacing ()
 
uint8_t magFactor ()
 
uint8_t row ()
 
+void set1X ()
 Set the character magnification factor to one.
 
+void set2X ()
 Set the character magnification factor to two.
 
void setCol (uint8_t col)
 Set the current column number. More...
 
void setContrast (uint8_t value)
 Set the display contrast. More...
 
void setCursor (uint8_t col, uint8_t row)
 Set the cursor position. More...
 
void setFont (const uint8_t *font)
 Set the current font. More...
 
void setLetterSpacing (uint8_t pixels)
 Set letter-spacing. setFont() will restore default letter-spacing. More...
 
void setRow (uint8_t row)
 Set the current row number. More...
 
void setScroll (bool enable)
 Enable or disable scroll mode. More...
 
void ssd1306WriteCmd (uint8_t c)
 Write a command byte to the display controller. More...
 
void ssd1306WriteRam (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
void ssd1306WriteRamBuf (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
size_t strWidth (const char *str)
 
size_t write (uint8_t c)
 Display a character. More...
 
size_t write (const char *s)
 Display a string. More...
 
+

Detailed Description

+

Class for SPI displays on the hardware SPI bus.

+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiSpi::begin (const DevTypedev,
uint8_t cs,
uint8_t dc 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + +
[in]devA device initialization structure.
[in]csThe display controller chip select pin.
[in]dcThe display controller data/command pin.
+
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiSpi::begin (const DevTypedev,
uint8_t cs,
uint8_t dc,
uint8_t rst 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + + +
[in]devA device initialization structure.
[in]csThe display controller chip select pin.
[in]dcThe display controller cdata/command pin.
[in]rstThe display controller reset pin.
+
+
+ +
+
+ +

◆ charWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t SSD1306Ascii::charWidth (uint8_t c)
+
+inherited
+
+ +

Determine the width of a character.

+
Parameters
+ + +
[in]cCharacter code.
+
+
+
Returns
Width of the character in pixels.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clear (uint8_t c0,
uint8_t c1,
uint8_t r0,
uint8_t r1 
)
+
+inherited
+
+ +

Clear a region of the display.

+
Parameters
+ + + + + +
[in]c0Starting column.
[in]c1Ending column.
[in]r0Starting row;
[in]r1Ending row;
+
+
+
Note
The final cursor position will be (c0, r0).
+ +
+
+ +

◆ clearField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clearField (uint8_t col,
uint8_t row,
uint8_t n 
)
+
+inherited
+
+ +

Clear a field of n fieldWidth() characters.

+
Parameters
+ + + + +
[in]colField start column.
+
[in]rowField start row.
+
[in]nNumber of characters in the field.
+
+
+ +
+
+ +

◆ clearToEOL()

+ +
+
+ + + + + +
+ + + + + + + +
void SSD1306Ascii::clearToEOL ()
+
+inherited
+
+ +

Clear the display to the end of the current line.

+
Note
The number of rows cleared will be determined by the height of the current font.
+
+The cursor will be returned to the original position.
+ +
+
+ +

◆ col()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::col ()
+
+inlineinherited
+
+
Returns
The current column in pixels.
+ +
+
+ +

◆ displayHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayHeight ()
+
+inlineinherited
+
+
Returns
The display hight in pixels.
+ +
+
+ +

◆ displayRemap()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::displayRemap (bool mode)
+
+inherited
+
+ +

Set display to normal or 180 degree remap mode.

+
Parameters
+ + +
[in]modetrue for normal mode, false for remap mode.
+
+
+
Note
Adafruit and many ebay displays use remap mode. Use normal mode to rotate these displays 180 degrees.
+ +
+
+ +

◆ displayRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayRows ()
+
+inlineinherited
+
+
Returns
The display height in rows with eight pixels to a row.
+ +
+
+ +

◆ displayWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayWidth ()
+
+inlineinherited
+
+
Returns
The display width in pixels.
+ +
+
+ +

◆ fieldWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::fieldWidth (uint8_t n)
+
+inherited
+
+ +

Width of a field in pixels.

+
Parameters
+ + +
[in]nNumber of characters in the field.
+
+
+
Returns
Width of the field.
+ +
+
+ +

◆ font()

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t* SSD1306Ascii::font ()
+
+inlineinherited
+
+
Returns
The current font pointer.
+ +
+
+ +

◆ fontCharCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontCharCount ()
+
+inherited
+
+
Returns
The count of characters in a font.
+ +
+
+ +

◆ fontFirstChar()

+ +
+
+ + + + + +
+ + + + + + + +
char SSD1306Ascii::fontFirstChar ()
+
+inherited
+
+
Returns
The first character in a font.
+ +
+
+ +

◆ fontHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontHeight ()
+
+inherited
+
+
Returns
The current font height in pixels.
+ +
+
+ +

◆ fontRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontRows ()
+
+inlineinherited
+
+
Returns
The number of eight pixel rows required to display a character in the current font.
+ +
+
+ +

◆ fontWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontWidth ()
+
+inherited
+
+
Returns
The maximum width of characters in the current font.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::init (const DevTypedev)
+
+inherited
+
+ +

Initialize the display controller.

+
Parameters
+ + +
[in]devA display initialization structure.
+
+
+ +
+
+ +

◆ letterSpacing()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::letterSpacing ()
+
+inlineinherited
+
+
Returns
letter-spacing in pixels with magnification factor.
+ +
+
+ +

◆ magFactor()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::magFactor ()
+
+inlineinherited
+
+
Returns
The character magnification factor.
+ +
+
+ +

◆ row()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::row ()
+
+inlineinherited
+
+
Returns
the current row number with eight pixels to a row.
+ +
+
+ +

◆ setCol()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setCol (uint8_t col)
+
+inherited
+
+ +

Set the current column number.

+
Parameters
+ + +
[in]colThe desired column number in pixels.
+
+
+ +
+
+ +

◆ setContrast()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setContrast (uint8_t value)
+
+inherited
+
+ +

Set the display contrast.

+
Parameters
+ + +
[in]valueThe contrast level in th range 0 to 255.
+
+
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::setCursor (uint8_t col,
uint8_t row 
)
+
+inherited
+
+ +

Set the cursor position.

+
Parameters
+ + + +
[in]colThe column number in pixels.
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setFont (const uint8_t * font)
+
+inherited
+
+ +

Set the current font.

+
Parameters
+ + +
[in]fontPointer to a font table.
+
+
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setLetterSpacing (uint8_t pixels)
+
+inlineinherited
+
+ +

Set letter-spacing. setFont() will restore default letter-spacing.

+
Parameters
+ + +
[in]pixelsletter-spacing in pixels before magnification.
+
+
+ +
+
+ +

◆ setRow()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setRow (uint8_t row)
+
+inherited
+
+ +

Set the current row number.

+
Parameters
+ + +
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setScroll()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setScroll (bool enable)
+
+inherited
+
+ +

Enable or disable scroll mode.

+
Parameters
+ + +
[in]enabletrue enable scroll on new line false disable scroll.
+
+
+
Note
Scroll mode is only supported on 64 pixel high displays. Using setRow() or setCursor() will be unpredictable in scroll mode. You must use a font with an integral number of line on the display.
+ +
+
+ +

◆ ssd1306WriteCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteCmd (uint8_t c)
+
+inlineinherited
+
+ +

Write a command byte to the display controller.

+
Parameters
+ + +
[in]cThe command byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRam()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRam (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRamBuf()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRamBuf (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte may be buffered until a call to ssd1306WriteCmd or ssd1306WriteRam.
+ +
+
+ +

◆ strWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::strWidth (const char * str)
+
+inherited
+
+
Parameters
+ + +
[in]strThe pointer to string.
+
+
+
Returns
the width of the string in pixels.
+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (uint8_t c)
+
+inherited
+
+ +

Display a character.

+
Parameters
+ + +
[in]cThe character to display.
+
+
+
Returns
the value one.
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (const char * s)
+
+inherited
+
+ +

Display a string.

+
Parameters
+ + +
[in]sThe string to display.
+
+
+
Returns
The length of the string.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__coll__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2993306567cebbedbf6c5ab0b40adee4c12318e9 GIT binary patch literal 2081 zcmcJQcU03^7RP^RHYgX)8$6h=jHR!jdQi0#Zjs5RnoI!bXRnB1UkO z8hQi*0Td!e>VhaC^b$z{9Iz2W?{(sMcFvytd-uNc-u>hL@$UKF_j%uY=UwcjC4Q0s z06^N&!PZ@rlSTW@0kG(7@)&UwC9wbB?QMa*?<>FYc{%`yk2u<%@rcb4@?FE_>=nWD zUmoTb6G{sYIH?rblq|c1d*^Bpby4yN#{#_AlYDv}0bSW1a)78_P`<`giThTUFr-on zl0FPVAxVe0mewECxWlso&pBGi4DNQ?uYn;}mSgb^CT}KAAZ$f3r4+#z!w93}WLwOD zE3_^5^U#(`G-L$(ze_P)H`fr*=d?3=>m0_F~fi&Yq{4Z8Bp9g zmh4@gAHv~nBI&-E+HkwGdn7YU=F0Q6UAUX_!R z31ForwXSVZrjGCvT28R{9>HPwZD$XOnh)#k=$Mem(;= z3hBWw%(Bj{83c~6RVW}=N}jtmZ^q^9EIRhtle{V;l{OQsOz&8XBVQa|NOfz4NJCe;BUl{hEH)9(YL!c|*zRe05XQfQak7~*Y%i}GLK#ea4%Tt8QvW9sSD zLn98?T-LzGT-@^F(u3MYJZ&2qUvQ6J$r0*{ly40Ao^@zfS}Tki0Ws=~!HrnrFXkGjFd#zQ zLJ^u{ShQnZK{J^o7gL-!)0F>3aT(pIzT7;MTWZaIa2*J1Hs}Zro()|k+hCd*hG~@ry*D|R63JgEvLi=5iZ{-B`$_Xela;G#@lZ{? zHl;4_1n9%l(Sanza3btk`jDGoYBUyC^-GHT)91}d?w4PT7bU-=^B;7GWI-)Q8Ufd< zQc}+cjet+vbJ%tJj+4a=QLr-@?}m+qngE5daqbrGU6ilWvScC**gnZjZ+u-W;A|{m zv{%;_4gsIPEcCPy$9E?guBRqc0w*R~@M)`YUlmDaQx=J(dn5rZZc-9r1i0kw-l)OO zS#|U)YfVRoWcQN!P(=rjuilL@%qrpTh`<(&YVsod;5 zenz}_l*fP*K2_Y1)icY+D0GZ!kAqZY0s?((AupK7sTRe9o2D2waoa*2j$udOSXsZK zi2|}8ypPNhS0z~2MxhHm|GO96xqim!I6T(t|rFRV$rkI#$D&Bb)k+01EEED zAcFq(PkOB^so>y{?y9g&2khm)nZ8nf*nN$?Gw)b^R%-Op{}m1qfF=A(rH~1Y!&`sN zyf-9l!iUcbvb-WJR{Hj^nX}dRsb3Sa55qoMqaTx^LFQmU7;RaSOhHkH_kp)grAGeo zS^l7;yjJ-eM9X|HJ?ATg8Zc((%ti8rz7&$J$B-ePo5xS4yN!IOA>8lo~$T^lYqKiL?9QK<-Sn zbMA|+OM|;Qmi=@nj`?DGG_<$eV=)SDT1KK2*3$}C z^$p5(3miVS=@rjGkLA6cQqt;pJ-hCv(aY$X36ZZdFH3X0g2$095_gctvrh#|i_wGV zwQ9jnKE8{_ycM9L+8wuEG(`d2CY9fGeB>`giG>37%D%HZGH1g?2IG&=8mgxNe;UpY z4RwW1(^vhho<($8R;5c0(2BuZ{ar1d3Cn58qIh4n2Yl+%RA8)1I*U9Xa74P;(ro+) FzXRmQ)Xo3^ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__inherit__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_spi__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2993306567cebbedbf6c5ab0b40adee4c12318e9 GIT binary patch literal 2081 zcmcJQcU03^7RP^RHYgX)8$6h=jHR!jdQi0#Zjs5RnoI!bXRnB1UkO z8hQi*0Td!e>VhaC^b$z{9Iz2W?{(sMcFvytd-uNc-u>hL@$UKF_j%uY=UwcjC4Q0s z06^N&!PZ@rlSTW@0kG(7@)&UwC9wbB?QMa*?<>FYc{%`yk2u<%@rcb4@?FE_>=nWD zUmoTb6G{sYIH?rblq|c1d*^Bpby4yN#{#_AlYDv}0bSW1a)78_P`<`giThTUFr-on zl0FPVAxVe0mewECxWlso&pBGi4DNQ?uYn;}mSgb^CT}KAAZ$f3r4+#z!w93}WLwOD zE3_^5^U#(`G-L$(ze_P)H`fr*=d?3=>m0_F~fi&Yq{4Z8Bp9g zmh4@gAHv~nBI&-E+HkwGdn7YU=F0Q6UAUX_!R z31ForwXSVZrjGCvT28R{9>HPwZD$XOnh)#k=$Mem(;= z3hBWw%(Bj{83c~6RVW}=N}jtmZ^q^9EIRhtle{V;l{OQsOz&8XBVQa|NOfz4NJCe;BUl{hEH)9(YL!c|*zRe05XQfQak7~*Y%i}GLK#ea4%Tt8QvW9sSD zLn98?T-LzGT-@^F(u3MYJZ&2qUvQ6J$r0*{ly40Ao^@zfS}Tki0Ws=~!HrnrFXkGjFd#zQ zLJ^u{ShQnZK{J^o7gL-!)0F>3aT(pIzT7;MTWZaIa2*J1Hs}Zro()|k+hCd*hG~@ry*D|R63JgEvLi=5iZ{-B`$_Xela;G#@lZ{? zHl;4_1n9%l(Sanza3btk`jDGoYBUyC^-GHT)91}d?w4PT7bU-=^B;7GWI-)Q8Ufd< zQc}+cjet+vbJ%tJj+4a=QLr-@?}m+qngE5daqbrGU6ilWvScC**gnZjZ+u-W;A|{m zv{%;_4gsIPEcCPy$9E?guBRqc0w*R~@M)`YUlmDaQx=J(dn5rZZc-9r1i0kw-l)OO zS#|U)YfVRoWcQN!P(=rjuilL@%qrpTh`<(&YVsod;5 zenz}_l*fP*K2_Y1)icY+D0GZ!kAqZY0s?((AupK7sTRe9o2D2waoa*2j$udOSXsZK zi2|}8ypPNhS0z~2MxhHm|GO96xqim!I6T(t|rFRV$rkI#$D&Bb)k+01EEED zAcFq(PkOB^so>y{?y9g&2khm)nZ8nf*nN$?Gw)b^R%-Op{}m1qfF=A(rH~1Y!&`sN zyf-9l!iUcbvb-WJR{Hj^nX}dRsb3Sa55qoMqaTx^LFQmU7;RaSOhHkH_kp)grAGeo zS^l7;yjJ-eM9X|HJ?ATg8Zc((%ti8rz7&$J$B-ePo5xS4yN!IOA>8lo~$T^lYqKiL?9QK<-Sn zbMA|+OM|;Qmi=@nj`?DGG_<$eV=)SDT1KK2*3$}C z^$p5(3miVS=@rjGkLA6cQqt;pJ-hCv(aY$X36ZZdFH3X0g2$095_gctvrh#|i_wGV zwQ9jnKE8{_ycM9L+8wuEG(`d2CY9fGeB>`giG>37%D%HZGH1g?2IG&=8mgxNe;UpY z4RwW1(^vhho<($8R;5c0(2BuZ{ar1d3Cn58qIh4n2Yl+%RA8)1I*U9Xa74P;(ro+) FzXRmQ)Xo3^ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire-members.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire-members.html new file mode 100644 index 0000000..7957b63 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire-members.html @@ -0,0 +1,120 @@ + + + + + + + +SSD1306Ascii: Member List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SSD1306AsciiWire Member List
+
+
+ +

This is the complete list of members for SSD1306AsciiWire, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin(const DevType *dev, uint8_t i2cAddr)SSD1306AsciiWireinline
begin(const DevType *dev, uint8_t i2cAddr, uint8_t rst)SSD1306AsciiWireinline
charWidth(uint8_t c)SSD1306Ascii
clear()SSD1306Ascii
clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)SSD1306Ascii
clearField(uint8_t col, uint8_t row, uint8_t n)SSD1306Ascii
clearToEOL()SSD1306Ascii
col()SSD1306Asciiinline
displayHeight()SSD1306Asciiinline
displayRemap(bool mode)SSD1306Ascii
displayRows()SSD1306Asciiinline
displayWidth()SSD1306Asciiinline
fieldWidth(uint8_t n)SSD1306Ascii
font()SSD1306Asciiinline
fontCharCount()SSD1306Ascii
fontFirstChar()SSD1306Ascii
fontHeight()SSD1306Ascii
fontRows()SSD1306Asciiinline
fontWidth()SSD1306Ascii
home()SSD1306Asciiinline
init(const DevType *dev)SSD1306Ascii
letterSpacing()SSD1306Asciiinline
magFactor()SSD1306Asciiinline
row()SSD1306Asciiinline
set1X()SSD1306Asciiinline
set2X()SSD1306Asciiinline
set400kHz()SSD1306AsciiWireinline
setCol(uint8_t col)SSD1306Ascii
setContrast(uint8_t value)SSD1306Ascii
setCursor(uint8_t col, uint8_t row)SSD1306Ascii
setFont(const uint8_t *font)SSD1306Ascii
setLetterSpacing(uint8_t pixels)SSD1306Asciiinline
setRow(uint8_t row)SSD1306Ascii
setScroll(bool enable)SSD1306Ascii
SSD1306Ascii() (defined in SSD1306Ascii)SSD1306Asciiinline
ssd1306WriteCmd(uint8_t c)SSD1306Asciiinline
ssd1306WriteRam(uint8_t c)SSD1306Ascii
ssd1306WriteRamBuf(uint8_t c)SSD1306Ascii
strWidth(const char *str)SSD1306Ascii
write(uint8_t c)SSD1306Ascii
write(const char *s)SSD1306Ascii
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire.html new file mode 100644 index 0000000..26d7598 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire.html @@ -0,0 +1,1397 @@ + + + + + + + +SSD1306Ascii: SSD1306AsciiWire Class Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SSD1306AsciiWire Class Reference
+
+
+ +

Class for I2C displays using Wire. + More...

+ +

#include <SSD1306AsciiWire.h>

+
+Inheritance diagram for SSD1306AsciiWire:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for SSD1306AsciiWire:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void begin (const DevType *dev, uint8_t i2cAddr)
 Initialize the display controller. More...
 
void begin (const DevType *dev, uint8_t i2cAddr, uint8_t rst)
 Initialize the display controller. More...
 
uint8_t charWidth (uint8_t c)
 Determine the width of a character. More...
 
+void clear ()
 Clear the display and set the cursor to (0, 0).
 
void clear (uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1)
 Clear a region of the display. More...
 
void clearField (uint8_t col, uint8_t row, uint8_t n)
 Clear a field of n fieldWidth() characters. More...
 
void clearToEOL ()
 Clear the display to the end of the current line. More...
 
uint8_t col ()
 
uint8_t displayHeight ()
 
void displayRemap (bool mode)
 Set display to normal or 180 degree remap mode. More...
 
uint8_t displayRows ()
 
uint8_t displayWidth ()
 
size_t fieldWidth (uint8_t n)
 Width of a field in pixels. More...
 
const uint8_t * font ()
 
uint8_t fontCharCount ()
 
char fontFirstChar ()
 
uint8_t fontHeight ()
 
uint8_t fontRows ()
 
uint8_t fontWidth ()
 
+void home ()
 Set the cursor position to (0, 0).
 
void init (const DevType *dev)
 Initialize the display controller. More...
 
uint8_t letterSpacing ()
 
uint8_t magFactor ()
 
uint8_t row ()
 
+void set1X ()
 Set the character magnification factor to one.
 
+void set2X ()
 Set the character magnification factor to two.
 
+void set400kHz ()
 Set the I2C clock rate to 400 kHz. Deprecated use Wire.setClock(400000L)
 
void setCol (uint8_t col)
 Set the current column number. More...
 
void setContrast (uint8_t value)
 Set the display contrast. More...
 
void setCursor (uint8_t col, uint8_t row)
 Set the cursor position. More...
 
void setFont (const uint8_t *font)
 Set the current font. More...
 
void setLetterSpacing (uint8_t pixels)
 Set letter-spacing. setFont() will restore default letter-spacing. More...
 
void setRow (uint8_t row)
 Set the current row number. More...
 
void setScroll (bool enable)
 Enable or disable scroll mode. More...
 
void ssd1306WriteCmd (uint8_t c)
 Write a command byte to the display controller. More...
 
void ssd1306WriteRam (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
void ssd1306WriteRamBuf (uint8_t c)
 Write a byte to RAM in the display controller. More...
 
size_t strWidth (const char *str)
 
size_t write (uint8_t c)
 Display a character. More...
 
size_t write (const char *s)
 Display a string. More...
 
+

Detailed Description

+

Class for I2C displays using Wire.

+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306AsciiWire::begin (const DevTypedev,
uint8_t i2cAddr 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + +
[in]devA device initialization structure.
[in]i2cAddrThe I2C address of the display controller.
+
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306AsciiWire::begin (const DevTypedev,
uint8_t i2cAddr,
uint8_t rst 
)
+
+inline
+
+ +

Initialize the display controller.

+
Parameters
+ + + + +
[in]devA device initialization structure.
[in]i2cAddrThe I2C address of the display controller.
[in]rstThe display controller reset pin.
+
+
+ +
+
+ +

◆ charWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t SSD1306Ascii::charWidth (uint8_t c)
+
+inherited
+
+ +

Determine the width of a character.

+
Parameters
+ + +
[in]cCharacter code.
+
+
+
Returns
Width of the character in pixels.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clear (uint8_t c0,
uint8_t c1,
uint8_t r0,
uint8_t r1 
)
+
+inherited
+
+ +

Clear a region of the display.

+
Parameters
+ + + + + +
[in]c0Starting column.
[in]c1Ending column.
[in]r0Starting row;
[in]r1Ending row;
+
+
+
Note
The final cursor position will be (c0, r0).
+ +
+
+ +

◆ clearField()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::clearField (uint8_t col,
uint8_t row,
uint8_t n 
)
+
+inherited
+
+ +

Clear a field of n fieldWidth() characters.

+
Parameters
+ + + + +
[in]colField start column.
+
[in]rowField start row.
+
[in]nNumber of characters in the field.
+
+
+ +
+
+ +

◆ clearToEOL()

+ +
+
+ + + + + +
+ + + + + + + +
void SSD1306Ascii::clearToEOL ()
+
+inherited
+
+ +

Clear the display to the end of the current line.

+
Note
The number of rows cleared will be determined by the height of the current font.
+
+The cursor will be returned to the original position.
+ +
+
+ +

◆ col()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::col ()
+
+inlineinherited
+
+
Returns
The current column in pixels.
+ +
+
+ +

◆ displayHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayHeight ()
+
+inlineinherited
+
+
Returns
The display hight in pixels.
+ +
+
+ +

◆ displayRemap()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::displayRemap (bool mode)
+
+inherited
+
+ +

Set display to normal or 180 degree remap mode.

+
Parameters
+ + +
[in]modetrue for normal mode, false for remap mode.
+
+
+
Note
Adafruit and many ebay displays use remap mode. Use normal mode to rotate these displays 180 degrees.
+ +
+
+ +

◆ displayRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayRows ()
+
+inlineinherited
+
+
Returns
The display height in rows with eight pixels to a row.
+ +
+
+ +

◆ displayWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::displayWidth ()
+
+inlineinherited
+
+
Returns
The display width in pixels.
+ +
+
+ +

◆ fieldWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::fieldWidth (uint8_t n)
+
+inherited
+
+ +

Width of a field in pixels.

+
Parameters
+ + +
[in]nNumber of characters in the field.
+
+
+
Returns
Width of the field.
+ +
+
+ +

◆ font()

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t* SSD1306Ascii::font ()
+
+inlineinherited
+
+
Returns
The current font pointer.
+ +
+
+ +

◆ fontCharCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontCharCount ()
+
+inherited
+
+
Returns
The count of characters in a font.
+ +
+
+ +

◆ fontFirstChar()

+ +
+
+ + + + + +
+ + + + + + + +
char SSD1306Ascii::fontFirstChar ()
+
+inherited
+
+
Returns
The first character in a font.
+ +
+
+ +

◆ fontHeight()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontHeight ()
+
+inherited
+
+
Returns
The current font height in pixels.
+ +
+
+ +

◆ fontRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontRows ()
+
+inlineinherited
+
+
Returns
The number of eight pixel rows required to display a character in the current font.
+ +
+
+ +

◆ fontWidth()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::fontWidth ()
+
+inherited
+
+
Returns
The maximum width of characters in the current font.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::init (const DevTypedev)
+
+inherited
+
+ +

Initialize the display controller.

+
Parameters
+ + +
[in]devA display initialization structure.
+
+
+ +
+
+ +

◆ letterSpacing()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::letterSpacing ()
+
+inlineinherited
+
+
Returns
letter-spacing in pixels with magnification factor.
+ +
+
+ +

◆ magFactor()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::magFactor ()
+
+inlineinherited
+
+
Returns
The character magnification factor.
+ +
+
+ +

◆ row()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t SSD1306Ascii::row ()
+
+inlineinherited
+
+
Returns
the current row number with eight pixels to a row.
+ +
+
+ +

◆ setCol()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setCol (uint8_t col)
+
+inherited
+
+ +

Set the current column number.

+
Parameters
+ + +
[in]colThe desired column number in pixels.
+
+
+ +
+
+ +

◆ setContrast()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setContrast (uint8_t value)
+
+inherited
+
+ +

Set the display contrast.

+
Parameters
+ + +
[in]valueThe contrast level in th range 0 to 255.
+
+
+ +
+
+ +

◆ setCursor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SSD1306Ascii::setCursor (uint8_t col,
uint8_t row 
)
+
+inherited
+
+ +

Set the cursor position.

+
Parameters
+ + + +
[in]colThe column number in pixels.
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setFont()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setFont (const uint8_t * font)
+
+inherited
+
+ +

Set the current font.

+
Parameters
+ + +
[in]fontPointer to a font table.
+
+
+ +
+
+ +

◆ setLetterSpacing()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setLetterSpacing (uint8_t pixels)
+
+inlineinherited
+
+ +

Set letter-spacing. setFont() will restore default letter-spacing.

+
Parameters
+ + +
[in]pixelsletter-spacing in pixels before magnification.
+
+
+ +
+
+ +

◆ setRow()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setRow (uint8_t row)
+
+inherited
+
+ +

Set the current row number.

+
Parameters
+ + +
[in]rowthe row number in eight pixel rows.
+
+
+ +
+
+ +

◆ setScroll()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::setScroll (bool enable)
+
+inherited
+
+ +

Enable or disable scroll mode.

+
Parameters
+ + +
[in]enabletrue enable scroll on new line false disable scroll.
+
+
+
Note
Scroll mode is only supported on 64 pixel high displays. Using setRow() or setCursor() will be unpredictable in scroll mode. You must use a font with an integral number of line on the display.
+ +
+
+ +

◆ ssd1306WriteCmd()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteCmd (uint8_t c)
+
+inlineinherited
+
+ +

Write a command byte to the display controller.

+
Parameters
+ + +
[in]cThe command byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRam()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRam (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte will immediately be sent to the controller.
+ +
+
+ +

◆ ssd1306WriteRamBuf()

+ +
+
+ + + + + +
+ + + + + + + + +
void SSD1306Ascii::ssd1306WriteRamBuf (uint8_t c)
+
+inherited
+
+ +

Write a byte to RAM in the display controller.

+
Parameters
+ + +
[in]cThe data byte.
+
+
+
Note
The byte may be buffered until a call to ssd1306WriteCmd or ssd1306WriteRam.
+ +
+
+ +

◆ strWidth()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::strWidth (const char * str)
+
+inherited
+
+
Parameters
+ + +
[in]strThe pointer to string.
+
+
+
Returns
the width of the string in pixels.
+ +
+
+ +

◆ write() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (uint8_t c)
+
+inherited
+
+ +

Display a character.

+
Parameters
+ + +
[in]cThe character to display.
+
+
+
Returns
the value one.
+ +
+
+ +

◆ write() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t SSD1306Ascii::write (const char * s)
+
+inherited
+
+ +

Display a string.

+
Parameters
+ + +
[in]sThe string to display.
+
+
+
Returns
The length of the string.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__coll__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d063557a89543f28298d2fd52be087f3d43c156a GIT binary patch literal 2110 zcmcJQe>BtkAIC?9Y0Czm$8CfvR zKM@M<{h?>>ilgiP;IeB8G~M#zUlkT5g0S*C$JZZF-E*BwTUJco+9=b(W`UN~UX&=@ zC$14`&{7HSgn^vKB4Snc2xtv0<8EjTPi~ zz;u;Mek)Z<=*XY}Mg$L_8)GV_#ywplOk|h_>>?=Zir7#0iPMK=sqfRpByTu>7*an0 zNa^L0gzig+W~-!^7!A%l8rLb@*!UNHFWgGO)eq`Nd^ofCJbDvhQ>LeWGAlDN`HERW zkCu|Q;+M6UZam{rbxf^RaTuZVb@2Tm?@K>_h{8P@+x~EB@7dqy2q(_BW)6Gzf;Pve zZhLm=WW1b@7h0M1g#2|$ugDX-hY@+T8#3$<8U6$Bv*I<3Og7CF(7|Ss`Hg)g$QD>-ZhyPQ3p@^bZn^=afc2y+pq-!mu!8zm1>h%3nahH zGC;%ApGX7(-v-&<0-?f`Im;#ZxV#54fozu6``%>{h6U-2dab7QbosjZY7xcz#VHT6SK^;&l%tTthv;@upy1i=+9 zHXV^i$@NvfGsJ`Nu@wI%8=isP$`Fh)TC$bV0878q-;xCg;DeXPEwYVfn(VwQa>P6z zIInG>&S-M)IcGX?<{__@c$Z~>>)Ecdd;R~J!!uctJFzAKq&{4T#3ehqldcUIv3|ma zNuf3O6y~#6cZxexaXZ^>vO}tptj;e!2-ld7a9#wSg(M!=I-~L(4`Ee%u(_A5%{{L@ zwDcH$)HJUN!U`5xo6S#mhqN;8DpW@=7=j<3_tj0y+;NVJPezw4>Y;%40lpLDS)dKB z;;M4b?+SgyKvkTY`|}J8i#f`|$4WM{9)0a_*)P&MXY1+-G5o~6>HnHA9P79G(97~R zH`b0G5=1L>q##^xf%nspQ*nun2BbZ_*ie(sUFDkYzR&MF1#zIC9trgd7ew7<9xkL> zZV$7*f-qV=F~z9nxVG~wk)@Y0=4#Y&)`By2_aqYPT{l<(4{vXSLvn{V%8V#Yen-0! z4{SnNCDy*0&5PF18N18w>%m2vVY1MOl^`4}s{X))RxlmE0K}7?9cMO z8yep$ZPzZ#s=~qbCftq@BP6R6gXLft47xgXVxrygixr%l`vrcxC)=+txMq^4NiQt; zOoERJM%?tFF>A0Y>F}vn*Y_6`uJ}>dJxmpMV<3+fJbx{;T!OfGI59W!LlSH%ytR`a zzNGN-R9Qbev^@$q**_QXUd6NY9fW%gRbFs(UP~##Sheayz7@@cEgLfxp97Cc4R z-@x3I$`PaC^S(vM(~XRh^nSz|U=iEpDqfU87Nda-51_37`&0H`P55V9{^yKGL`p*) z&1)+_zFA9q{aIRs@DtS4KGE-a@U4jPx-G5QVtFRPHd4o++0#8@Jig&jpXr$!M1&WA$?LdqJA zqHav^8>neD9p|QCay~b}v5Xu;LIALfCVK;ZA|W~4d4XOite$t`X?J?8@`u`P;xW_( z^H9ZnGKZo^40a(^b?LJL^P+V}8j%-KRJ(Ir>=?=C9QguScjT9C)&qp`JJyI1$c5&s z_tJjdXZY#yg%?KFegayCPTbjpG)UG1c&qBY3- TYRnaLc?g0#Asy>ZUb^uw#J}=D literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__inherit__graph.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/class_s_s_d1306_ascii_wire__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d063557a89543f28298d2fd52be087f3d43c156a GIT binary patch literal 2110 zcmcJQe>BtkAIC?9Y0Czm$8CfvR zKM@M<{h?>>ilgiP;IeB8G~M#zUlkT5g0S*C$JZZF-E*BwTUJco+9=b(W`UN~UX&=@ zC$14`&{7HSgn^vKB4Snc2xtv0<8EjTPi~ zz;u;Mek)Z<=*XY}Mg$L_8)GV_#ywplOk|h_>>?=Zir7#0iPMK=sqfRpByTu>7*an0 zNa^L0gzig+W~-!^7!A%l8rLb@*!UNHFWgGO)eq`Nd^ofCJbDvhQ>LeWGAlDN`HERW zkCu|Q;+M6UZam{rbxf^RaTuZVb@2Tm?@K>_h{8P@+x~EB@7dqy2q(_BW)6Gzf;Pve zZhLm=WW1b@7h0M1g#2|$ugDX-hY@+T8#3$<8U6$Bv*I<3Og7CF(7|Ss`Hg)g$QD>-ZhyPQ3p@^bZn^=afc2y+pq-!mu!8zm1>h%3nahH zGC;%ApGX7(-v-&<0-?f`Im;#ZxV#54fozu6``%>{h6U-2dab7QbosjZY7xcz#VHT6SK^;&l%tTthv;@upy1i=+9 zHXV^i$@NvfGsJ`Nu@wI%8=isP$`Fh)TC$bV0878q-;xCg;DeXPEwYVfn(VwQa>P6z zIInG>&S-M)IcGX?<{__@c$Z~>>)Ecdd;R~J!!uctJFzAKq&{4T#3ehqldcUIv3|ma zNuf3O6y~#6cZxexaXZ^>vO}tptj;e!2-ld7a9#wSg(M!=I-~L(4`Ee%u(_A5%{{L@ zwDcH$)HJUN!U`5xo6S#mhqN;8DpW@=7=j<3_tj0y+;NVJPezw4>Y;%40lpLDS)dKB z;;M4b?+SgyKvkTY`|}J8i#f`|$4WM{9)0a_*)P&MXY1+-G5o~6>HnHA9P79G(97~R zH`b0G5=1L>q##^xf%nspQ*nun2BbZ_*ie(sUFDkYzR&MF1#zIC9trgd7ew7<9xkL> zZV$7*f-qV=F~z9nxVG~wk)@Y0=4#Y&)`By2_aqYPT{l<(4{vXSLvn{V%8V#Yen-0! z4{SnNCDy*0&5PF18N18w>%m2vVY1MOl^`4}s{X))RxlmE0K}7?9cMO z8yep$ZPzZ#s=~qbCftq@BP6R6gXLft47xgXVxrygixr%l`vrcxC)=+txMq^4NiQt; zOoERJM%?tFF>A0Y>F}vn*Y_6`uJ}>dJxmpMV<3+fJbx{;T!OfGI59W!LlSH%ytR`a zzNGN-R9Qbev^@$q**_QXUd6NY9fW%gRbFs(UP~##Sheayz7@@cEgLfxp97Cc4R z-@x3I$`PaC^S(vM(~XRh^nSz|U=iEpDqfU87Nda-51_37`&0H`P55V9{^yKGL`p*) z&1)+_zFA9q{aIRs@DtS4KGE-a@U4jPx-G5QVtFRPHd4o++0#8@Jig&jpXr$!M1&WA$?LdqJA zqHav^8>neD9p|QCay~b}v5Xu;LIALfCVK;ZA|W~4d4XOite$t`X?J?8@`u`P;xW_( z^H9ZnGKZo^40a(^b?LJL^P+V}8j%-KRJ(Ir>=?=C9QguScjT9C)&qp`JJyI1$c5&s z_tJjdXZY#yg%?KFegayCPTbjpG)UG1c&qBY3- TYRnaLc?g0#Asy>ZUb^uw#J}=D literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/classes.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/classes.html new file mode 100644 index 0000000..edbfd76 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/classes.html @@ -0,0 +1,88 @@ + + + + + + + +SSD1306Ascii: Class Index + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
a | d | s
+ + + + + + +
  a  
+
  d  
+
DigitalOutput   SSD1306AsciiAvrI2c   SSD1306AsciiWire   
  s  
+
SSD1306AsciiSoftSpi   
AvrI2c   DevType   SSD1306AsciiSpi   
SSD1306Ascii   
+
a | d | s
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/closed.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_000005_000006.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_000005_000006.html new file mode 100644 index 0000000..2e1d596 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_000005_000006.html @@ -0,0 +1,76 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src -> utility Relation + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+

src → utility Relation

File in Arduino/libraries/SSD1306Ascii/srcIncludes file in Arduino/libraries/SSD1306Ascii/src/utility
SSD1306AsciiAvrI2c.hAvrI2c.h
SSD1306AsciiSoftSpi.hDigitalOutput.h
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html new file mode 100644 index 0000000..f32976c --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160.html @@ -0,0 +1,90 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
libraries Directory Reference
+
+
+
+Directory dependency graph for libraries:
+
+
Arduino/libraries
+ + + + + +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..dcae43043b45695a5c9a14cdafc9b3965021294e GIT binary patch literal 1433 zcmeAS@N?(olHy`uVBq!ia0y~yU=#(ir*Ns~LGkXMq z_M(8fk|s6(id^oTn89&Dnq9Ck`)2#>wo`{Yc9gxmG_~z6L+ytB`>m~Ftfa5a_Djmn zwtjcF`ob3J1?+lpHA3e3b=Oz)Z(XvJ!KEdDaT2Gf!qfo9AkL|Wa`X7Yf8E*iH&}0B z(1x>T6J_M&)|Nb!2a;>@{nQsSEfLa6zmoAi=4&bmeyrd4*xWLkmvf44telg0S*&#OQ9X?f!I~GATuLj+ySO>a zX=%XZLx*?s+*+atcdNDt=wr$%MZWp%NzUJ?PgNJY2+js5R1P2$M_U3EHKKZeF zsD?CzIANpK*8N=D_w{~VZ~wj@YhGstT#mngzt2AZ|BbIEFDBk=J$37IvpIXeT&cC- zv)y&J*W&iQs1p0)^WN#{+|~bj1Kz)VZ3!YGl=!I4uhI?2u4w!&CE^(6P4PolC~rDD$) zaqn2qy)W;kd0p+L!c4WPYKI>_IP&%4&x)NP%ik{fJ$c^j^7SmPQ|uq_?##6Atjsmi zu|Bru`KsNEJykEP`COTMe$m5%59?x9%IO#7U#gs2R{GoGY!}DW4vUQi$JSrXoow50 z^*3GrPvrS|UmZGU{QbAMD*s;6d5-2wOsb0(1gxC(y=YtB>}_YH>P6}%drkj%*L&{2 zh%=j1Pi=YL*Vp&I+<(QFkhuvjoGWy)Z!HhId~43L{agLjrfQX5y~{f_;-ARhMP`SU zRDEVAhnK5&_r!kUz8RYJDQIi&`;%Wh1+Axkd|UtZmr|}$+It4ExreuWTJmo1uC%H4 zUW+HcnkIiWD0NTH%+#>X#eXbajqL2=QV#0=ik+JJPS@!EvcJ>C%r3|6xTfnZ_BQ=q z<=tx4fPV}tTev28tstMO`YyfoxO~lzX9w2ro6mQB|Jy1yaH_dFJ^r}7{ePk6`u{Jh zw61*kb@}}6c}%vKcL#KS{aR7_bN0G)MxB$^IC4$s>ifYr@7BslOH1eSac)_&HQ?rr z3j1&0%98T)m# + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src/utility Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
utility Directory Reference
+
+
+ + + + + + + + +

+Files

file  AvrI2c.h
 Small fast I2C class for AVR.
 
file  DigitalOutput.h
 Faster version of digitalWrite().
 
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307.html new file mode 100644 index 0000000..0162315 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307.html @@ -0,0 +1,97 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SSD1306Ascii Directory Reference
+
+
+
+Directory dependency graph for SSD1306Ascii:
+
+
Arduino/libraries/SSD1306Ascii
+ + + + + + +
+ + + + +

+Directories

directory  doc
 
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307_dep.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_520de49418287da36eb793ef32ea6307_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..95660a3949e6c1103fc886daf184d06de77f361c GIT binary patch literal 1499 zcmeAS@N?(olHy`uVBq!ia0y~yU@Qf)r*Nv_wnCW6j-2!RV!a9z7m8 zvIz`YsvalXUtE~ks8E{hHC-=M<0S*zb<6qZ_kI5P{`z_2oBKZBEp*#|WBptUCZMgD zAV_k{p8s1rc3eH$$RHpnsIUC!+@A70>96jBg`ZzteXVQGeBk26gC8E<$-S3TEwFoc zb>aVihqujUjHnJ@XVZOqdwtf{-rl}G)&`~yD+i@Td=olWFsmrN5=l=_uYUE^^(}wc z+!euF9zUKe^1ERlSc%`oRc^}G*0-PM$;ZjdUpI-|o>h7E?=szHp)LQOD!;gV?%cQb z!jmtaMotTj&EFJvIro53<+5{LE4yF3*p#{PtFN9A^78zLzh8arUM_D}BT`*$ z{`-#VflImh{8hK7&qNMY3}<}#b=uuG=ikTbntyN2PuuluirpblzxQ9d;_R}2(h(1S zwr}g|{&j5i^!Iu;m7DG`YhHbPT=4gA?%R7l+aGN@Z@(op=8FA}hxtcBtZd(^Yn`j# zy6>F*nUg-U3W9;`9xhiHg#=3*TwI9dYJPvea`QB{X2&^m=j#482s`)f+k-o~>gwsn zYcHorFMjQJyYB9`*?P0Loi}sae*NpV>7G{-kNR>2P0r}OA1C@s&0a=rZFy0V+4oJ$ zUY}q6?*86WJ@E~lZHlt9M6T*Bo}szn^n;nds+$iU|G#6g{{QyJ4Hq{aSW-Ik{D+#b zxu-RlV(nC!-i#b2eyS~K#txr_?)cwP81A8(M@+!OHY&i5CaKSzGs z+woYZH~p32?H@;1EQ>BJ{sQvRkBpi>235axUb~q5cU_=%+#u8DQb}ZR>Er38GG{w} zRZm_NQ2N`7Jw@BNZ6oE9dxIB%DmcN zH+OUIldaR7Qy-Cg)b;O|-SUs#$Jcisyj?%NR^w>Z@2BD1x3_(^zpDgEUCG79e(V44 zc(XVn{+#_96JwmoY035TE9GTude^R9Ygf*>Aq<#Tu3c-ju({KJ`0(F-Wt;&$-qZKJ zOSRwY`uAw}_1d>w3Ar;@f=U{UJORzP9*z*?HCq=iZoYOq + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/doc Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html new file mode 100644 index 0000000..3450c0f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2.html @@ -0,0 +1,89 @@ + + + + + + + +SSD1306Ascii: Arduino Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Arduino Directory Reference
+
+
+
+Directory dependency graph for Arduino:
+
+
Arduino
+ + + + +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e87478ff1f2a7756325c6216ea8eb6485a17dc GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#SgAGWYjD5xgq}Y|gW!U_%O^81FiUv4 zIEGZrd3$$b-{lCAhKI%J;R@T7uiCK-dDt+rcF$;9I73jEpHbJ}k^k(4B`&w5I?EkG zGEQf{U{lF&Y-%bLQup&Kn)`mT(#^t}+|*B}%{!-b0xd#-Zwq+t{10@oxqYnD!PU<7 zNVjjfoYdXf9TxR}e&jqb2xx!#rD)rZLhE`y+fH@=bC18iHg|4s)Y?=1-E5xyehHIf zC#Ribec@R$!3P87e3<^Y_U^ymX-B@6UVFIe%h&t;AOD`)TRWf4dYV{lOuYM?d2Vy& zFPGh<;upi=_ANd7-3q?p)oS2OX9E>?d7_Myop3P1#gb8Gih6_~esm=Y8-0 zHIv=17V2WYK66%}%wo66o}H^#r!7y6iS7NrbG@F`irCVNrM`c?H22@NkIwgZ|827^ zyZUTR-Ial%?FGA&RX^}^>)PK*R!n7T{|vube*hkNo?@JeZS&-kK62h)3tir z_n`Jgzg|97YpZ!N@uTfS#mF+#+h4Dy6*j#ygIEL^ThNv=Wtc(Tt4lq!(Al3 zaoh0~nX{r@OS)!`5DZq_KSZ2LDCP zDP*9X7h_{wraZb<+THQ&TKvj-zHiEJ+dKE|`!AsWzxJe6OzEu2_K$8i*MF;(Qt{}1 z_xtYe$o8h@XST8`!Wc;UkL}%(DoK9%d3ldx9z5_}KE3(4#4q{3ajr*BA53Qy)m&PW mJ?q)Aedn1GNtS^j;`IOXD_BZ9ax`XvggssTT-G@yGywn!K$flm literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f407cfa5a083ea3a86bed2005dcb9a5e.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f407cfa5a083ea3a86bed2005dcb9a5e.html new file mode 100644 index 0000000..7b78411 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f407cfa5a083ea3a86bed2005dcb9a5e.html @@ -0,0 +1,80 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/doc/MainPage Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
MainPage Directory Reference
+
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d.html new file mode 100644 index 0000000..5ec5130 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d.html @@ -0,0 +1,116 @@ + + + + + + + +SSD1306Ascii: Arduino/libraries/SSD1306Ascii/src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+
+Directory dependency graph for src:
+
+
Arduino/libraries/SSD1306Ascii/src
+ + + + + + +
+ + +

+Directories

+ + + + + + + + + + + + + + + + + + + +

+Files

file  SSD1306Ascii.h
 Base class for ssd1306 displays.
 
file  SSD1306AsciiAvrI2c.h
 Class for I2C displays using AvrI2c.
 
file  SSD1306AsciiSoftSpi.h
 Class for software SPI displays.
 
file  SSD1306AsciiSpi.h
 Class for hardware SPI displays.
 
file  SSD1306AsciiWire.h
 Class for I2C displays using Wire.
 
file  SSD1306init.h
 Display controller initialization commands.
 
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d_dep.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/dir_f52a68bbba56f2c8881f0d9135f8ef6d_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4f255e5ad3664da546a01d12a1d5638462802d GIT binary patch literal 1924 zcmbVNdpHwn8298BoepJ{#EM8dlyzBWSS~S*x#U{tkx7Wr1$ENeIXrF?9UF!Tv5n=H z#bg>eVaGjN6h)Uc%{ErdRE#s{^z=`4p3`~1=lkC8d*AnYzxR2+_xFBj?yin&)pgVr z6cpCNkJx+2IbJ>`t5xJ{F#s?xXDUc%M|*|kl~KYhm#bAFaC=*?ONCQoZV`Y`1=hRg z1qdv2HRMSYDlcY=XafY^QO0IR%T<~Y-u@rcOkZDq^mPW9>Zt)H9!X<#vs@b zmW?|@8P35K#Wp7_6)OI07XFGqs0Hy&q(Lv4{{(M!W(-YP%yg2tELJS9d+uJPZ5Pl= zyO){il6+19m#PM9SK5M1aG6#-oAUBygDU3w)&W#lzNwHO5XYP=ueKDTgs6Sj`{$Y- zk5#jSoi1;qSsfb`a#wY&4`H8|8^@ykhk4C8()ryz{?NXL;`?-xG3Uc6FJ7A2;gI0& z8B(Mqtx})`wX(W9lQT!>TjO@^L>Ht_Lvd1Fp&9q#6qr5zxar_EqJX`-wlQ)j8;A#B zY_^~u(oDHP$K1K*;n6^c-l-IS zc&!~icaql{5u$Nl54_iVL(^10a}Y*9k)t?eNEYXpHh<_B9;98%mMI}~L541ek4N|H zLKO%bOw7eZZWPe^(ADI|5=jd$Y+x5_A%9#D{$q#1jwhO0k*R9nzq7O!)Rvrg@-X7I z{x`({De!F%0W-`gcf*eA=H9S^P!&~McAfH1>WG;d-2i8&X=yp2XwuW6;)+)5OAAOG zN%%PW%#}q%7O|>f&8GfaBas{F(9HaQzvlab`ea=ndG>bQ%m!x5>_B~putuVBr6!@R zEqP+XFMlQVH|j#M>oT^RZM5_2D1tlN#<(6=V(TIOIv?e1%ucl zK$}5k&RB!#%d4=g{i^Z;`VXo3O3cE$7sWNn$tpcSnAtAokXS)ahcX9pVIb0l{EkT=h5s1c9#0`cIA#f~)ro*Ws1*&GadStHU>dcs56B zxmKQpQDalcxh8C$!Rgac!b#4u&+cW}d?1cg>5D<5no=~D2dBrjCuLR(QcYehh>eZl zii%>>K#qr|(nlVl*e5p}960%57IK0iiRjf4qz6+{w_bgJ)YiP@^z6`#uV;{UT)h@*G|^J8O{zM zV<#{x6;^hWQ{L*WsZ`gP66DF{hN=U-qqkACgM&TQADBz&H!Q6mwxEjvR;A-M2oMY= z4GZHxIPh52wuDNZ?a-)j)bvb{?;gXEped-*r~(eY&rl% z*NK9T;8avpB%+Z@T1p*^hrB%VIuOpDdfMm=?85m}k_meP&-CP)g=je7VuZtHeZ9Te z&}+wX(y1sUvQ(t+<)NLNlaUtuO;~=V_CTYpSvV25AVp{QS8^t#MU@9P15f zCJf{7z|5u1jgbfEsobJUFvuv}?F8JDC_EJFzK|E-S3MjNUuBUD`==G)kH+7s%t%ik7sf9e0Jn_Jn=_I-j`{`Ulas63QVyDw+}8V;StgTR1-I z{675T#9w$e(I<9#)%THEaUP_1Xt5#c*?X7t^fe(GWEwph(<;($zZHOx$z&FBk@cdW zk~O;fzHD1WyMcXu{o_Y9l^mjI!}4y#|1(P~2~~SLFX5!kym)}WB+D-atHCYfM5dAQ z<|W||-YEqq;m-E1d>3D$y~)jQy!oQ#cZvMFw|pwXd-|neZ1A=#WtW literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/doc.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.css b/Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.css new file mode 100644 index 0000000..266c8b3 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/dynsections.js b/Arduino_Libs/SSD1306Ascii-master/doc/html/dynsections.js new file mode 100644 index 0000000..c1ce122 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +SSD1306Ascii: File List + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123456]
+ + + + + + + + + + + + + +
  Arduino
  libraries
  SSD1306Ascii
  src
  utility
 AvrI2c.hSmall fast I2C class for AVR
 DigitalOutput.hFaster version of digitalWrite()
 SSD1306Ascii.hBase class for ssd1306 displays
 SSD1306AsciiAvrI2c.hClass for I2C displays using AvrI2c
 SSD1306AsciiSoftSpi.hClass for software SPI displays
 SSD1306AsciiSpi.hClass for hardware SPI displays
 SSD1306AsciiWire.hClass for I2C displays using Wire
 SSD1306init.hDisplay controller initialization commands
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/folderclosed.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/functions.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions.html new file mode 100644 index 0000000..548f4ef --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions.html @@ -0,0 +1,264 @@ + + + + + + + +SSD1306Ascii: Class Members + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- w -

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_func.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_func.html new file mode 100644 index 0000000..cd19b47 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_func.html @@ -0,0 +1,249 @@ + + + + + + + +SSD1306Ascii: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- w -

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_vars.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_vars.html new file mode 100644 index 0000000..12071ef --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/functions_vars.html @@ -0,0 +1,89 @@ + + + + + + + +SSD1306Ascii: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/globals.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals.html new file mode 100644 index 0000000..0da968e --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals.html @@ -0,0 +1,249 @@ + + + + + + + +SSD1306Ascii: File Members + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented file members with links to the documentation:
+ +

- a -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_defs.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_defs.html new file mode 100644 index 0000000..f3e13e6 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_defs.html @@ -0,0 +1,193 @@ + + + + + + + +SSD1306Ascii: File Members + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- s -

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_func.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_func.html new file mode 100644 index 0000000..5c8d174 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_func.html @@ -0,0 +1,77 @@ + + + + + + + +SSD1306Ascii: File Members + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_vars.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_vars.html new file mode 100644 index 0000000..a894f35 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/globals_vars.html @@ -0,0 +1,119 @@ + + + + + + + +SSD1306Ascii: File Members + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.html new file mode 100644 index 0000000..073684e --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.html @@ -0,0 +1,105 @@ + + + + + + + +SSD1306Ascii: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d711ba6f78dafb39c78e211932334862e961a7 GIT binary patch literal 13883 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/hierarchy.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/hierarchy.html new file mode 100644 index 0000000..30ec505 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/hierarchy.html @@ -0,0 +1,91 @@ + + + + + + + +SSD1306Ascii: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + +
 CAvrI2cHardware I2C master class for AVR
 CDevTypeDevice initialization structure
 CDigitalOutputFaster version of digitalWrite()
 CPrint
 CSSD1306AsciiSSD1306 base class
 CSSD1306AsciiAvrI2cClass for I2C displays on AVR
 CSSD1306AsciiSoftSpiClass for SPI displays using software SPI
 CSSD1306AsciiSpiClass for SPI displays on the hardware SPI bus
 CSSD1306AsciiWireClass for I2C displays using Wire
+
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/index.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/index.html new file mode 100644 index 0000000..c7669cb --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/index.html @@ -0,0 +1,178 @@ + + + + + + + +SSD1306Ascii: Arduino SSD1306Ascii Library + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Arduino SSD1306Ascii Library
+
+
+
Copyright © 2015 by William Greiman

+Introduction

+

This library is in early development so the API and features may change. The library is likely to have bugs and be unstable. The purpose for this release is to get feedback for future development.

+

The Arduino SSD1306Ascii Library is designed to display text on small monochrome OLED displays. These displays are available on ebay at very low cost.

+

The library is being developed using 0.96" and 1.3" displays with SSD1306 controllers. An initialization sequence for SH1106 controllers is included.

+

There are many existing full featured graphics libraries for these displays. The goal for this library is to only display text with minimum use of RAM and flash.

+

Here are key design goals:

+

Small size is the highest priority. Speed and features are lower priority.

+

Support multiple fonts. More than 40 fonts are included with this release. Fonts are only loaded if you reference them.

+

Support fixed width and proportional fonts.

+

Optionally magnify fonts by a factor of two.

+

Support 128x32 and 128x64 displays with I2C and SPI interfaces.
+ Use the standard Wire library for I2C. An optimization option is available to increase I2C performance.

+

Use the standard SPI library for hardware SPI. An optimization option is available for AVR to increase performance and reduce code size.

+

Provide software SPI so the display can be connected to any digital pins.

+

+Installation

+

You can manually install the SSD1306Ascii library by copying the SSD1306Ascii folder from the download package to the Arduino libraries folder in your sketch folder.

+

See the Manual installation section of this guide.

+

http://arduino.cc/en/Guide/Libraries

+

The library will be added to the Arduino Library Manager soon.

+

+Scroll Mode

+

Scroll mode causes the display to scroll up when a new line is written to the display.

+

Scroll mode is configured by editing SSD1306Ascii.h.

+

If INCLUDE_SCROLLING is defined to be zero, new line will not scroll the display and code for scrolling will not be included. This option will save some code space and one byte of RAM.

+

If INCLUDE_SCROLLING is defined to be one, the scroll feature will be included but not enabled. A call to setScroll() will be required to enable scrolling.

+

If INCLUDE_SCROLLING is defined to be two, the scroll feature will be included and enabled. A call to setScroll() will be required to disable scrolling.

+

Scroll mode is only supported on 64 pixel high displays.

+

Call setScroll() to enable or disable scroll mode.

+

Calls to setCursor(), setRow() and other cursor positioning functions will be unpredictable in scroll mode.

+

The clear() call will erase the display and start at the top of the display.

+

See the ScrollSpi and ScrollWire examples.

+

+Fonts

+

Fonts are defined by .h files in the SSD1306Ascii/src/fonts folder. The fonts folder contains all fonts from openGLCD plus a number of extra fonts.

+

To select a font, call the setFont() member function like this.

// Select the font used in the Adafruit GFX Graphics Library.
oled.setFont(Adafruit5x7);

Only fonts referenced in your program will be loaded into flash.

+

Here are symbols for fixed width fonts.

Adafruit5x7
+cp437font8x8
+fixed_bold10x15
+fixednums15x31
+fixednums7x15
+fixednums8x16
+font5x7
+font8x8
+lcd5x7
+lcdnums12x16
+lcdnums14x24
+newbasic3x5
+Stang5x7
+System5x7
+Wendy3x5
+X11fixed7x14
+X11fixed7x14B
+ZevvPeep8x16  
+

Here are symbols for proportional fonts. Note that Iain5x7 and utf8font10x16 are proportional.

Arial14
+Arial_bold_14
+CalBlk36
+CalLite24
+Callibri10
+Callibri11
+Callibri11_bold
+Callibri11_italic
+Callibri14
+Callibri15
+Cooper19
+Cooper21
+Cooper26
+Corsiva_12
+Iain5x7
+Roosewood22
+Roosewood26
+TimesNewRoman13
+TimesNewRoman13_italic
+TimesNewRoman16
+TimesNewRoman16_bold
+TimesNewRoman16_italic
+utf8font10x16
+Verdana12
+Verdana12_bold
+Verdana12_italic
+Verdana_digits_24
+

See allFonts.h for more information on adding a font.

+

The set2X() call doubles the size of characters. Each pixel becomes a 2x2 square. To return to standard size characters call set1X();

oled.set2X();
// Display double height and width characters.
...
// Return to standard size.
oled.set1X();

+SSD1306Ascii Configuration

+

Several configuration options may be changed by editing the SSD1306Ascii.h file in the SSD1306Ascii/src folder.

+

These options are at the start of the file.

+
// Configuration options.
/* Set Scrolling mode for new line.
* If INCLUDE_SCROLLING is defined to be zero, new line will not scroll
* the display and code for scrolling will not be included. This option
* will save some code space and one byte of RAM.
* If INCLUDE_SCROLLING is defined to be one, the scroll feature will
* be included but not enabled. A call to setScroll() will be required
* to enable scrolling.
* If INCLUDE_SCROLLING is defined to be two, the scroll feature will
* be included and enabled. A call to setScroll() will be required
* to disable scrolling.
*/
#define INCLUDE_SCROLLING 1
/* Use larger faster I2C code. */
#define OPTIMIZE_I2C 1
/* Define OPTIMIZE_AVR_SPI non-zero for a faster smaller AVR SPI code.
* Warning AVR will not use SPI transactions.
*/
#define OPTIMIZE_AVR_SPI 1

+Documentation

+

Please see the Classes tab for more information.

+

For I2C displays using the wire library Wire see the SSD1306AsciiWire class.

+

For I2C displays using the small AvrI2c class see the SSD1306AsciiAvrI2c class.

+

For SPI displays connected to the Arduino hardware SPI pins see the SSD1306AsciiSpi class.

+

See the SSD1306AsciiSoftSpi class for use of Software SPI.

+

+Bugs and Comments

+

If you wish to report bugs or have comments, open an issue on GitHub or send email to fat16.nosp@m.lib@.nosp@m.sbcgl.nosp@m.obal.nosp@m..net. If possible, include a simple program that illustrates the bug or problem.

+

+Examples

+

A number of examples are provided in the SSD1306Ascii/examples folder.

+

To access these examples from the Arduino development environment go to: File -> Examples -> SSD1306Ascii -> <program Name>

+

Compile and upload to your Arduino to run the example.

+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_0.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..30f5d5aca72d176894c63e05b8a7b6753334fc26 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^ER5)*PM1d4TzVwTz9MS{x&fSXWuvftqXb=Vr2gFN@lB;3!+N;HT>s z1Q>Y*F9zS7U$0BG+w^Xw~u{~{;t`(@^bbm6Z;A-ZReB|yItaUFR!x7 zloD#&;y?RV>DK?Be9wxk=HPVoW}Y@9(8yQ!=$5W5tuLlr3q1|LX52F}ycq3#^9qlH zdTP<4!yzm8_GLd`wcsz`MWv}tD;M1j<<;ywDSF|`_esoVo=fB8({?*LvzWLzz=;Xf w?RUzopr0Mhb|TmS$7 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_1.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..33b00f3b3896eae370dff9790e289f44103072f3 GIT binary patch literal 391 zcmV;20eJq2P)p@)h+rc%O+~ z@Cjq_njv{o-@D*y<+3!)g4xb}#BEu!O~c%&dzywdOy{uehdxx_9@jI}vl4-IoRM@5 z-X^YL%F;EIZ0Ek#3@hT>o?{*`w`XXzQL2(ziLoH-oQjPrMfhJ$B2Lr5GI6Mw+`80n zj2CuBz9egy&eh{RSXfxCx)`;ZIOSL*Je5JHGQ=M8vHF-ptZ!ZH8=002ovPDHLkV1n%Mr%(U@ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_2.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7519c16458da295f03128d77198603421481f020 GIT binary patch literal 452 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 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/inherits.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/inherits.html new file mode 100644 index 0000000..da9d9f4 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/inherits.html @@ -0,0 +1,104 @@ + + + + + + + +SSD1306Ascii: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + +
+
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/jquery.js b/Arduino_Libs/SSD1306Ascii-master/doc/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + +
+
+
DevType Member List
+
+
+ +

This is the complete list of members for DevType, including all inherited members.

+
+ + + + + +
colOffsetDevType
initcmdsDevType
initSizeDevType
lcdHeightDevType
lcdWidthDevType
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/struct_dev_type.html b/Arduino_Libs/SSD1306Ascii-master/doc/html/struct_dev_type.html new file mode 100644 index 0000000..d7908d2 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/struct_dev_type.html @@ -0,0 +1,179 @@ + + + + + + + +SSD1306Ascii: DevType Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SSD1306Ascii +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
DevType Struct Reference
+
+
+ +

Device initialization structure. + More...

+ +

#include <SSD1306init.h>

+ + + + + + + + + + + + +

+Public Attributes

const uint8_t colOffset
 
const uint8_t * initcmds
 
const uint8_t initSize
 
const uint8_t lcdHeight
 
const uint8_t lcdWidth
 
+

Detailed Description

+

Device initialization structure.

+

Member Data Documentation

+ +

◆ colOffset

+ +
+
+ + + + +
const uint8_t DevType::colOffset
+
+

Column offset RAM to display. Used to pick start column of SH1106.

+ +
+
+ +

◆ initcmds

+ +
+
+ + + + +
const uint8_t* DevType::initcmds
+
+

Pointer to initialization command bytes.

+ +
+
+ +

◆ initSize

+ +
+
+ + + + +
const uint8_t DevType::initSize
+
+

Number of initialization bytes.

+ +
+
+ +

◆ lcdHeight

+ +
+
+ + + + +
const uint8_t DevType::lcdHeight
+
+

Height of the display in pixels.

+ +
+
+ +

◆ lcdWidth

+ +
+
+ + + + +
const uint8_t DevType::lcdWidth
+
+

Width of the diaplay in pixels.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/sync_off.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/sync_on.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/tab_a.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/tab_b.png b/Arduino_Libs/SSD1306Ascii-master/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/html/tabs.css b/Arduino_Libs/SSD1306Ascii-master/doc/html/tabs.css new file mode 100644 index 0000000..a28614b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/doc/sd1306test.jpg b/Arduino_Libs/SSD1306Ascii-master/doc/sd1306test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba22a461b5a30bc0296d3d42ebfb1ad0c6fd7109 GIT binary patch literal 333088 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%0DWoF0+R_%fGiWH`@o#natbR&epe2 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

P#TUJb%P=PmoOyBDJ{hnpKQ#QcNOnHu_K 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 |yqp79NkyDBj*|I}1F3@3cbaou~w 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

F-duq}qb5RAvUz^O;U+5_)iYK&rOURLv0kMA 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 ?rZQ1AaZFfpv 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 0 + oled.begin(&Adafruit128x32, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x32, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + + oled.clear(); + + // first row + oled.println("set1X test"); + + // second row + oled.set2X(); + oled.println("set2X test"); + + // third row + oled.set1X(); + oled.print("micros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/AvrI2c128x64/AvrI2c128x64.ino b/Arduino_Libs/SSD1306Ascii-master/examples/AvrI2c128x64/AvrI2c128x64.ino new file mode 100644 index 0000000..132c57c --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/AvrI2c128x64/AvrI2c128x64.ino @@ -0,0 +1,37 @@ +// Simple I2C test for ebay 128x64 oled. +// Use smaller faster AvrI2c class in place of Wire. +// +#include "SSD1306Ascii.h" +#include "SSD1306AsciiAvrI2c.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiAvrI2c oled; +//------------------------------------------------------------------------------ +void setup() { + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.println(); + oled.set2X(); + oled.println("2X demo"); + oled.set1X(); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationSpi/DisplayRotationSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationSpi/DisplayRotationSpi.ino new file mode 100644 index 0000000..628f347 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationSpi/DisplayRotationSpi.ino @@ -0,0 +1,30 @@ +// Set display remap mode. +// displayRemap(bool mode) selects normal mode or 180 degree rotation mode. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + + // Use true, normal mode, since default for Adafruit display is remap mode. + oled.displayRemap(true); + + oled.clear(); + oled.println("Hello world!"); + oled.println("displayRemap(false)"); + oled.print("for other mode."); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationWire/DisplayRotationWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationWire/DisplayRotationWire.ino new file mode 100644 index 0000000..47911d3 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/DisplayRotationWire/DisplayRotationWire.ino @@ -0,0 +1,36 @@ +// Set display remap mode. +// displayRemap(bool mode) selects normal mode or 180 degree rotation mode. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + oled.setFont(Adafruit5x7); + + // Use true, normal mode, since default for Adafruit display is remap mode. + oled.displayRemap(true); + + oled.clear(); + oled.println("Hello world!"); + oled.println("displayRemap(false)"); + oled.print("for other mode."); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesSpi/FontSamplesSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesSpi/FontSamplesSpi.ino new file mode 100644 index 0000000..3ffa2ab --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesSpi/FontSamplesSpi.ino @@ -0,0 +1,86 @@ +// Display samples of fonts. +// +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +const char* fontName[] = { + "Arial14", + "Arial_bold_14", + "Callibri11", + "Callibri11_bold", + "Callibri11_italic", + "Callibri15", + "Corsiva_12", + "fixed_bold10x15", + "font5x7", + "font8x8", + "Iain5x7", + "lcd5x7", + "Stang5x7", + "System5x7", + "TimesNewRoman16", + "TimesNewRoman16_bold", + "TimesNewRoman16_italic", + "utf8font10x16", + "Verdana12", + "Verdana12_bold", + "Verdana12_italic", + "X11fixed7x14", + "X11fixed7x14B", + "ZevvPeep8x16" +}; +const uint8_t* fontList[] = { + Arial14, + Arial_bold_14, + Callibri11, + Callibri11_bold, + Callibri11_italic, + Callibri15, + Corsiva_12, + fixed_bold10x15, + font5x7, + font8x8, + Iain5x7, + lcd5x7, + Stang5x7, + System5x7, + TimesNewRoman16, + TimesNewRoman16_bold, + TimesNewRoman16_italic, + utf8font10x16, + Verdana12, + Verdana12_bold, + Verdana12_italic, + X11fixed7x14, + X11fixed7x14B, + ZevvPeep8x16 +}; +uint8_t nFont = sizeof(fontList)/sizeof(uint8_t*); + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + for (uint8_t i = 0; i < nFont; i++) { + oled.setFont(System5x7); + oled.clear(); + oled.println(fontName[i]); + oled.println(); + oled.setFont(fontList[i]); + oled.println("*+,-./0123456789:"); + oled.println("abcdefghijklmno"); + oled.println("ABCDEFGHIJKLMNO"); + delay(10000); + } + oled.clear(); + oled.print("Done!"); +} +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesWire/FontSamplesWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesWire/FontSamplesWire.ino new file mode 100644 index 0000000..6da6a15 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/FontSamplesWire/FontSamplesWire.ino @@ -0,0 +1,93 @@ +// Display samples of fonts. +// +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +const char* fontName[] = { + "Arial14", + "Arial_bold_14", + "Callibri11", + "Callibri11_bold", + "Callibri11_italic", + "Callibri15", + "Corsiva_12", + "fixed_bold10x15", + "font5x7", + "font8x8", + "Iain5x7", + "lcd5x7", + "Stang5x7", + "System5x7", + "TimesNewRoman16", + "TimesNewRoman16_bold", + "TimesNewRoman16_italic", + "utf8font10x16", + "Verdana12", + "Verdana12_bold", + "Verdana12_italic", + "X11fixed7x14", + "X11fixed7x14B", + "ZevvPeep8x16" +}; +const uint8_t* fontList[] = { + Arial14, + Arial_bold_14, + Callibri11, + Callibri11_bold, + Callibri11_italic, + Callibri15, + Corsiva_12, + fixed_bold10x15, + font5x7, + font8x8, + Iain5x7, + lcd5x7, + Stang5x7, + System5x7, + TimesNewRoman16, + TimesNewRoman16_bold, + TimesNewRoman16_italic, + utf8font10x16, + Verdana12, + Verdana12_bold, + Verdana12_italic, + X11fixed7x14, + X11fixed7x14B, + ZevvPeep8x16 +}; +uint8_t nFont = sizeof(fontList)/sizeof(uint8_t*); + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + for (uint8_t i = 0; i < nFont; i++) { + oled.setFont(System5x7); + oled.clear(); + oled.println(fontName[i]); + oled.println(); + oled.setFont(fontList[i]); + oled.println("*+,-./0123456789:"); + oled.println("abcdefghijklmno"); + oled.println("ABCDEFGHIJKLMNO"); + delay(10000); + } + oled.clear(); + oled.print("Done!"); +} +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldAvrI2c/HelloWorldAvrI2c.ino b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldAvrI2c/HelloWorldAvrI2c.ino new file mode 100644 index 0000000..1014eb9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldAvrI2c/HelloWorldAvrI2c.ino @@ -0,0 +1,27 @@ +// Test for minimum program size. + +#include "SSD1306Ascii.h" +#include "SSD1306AsciiAvrI2c.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiAvrI2c oled; +//------------------------------------------------------------------------------ +void setup() { + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSH1106Spi/HelloWorldSH1106Spi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSH1106Spi/HelloWorldSH1106Spi.ino new file mode 100644 index 0000000..1288fc6 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSH1106Spi/HelloWorldSH1106Spi.ino @@ -0,0 +1,23 @@ +// Test for minimum program size. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&SH1106_128x64, CS_PIN, DC_PIN); + oled.begin(&SH1106_128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSoftSpi/HelloWorldSoftSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSoftSpi/HelloWorldSoftSpi.ino new file mode 100644 index 0000000..1bb888e --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSoftSpi/HelloWorldSoftSpi.ino @@ -0,0 +1,25 @@ +// Test for minimum program size. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSoftSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 +#define MOSI_PIN 11 +#define CLK_PIN 13 + +SSD1306AsciiSoftSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, CLK_PIN, MOSI_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, CLK_PIN, MOSI_PIN, RST_PIN); + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSpi/HelloWorldSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSpi/HelloWorldSpi.ino new file mode 100644 index 0000000..34085df --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldSpi/HelloWorldSpi.ino @@ -0,0 +1,23 @@ +// Test for minimum program size. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldWire/HelloWorldWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldWire/HelloWorldWire.ino new file mode 100644 index 0000000..46faf07 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/HelloWorldWire/HelloWorldWire.ino @@ -0,0 +1,30 @@ +// Test for minimum program size. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingSpi/LetterSpacingSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingSpi/LetterSpacingSpi.ino new file mode 100644 index 0000000..ed67adc --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingSpi/LetterSpacingSpi.ino @@ -0,0 +1,24 @@ +// LetterSpacing() example. +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(Callibri11_bold); + oled.clear(); + oled.println("Hello world!"); + oled.setLetterSpacing(2); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingWire/LetterSpacingWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingWire/LetterSpacingWire.ino new file mode 100644 index 0000000..2cd76f7 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/LetterSpacingWire/LetterSpacingWire.ino @@ -0,0 +1,32 @@ +// LetterSpacing() example. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Callibri11_bold); + oled.clear(); + oled.println("Hello world!"); + oled.setLetterSpacing(2); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormSpi/ProportionalFormSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormSpi/ProportionalFormSpi.ino new file mode 100644 index 0000000..bf56c5d --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormSpi/ProportionalFormSpi.ino @@ -0,0 +1,73 @@ +// Form with proportional font. +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; + +uint8_t col0 = 0; // First value column +uint8_t col1 = 0; // Last value column. +uint8_t rows; // Rows per line. +//------------------------------------------------------------------------------ +void setup() { + const char* label[] = {"Voltage:", "Load:", "Runtime:"}; + const char* units[] = {"volts", "watts", "mins"}; + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + + oled.setFont(Callibri15); +// oled.setFont(Arial14); +// oled.setFont(Callibri11_bold); +// oled.setFont(TimesNewRoman13); + + // Increase space between letters. + oled.setLetterSpacing(2); + + oled.clear(); + + // Setup form and find longest label. + for (uint8_t i = 0; i < 3; i++) { + oled.println(label[i]); + uint8_t w = oled.strWidth(label[i]); + col0 = col0 < w ? w : col0; + } + // Three pixels after label. + col0 += 3; + // Allow two or more pixels after value. + col1 = col0 + oled.strWidth("99.9") + 2; + // Line height in rows. + rows = oled.fontRows(); + + // Print units. + for ( uint8_t i = 0; i < 3; i++) { + oled.setCursor(col1 + 1, i*rows); + oled.print(units[i]); + } + delay(3000); +} +//------------------------------------------------------------------------------ +void clearValue(uint8_t row) { + oled.clear(col0, col1, row, row + rows - 1); +} +//------------------------------------------------------------------------------ +void loop() { + // Fake system model. + double volts = 0.1*random(110, 130); + double watts = 0.1*random(200, 500); + // 100 Wh battery. + int run = 100*60/(int)watts; + clearValue(0); + oled.print(volts, 1); + clearValue(rows); + oled.print(watts, 1); + clearValue(2*rows); + oled.print(run); + delay(1000); +} + diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormWire/ProportionalFormWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormWire/ProportionalFormWire.ino new file mode 100644 index 0000000..940f634 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/ProportionalFormWire/ProportionalFormWire.ino @@ -0,0 +1,78 @@ +// Form with proportional font. +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; + +uint8_t col0 = 0; // First value column +uint8_t col1 = 0; // Last value column. +uint8_t rows; // Rows per line. +//------------------------------------------------------------------------------ +void setup() { + const char* label[] = {"Voltage:", "Load:", "Runtime:"}; + const char* units[] = {"volts", "watts", "mins"}; + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Callibri15); +// oled.setFont(Arial14); +// oled.setFont(Callibri11_bold); +// oled.setFont(TimesNewRoman13); + + // Increase space between letters. + oled.setLetterSpacing(2); + + oled.clear(); + + // Setup form and find longest label. + for (uint8_t i = 0; i < 3; i++) { + oled.println(label[i]); + uint8_t w = oled.strWidth(label[i]); + col0 = col0 < w ? w : col0; + } + // Three pixels after label. + col0 += 3; + // Allow two or more pixels after value. + col1 = col0 + oled.strWidth("99.9") + 2; + // Line height in rows. + rows = oled.fontRows(); + + // Print units. + for ( uint8_t i = 0; i < 3; i++) { + oled.setCursor(col1 + 1, i*rows); + oled.print(units[i]); + } + delay(3000); +} +//------------------------------------------------------------------------------ +void clearValue(uint8_t row) { + oled.clear(col0, col1, row, row + rows - 1); +} +//------------------------------------------------------------------------------ +void loop() { + // Fake system model. + double volts = 0.1*random(110, 130); + double watts = 0.1*random(200, 500); + // 100 Wh battery. + int run = 100*60/(int)watts; + clearValue(0); + oled.print(volts, 1); + clearValue(rows); + oled.print(watts, 1); + clearValue(2*rows); + oled.print(run); + delay(1000); +} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingSpi/ScrollingSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingSpi/ScrollingSpi.ino new file mode 100644 index 0000000..e2e3f2b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingSpi/ScrollingSpi.ino @@ -0,0 +1,41 @@ +// Example scrolling display for 64 pixel high display. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + + #if INCLUDE_SCROLLING == 0 + #error INCLUDE_SCROLLING must be non-zero. Edit SSD1306Ascii.h + #elif INCLUDE_SCROLLING == 1 + // Scrolling is not enable by default for INCLUDE_SCROLLING set to one. + oled.setScroll(true); + #else // INCLUDE_SCROLLING + // Scrolling is enable by default for INCLUDE_SCROLLING greater than one. + #endif + + for (int i = 0; i <= 20; i++) { + if (i == 10) { + oled.clear(); + } + oled.print("Line "); + oled.println(i); + delay(500); + } + // don't scroll last line. + oled.print("Done"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingWire/ScrollingWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingWire/ScrollingWire.ino new file mode 100644 index 0000000..1ff5768 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/ScrollingWire/ScrollingWire.ino @@ -0,0 +1,48 @@ +// Example scrolling display for 64 pixel high display. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(System5x7); + + #if INCLUDE_SCROLLING == 0 + #error INCLUDE_SCROLLING must be non-zero. Edit SSD1306Ascii.h + #elif INCLUDE_SCROLLING == 1 + // Scrolling is not enable by default for INCLUDE_SCROLLING set to one. + oled.setScroll(true); + #else // INCLUDE_SCROLLING + // Scrolling is enable by default for INCLUDE_SCROLLING greater than one. + #endif + + for (int i = 0; i <= 20; i++) { + if (i == 10) { + oled.clear(); + } + oled.print("Line "); + oled.println(i); + delay(500); + } + // don't scroll last line. + oled.print("Done"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsSpi/SixAdcFieldsSpi.ino b/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsSpi/SixAdcFieldsSpi.ino new file mode 100644 index 0000000..0cb2ea9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsSpi/SixAdcFieldsSpi.ino @@ -0,0 +1,42 @@ +// Display values for six ADCs. +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; + +uint8_t col[2]; // Columns for ADC values. +uint8_t rows; // Rows per line. +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + oled.clear(); + + // Setup form. Could use F() macro to save RAM on AVR. + oled.println("ADC0: 9999 ADC1: 9999"); + oled.println("ADC2: 9999 ADC3: 9999"); + oled.println("ADC4: 9999 ADC5: 9999"); + + // Calculate columns for ADC values. No RAM is used by the strings. + // The gcc compiler replaces strlen() with 6 and 17. + col[0] = oled.fieldWidth(strlen("ADC0: ")); + col[1] = oled.fieldWidth(strlen("ADC0: 9999 ADC1: ")); + rows = oled.fontRows(); + delay(3000); +} +//------------------------------------------------------------------------------ +void loop() { + for (uint8_t i = 0; i < 6; i++) { + oled.clearField(col[i%2], rows*(i/2), 4); + oled.print(analogRead(i)); + } + delay(1000); +} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsWire/SixAdcFieldsWire.ino b/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsWire/SixAdcFieldsWire.ino new file mode 100644 index 0000000..411359c --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/SixAdcFieldsWire/SixAdcFieldsWire.ino @@ -0,0 +1,51 @@ +// Display values for six ADCs. +// On Uno, ADC4 and ADC5 are I2C pins. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; + +uint8_t col[2]; // Columns for ADC values. +uint8_t rows; // Rows per line. +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(System5x7); + oled.clear(); + + // Setup form. Could use F() macro to save RAM on AVR. + oled.println("ADC0: 9999 ADC1: 9999"); + oled.println("ADC2: 9999 ADC3: 9999"); + oled.println("ADC4: 9999 ADC5: 9999"); + + // Calculate columns for ADC values. No RAM is used by strings. + // Compiler replaces strlen() calc with 6 and 17. + col[0] = oled.fieldWidth(strlen("ADC0: ")); + col[1] = oled.fieldWidth(strlen("ADC0: 9999 ADC1: ")); + rows = oled.fontRows(); + delay(3000); +} +//------------------------------------------------------------------------------ +void loop() { + for (uint8_t i = 0; i < 6; i++) { + oled.clearField(col[i%2], rows*(i/2), 4); + oled.print(analogRead(i)); + } + delay(1000); +} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x32/SoftSpi128x32.ino b/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x32/SoftSpi128x32.ino new file mode 100644 index 0000000..b1b338a --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x32/SoftSpi128x32.ino @@ -0,0 +1,28 @@ +// Simple software SPI test for Adafruit 128x32 oled. +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSoftSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 +#define OLED_DATA 11 +#define OLED_CLK 13 + +SSD1306AsciiSoftSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x32, CS_PIN, DC_PIN, OLED_CLK, OLED_DATA); + oled.begin(&Adafruit128x32, CS_PIN, DC_PIN, OLED_CLK, OLED_DATA, RST_PIN); + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x64/SoftSpi128x64.ino b/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x64/SoftSpi128x64.ino new file mode 100644 index 0000000..99ba680 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/SoftSpi128x64/SoftSpi128x64.ino @@ -0,0 +1,33 @@ +// Simple software SPI test for ebay 128x64 oled. + +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSoftSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 +#define MOSI_PIN 11 +#define CLK_PIN 13 + +SSD1306AsciiSoftSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, CLK_PIN, MOSI_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, CLK_PIN, MOSI_PIN, RST_PIN); + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.println(); + oled.set2X(); + oled.println("2X demo"); + oled.set1X(); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x32/Spi128x32.ino b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x32/Spi128x32.ino new file mode 100644 index 0000000..9866bc7 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x32/Spi128x32.ino @@ -0,0 +1,28 @@ +// Simple SPI test for Adafruit 128x32 oled. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x32, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x32, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64/Spi128x64.ino b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64/Spi128x64.ino new file mode 100644 index 0000000..76b20ed --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64/Spi128x64.ino @@ -0,0 +1,33 @@ +// Simple SPI test for ebay 128x64 oled. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions + +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.println(); + oled.set2X(); + oled.println("2X demo"); + oled.set1X(); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64SH1106/Spi128x64SH1106.ino b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64SH1106/Spi128x64SH1106.ino new file mode 100644 index 0000000..df8fe72 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/Spi128x64SH1106/Spi128x64SH1106.ino @@ -0,0 +1,23 @@ +// Test for minimum program size. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&SH1106_128x64, CS_PIN, DC_PIN); + oled.begin(&SH1106_128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(System5x7); + oled.clear(); + oled.print("Hello world!"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x32/WireI2c128x32.ino b/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x32/WireI2c128x32.ino new file mode 100644 index 0000000..5c333f4 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x32/WireI2c128x32.ino @@ -0,0 +1,42 @@ +// Simple I2C test for ebay 128x32 oled. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x32, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x32, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + // first row + oled.println("set1X test"); + + // second row + oled.set2X(); + oled.println("set2X test"); + + // third row + oled.set1X(); + oled.print("micros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x64/WireI2c128x64.ino b/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x64/WireI2c128x64.ino new file mode 100644 index 0000000..4f3d4c0 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/WireI2c128x64/WireI2c128x64.ino @@ -0,0 +1,39 @@ +// Simple I2C test for ebay 128x64 oled. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiWire.h" + +// 0X3C+SA0 - 0x3C or 0x3D +#define I2C_ADDRESS 0x3C + +// Define proper RST_PIN if required. +#define RST_PIN -1 + +SSD1306AsciiWire oled; +//------------------------------------------------------------------------------ +void setup() { + Wire.begin(); + Wire.setClock(400000L); + +#if RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); +#else // RST_PIN >= 0 + oled.begin(&Adafruit128x64, I2C_ADDRESS); +#endif // RST_PIN >= 0 + + oled.setFont(Adafruit5x7); + + uint32_t m = micros(); + oled.clear(); + oled.println("Hello world!"); + oled.println("A long line may be truncated"); + oled.println(); + oled.set2X(); + oled.println("2X demo"); + oled.set1X(); + oled.print("\nmicros: "); + oled.print(micros() - m); +} +//------------------------------------------------------------------------------ +void loop() {} diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/cmp5x7Fonts/cmp5x7Fonts.ino b/Arduino_Libs/SSD1306Ascii-master/examples/cmp5x7Fonts/cmp5x7Fonts.ino new file mode 100644 index 0000000..62c2f69 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/cmp5x7Fonts/cmp5x7Fonts.ino @@ -0,0 +1,113 @@ +// Display differences in 5x7 fonts. + +#include +#include "SSD1306Ascii.h" +#include "SSD1306AsciiSpi.h" + +// pin definitions +#define CS_PIN 7 +#define RST_PIN 8 +#define DC_PIN 9 + +SSD1306AsciiSpi oled; + +const char* fontName[] = { + "Adafruit5x7", + "font5x7", + "lcd5x7", + "System5x7" +}; +const uint8_t* fontList[] = { + Adafruit5x7, + font5x7, + lcd5x7, + System5x7 +}; +const uint8_t nFont = sizeof(fontList)/sizeof(const char*); +//------------------------------------------------------------------------------ +// Assume fonts start with ' ' and have 96 chars +void checkFont(const uint8_t* font, const char* name) { + if (pgm_read_byte(font++) || + pgm_read_byte(font++) || + pgm_read_byte(font++) != 5 || + pgm_read_byte(font++) != 7 || + pgm_read_byte(font++) != ' ' || + pgm_read_byte(font++) < 96) { + oled.clear(); + oled.print("Bad: "); + oled.print(name); + while(1); + } +} +//------------------------------------------------------------------------------ +void cmp5x7Fonts(const uint8_t* font1, const char* name1, + const uint8_t* font2, const char* name2) { + uint8_t diff[96]; + uint8_t nDiff = 0; + uint8_t w = 5; + for (uint8_t i = 0; i < 96; i++) { + const uint8_t* base1 = font1 + i*w + 6; + const uint8_t* base2 = font2 + i*w + 6; + for (uint8_t j = 0; j < w; j++) { + uint8_t b1 = pgm_read_byte(base1 + j); + uint8_t b2 = pgm_read_byte(base2 + j); + if (b1 != b2) { + diff[nDiff++] = ' ' + i; + break; + } + } + } + oled.clear(); + delay(200); + oled.setFont(font1); + oled.print(name1); + oled.setCol(78); + oled.print("nDiff "); + oled.println(nDiff); + oled.setFont(font2); + oled.println(name2); + + const uint8_t lineCount = 21; + if (nDiff > 3*lineCount) nDiff = 3*lineCount; + for (uint8_t i = 0; i < nDiff; i += lineCount) { + oled.setFont(font1); + for (uint8_t j = 0; j < lineCount && (j + i) < nDiff; j++) { + oled.write(diff[i + j]); + } + oled.println(); + oled.setFont(font2); + uint8_t nc = (nDiff - i) > lineCount ? lineCount : nDiff - i; + for (uint8_t j = 0; j < nc; j++) { + oled.write(diff[i + j]); + } + oled.println(); + } + delay(2000 + 500*nDiff); +} +//------------------------------------------------------------------------------ +void setup() { + // Use next line if no RST_PIN or reset is not required. + // oled.begin(&Adafruit128x64, CS_PIN, DC_PIN); + oled.begin(&Adafruit128x64, CS_PIN, DC_PIN, RST_PIN); + oled.setFont(Adafruit5x7); + oled.clear(); + + oled.print("Start"); + + checkFont(Stang5x7, "Stang5x7"); + for (uint8_t i = 0; i < nFont; i++) { + checkFont(fontList[i], fontName[i]); + } + + for (uint8_t i = 0; i < nFont; i++) { + for (uint8_t j = i + 1; j < nFont; j++) { + cmp5x7Fonts(fontList[i], fontName[i], fontList[j], fontName[j]); + } + } + // System5x7 derived from Stang5x7? + cmp5x7Fonts(Stang5x7, "Stang5x7", System5x7, "System5x7"); + + oled.print("\nDone"); +} +//------------------------------------------------------------------------------ +void loop() {} \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/examples/print5x7Fonts/print5x7Fonts.ino b/Arduino_Libs/SSD1306Ascii-master/examples/print5x7Fonts/print5x7Fonts.ino new file mode 100644 index 0000000..e3e1d64 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/examples/print5x7Fonts/print5x7Fonts.ino @@ -0,0 +1,73 @@ +// This example is a development tool and does not use the display. +// Print simple representation of ASCII characters for 5x7 fixed fonts. +// +#include "SdFat.h" +#include "SSD1306Ascii.h" +const char* fontName[] = { + "Adafruit5x7", + "font5x7", + "lcd5x7", + "Stang5x7", + "System5x7" +}; +const uint8_t* fontList[] = { + Adafruit5x7, + font5x7, + lcd5x7, + Stang5x7, + System5x7 +}; +const uint8_t nFont = sizeof(fontList)/sizeof(const char*); +SdFat sd; +SdFile file; +//------------------------------------------------------------------------------ +// return bitmap for a character +void charBitmap(const uint8_t* font, uint8_t c, uint8_t* bits) { + c -= 32; + const uint8_t *base = font + 6 + 5 * c; + for (uint8_t i =0; i < 5; i++ ) { + bits[i] = pgm_read_byte(base + i); + } +} +//------------------------------------------------------------------------------ +void printChar(const uint8_t*font, uint8_t c) { + uint8_t bits[192]; + // get bit maps + for (uint8_t i = 0; i < 32; i++) { + charBitmap(font, c + i, bits + 6*i); + bits[6*i + 5] = 0; + } + // print characters + for (uint8_t m = 1; m; m <<= 1) { + for (uint8_t i = 0; i < 192; i++) { + file.write(bits[i] & m ? 'X' : ' '); + } + file.println(); + } +} +//------------------------------------------------------------------------------ +void setup() { + Serial.begin(9600); + if (!sd.begin()) { + Serial.println("begin error"); + return; + } + char name[] = "5x7fonts.txt"; + if (!file.open(name, O_CREAT | O_WRITE |O_TRUNC)) { + Serial.println("OPEN ERROR"); + return; + } + for (uint8_t i = 0; i < nFont; i++) { + file.println(); + file.println(fontName[i]); + for (uint8_t c = 32; c < 128; c += 32) { + file.println(); + printChar(fontList[i], c); + } + file.println(); + } + file.close(); + Serial.println("DONE"); +} +//------------------------------------------------------------------------------ +void loop(){ } \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/library.properties b/Arduino_Libs/SSD1306Ascii-master/library.properties new file mode 100644 index 0000000..d74db50 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/library.properties @@ -0,0 +1,9 @@ +name=SSD1306Ascii +version=1.1.3 +author=Bill Greiman +maintainer=Bill Greiman +sentence=Text display on small momochrome OLED modules. +paragraph=A basic SSD1306 text only library optimized for minimum memory usage. +category=Display +url=https://github.com/greiman/SSD1306Ascii +architectures=* diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.cpp b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.cpp new file mode 100644 index 0000000..841ac63 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.cpp @@ -0,0 +1,277 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +#include "SSD1306Ascii.h" +//------------------------------------------------------------------------------ +uint8_t SSD1306Ascii::charWidth(uint8_t c) { + if (!m_font) { + return 0; + } + uint8_t first = readFontByte(m_font + FONT_FIRST_CHAR); + uint8_t count = readFontByte(m_font + FONT_CHAR_COUNT); + if (c < first || c >= (first + count)) { + return 0; + } + if (fontSize() > 1) { + // Proportional font. + return m_magFactor*readFontByte(m_font + FONT_WIDTH_TABLE + c - first); + } + // Fixed width font. + return m_magFactor*readFontByte(m_font + FONT_WIDTH); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::clear() { + clear(0, displayWidth() - 1, 0 , displayRows() - 1); + #if INCLUDE_SCROLLING + m_scroll = m_scroll ? 1 : 0; + ssd1306WriteCmd(SSD1306_SETSTARTLINE | 0); + #endif //INCLUDE_SCROLLING +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1) { + if (r1 >= displayRows()) r1 = displayRows() - 1; + for (uint8_t r = r0; r <= r1; r++) { + setCursor(c0, r); + for (uint8_t c = c0; c <= c1; c++) { + ssd1306WriteRamBuf(0); + } + } + setCursor(c0, r0); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::clearToEOL() { + clear (m_col, displayWidth() - 1, m_row, m_row + fontRows() - 1); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::clearField(uint8_t col, uint8_t row, uint8_t n) { + clear(col, col + fieldWidth(n) - 1, row, row + fontRows() - 1); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::displayRemap(bool mode) { + ssd1306WriteCmd(mode ? SSD1306_SEGREMAP : SSD1306_SEGREMAP | 1); + ssd1306WriteCmd(mode ? SSD1306_COMSCANINC : SSD1306_COMSCANDEC); +} +//------------------------------------------------------------------------------ +size_t SSD1306Ascii::fieldWidth(uint8_t n) { + return n*(fontWidth() + letterSpacing()); +} +//------------------------------------------------------------------------------ +uint8_t SSD1306Ascii::fontCharCount() { + return m_font ? readFontByte(m_font + FONT_CHAR_COUNT) : 0; +} +//------------------------------------------------------------------------------ +char SSD1306Ascii::fontFirstChar() { + return m_font ? readFontByte(m_font + FONT_FIRST_CHAR) : 0; +} +//------------------------------------------------------------------------------ +uint8_t SSD1306Ascii::fontHeight() { + return m_font ? m_magFactor*readFontByte(m_font + FONT_HEIGHT) : 0; +} +//------------------------------------------------------------------------------ +uint16_t SSD1306Ascii::fontSize() { + return (readFontByte(m_font) << 8) | readFontByte(m_font + 1); +} +//------------------------------------------------------------------------------ +uint8_t SSD1306Ascii::fontWidth() { + return m_font ? m_magFactor*readFontByte(m_font + FONT_WIDTH) : 0; +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::init(const DevType* dev) { + m_col = 0; + m_row = 0; + #ifdef __AVR__ + const uint8_t* table = (const uint8_t*)pgm_read_word(&dev->initcmds); + #else // __AVR__ + const uint8_t* table = dev->initcmds; + #endif // __AVR + uint8_t size = readFontByte(&dev->initSize); + m_displayWidth = readFontByte(&dev->lcdWidth); + m_displayHeight = readFontByte(&dev->lcdHeight); + m_colOffset = readFontByte(&dev->colOffset); + for (uint8_t i = 0; i < size; i++) { + ssd1306WriteCmd(readFontByte(table + i)); + } + #if INCLUDE_SCROLLING + m_scroll = m_displayHeight != 64 || INCLUDE_SCROLLING < 2 ? 0 : 1; + #endif //INCLUDE_SCROLLING + clear(); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::setCol(uint8_t col) { + if (col >= m_displayWidth) return; + m_col = col; + col += m_colOffset; + ssd1306WriteCmd(SSD1306_SETLOWCOLUMN | (col & 0XF)); + ssd1306WriteCmd(SSD1306_SETHIGHCOLUMN | (col >> 4)); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::setContrast(uint8_t value) { + ssd1306WriteCmd(SSD1306_SETCONTRAST); + ssd1306WriteCmd(value); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::setCursor(uint8_t col, uint8_t row) { + setCol(col); + setRow(row); +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::setFont(const uint8_t* font) { + m_font = font; + if (font && fontSize() == 1) { + m_letterSpacing = 0; + } else { + m_letterSpacing = 1; + } +} +//------------------------------------------------------------------------------ +void SSD1306Ascii::setRow(uint8_t row) { + if (row >= m_displayHeight/8) return; + m_row = row; + ssd1306WriteCmd(SSD1306_SETSTARTPAGE | row); +} +//------------------------------------------------------------------------------ +#if INCLUDE_SCROLLING +void SSD1306Ascii::setScroll(bool enable) { + if (m_displayHeight != 64) return; + clear(); + m_scroll = enable ? 1 : 0; +} +#endif // INCLUDE_SCROLLING +//----------------------------------------------------------------------------- +void SSD1306Ascii::ssd1306WriteRam(uint8_t c) { + if (m_col >= m_displayWidth) return; + writeDisplay(c, SSD1306_MODE_RAM); + m_col++; +} +//----------------------------------------------------------------------------- +void SSD1306Ascii::ssd1306WriteRamBuf(uint8_t c) { + if (m_col >= m_displayWidth) return; + writeDisplay(c, SSD1306_MODE_RAM_BUF); + m_col++; +} +//------------------------------------------------------------------------------ +GLCDFONTDECL(scaledNibble) = { + 0X00, 0X03, 0X0C, 0X0F, + 0X30, 0X33, 0X3C, 0X3F, + 0XC0, 0XC3, 0XCC, 0XCF, + 0XF0, 0XF3, 0XFC, 0XFF +}; +//------------------------------------------------------------------------------ +size_t SSD1306Ascii::strWidth(const char* str) { + size_t sw = 0; + while (*str) { + uint8_t cw = charWidth(*str++); + if (cw == 0) { + return 0; + } + sw += cw + letterSpacing(); + } + return sw; +} +//------------------------------------------------------------------------------ +size_t SSD1306Ascii::write(uint8_t ch) { + if (!m_font) { + return 0; + } + uint8_t w = readFontByte(m_font + FONT_WIDTH); + uint8_t h = readFontByte(m_font + FONT_HEIGHT); + uint8_t nr = (h + 7)/8; + uint8_t first = readFontByte(m_font + FONT_FIRST_CHAR); + uint8_t count = readFontByte(m_font + FONT_CHAR_COUNT); + const uint8_t* base = m_font + FONT_WIDTH_TABLE; + + if (ch < first || ch >= (first + count)) { + if (ch == '\r') { + setCol(0); + return 1; + } + if (ch == '\n') { + #if INCLUDE_SCROLLING == 0 + setCursor(0, m_row + m_magFactor*nr); + #else // INCLUDE_SCROLLING + uint8_t tmp = m_row + m_magFactor*nr; + if (tmp >= m_displayHeight/8 && m_scroll) { + tmp = 0; + m_scroll = 2; + } + setCursor(0, tmp); + if (m_scroll > 1) { + clearToEOL(); + tmp += m_magFactor*nr; + tmp *= 8; + if (tmp > m_displayHeight) { + tmp = 0; + } + ssd1306WriteCmd(SSD1306_SETSTARTLINE | tmp); + } + #endif // INCLUDE_SCROLLING + return 1; + } + return 0; + } + ch -= first; + uint8_t s = letterSpacing(); + uint8_t thieleShift = 0; + if (fontSize() < 2) { + // Fixed width font. + base += nr*w*ch; + } else { + if (h & 7) { + thieleShift = 8 - (h & 7); + } + uint16_t index = 0; + for (uint8_t i = 0; i < ch; i++) { + index += readFontByte(base + i); + } + w = readFontByte(base + ch); + base += nr*index + count; + } + uint8_t scol = m_col; + uint8_t srow = m_row; + for (uint8_t r = 0; r < nr; r++) { + for (uint8_t m = 0; m < m_magFactor; m++) { + if (r || m) setCursor(scol, m_row + 1); + for (uint8_t c = 0; c < w; c++) { + uint8_t b = readFontByte(base + c + r*w); + if (thieleShift && (r + 1) == nr) { + b >>= thieleShift; + } + if (m_magFactor == 2) { + b = m ? b >> 4 : b & 0XF; + b = readFontByte(scaledNibble + b); + ssd1306WriteRamBuf(b); + } + ssd1306WriteRamBuf(b); + } + for (uint8_t i = 0; i < s; i++) { + ssd1306WriteRamBuf(0); + } + } + } + setRow(srow); + return 1; +} +//------------------------------------------------------------------------------ +size_t SSD1306Ascii::write(const char* s) { + size_t n = strlen(s); + for (size_t i = 0; i < n; i++) { + write(s[i]); + } + return n; +} diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.h new file mode 100644 index 0000000..d6e658e --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306Ascii.h @@ -0,0 +1,319 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306Ascii.h + * @brief Base class for ssd1306 displays. + */ +#ifndef SSD1306Ascii_h +#define SSD1306Ascii_h +#include "Arduino.h" +#include "SSD1306init.h" +#include "fonts/allFonts.h" +//------------------------------------------------------------------------------ +/** SSD1306Ascii version */ +#define SDD1306_ASCII_VERSION 1.1.0 +//------------------------------------------------------------------------------ +// Configuration options. +/** Set Scrolling mode for new line. + * + * If INCLUDE_SCROLLING is defined to be zero, new line will not scroll + * the display and code for scrolling will not be included. This option + * will save some code space and one byte of RAM. + * + * If INCLUDE_SCROLLING is defined to be one, the scroll feature will + * be included but not enabled. A call to setScroll() will be required + * to enable scrolling. + * + * If INCLUDE_SCROLLING is defined to be two, the scroll feature will + * be included and enabled. A call to setScroll() will be required + * to disable scrolling. + */ +#define INCLUDE_SCROLLING 1 + +/** Use larger faster I2C code. */ +#define OPTIMIZE_I2C 1 + +/** Define OPTIMIZE_AVR_SPI non-zero for a faster smaller AVR SPI code. + * Warning AVR will not use SPI transactions. + */ +#define OPTIMIZE_AVR_SPI 1 +//------------------------------------------------------------------------------ +// Values for writeDisplay() mode parameter. +/** Write to Command register. */ +#define SSD1306_MODE_CMD 0 +/** Write one byte to display RAM. */ +#define SSD1306_MODE_RAM 1 +/** Write to display RAM with possible buffering. */ +#define SSD1306_MODE_RAM_BUF 2 +//----------------------------------------------------------------------------- +/** + * @brief Reset the display controller. + * + * @param[in] rst Reset pin number. + */ +inline void oledReset(uint8_t rst) { + pinMode(rst, OUTPUT); + digitalWrite(rst, LOW); + delay(10); + digitalWrite(rst, HIGH); + delay(10); +} +//------------------------------------------------------------------------------ +/** + * @class SSD1306Ascii + * @brief SSD1306 base class + */ +class SSD1306Ascii : public Print { + public: + SSD1306Ascii() : m_magFactor(1), m_font(0) {} + /** + * @brief Determine the width of a character. + * + * @param[in] c Character code. + * @return Width of the character in pixels. + */ + uint8_t charWidth(uint8_t c); + /** + * @brief Clear the display and set the cursor to (0, 0). + */ + void clear(); + /** + * @brief Clear a region of the display. + * + * @param[in] c0 Starting column. + * @param[in] c1 Ending column. + * @param[in] r0 Starting row; + * @param[in] r1 Ending row; + * @note The final cursor position will be (c0, r0). + */ + void clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1); + /** + * @brief Clear a field of n fieldWidth() characters. + * + * @param[in] col Field start column. + * + * @param[in] row Field start row. + * + * @param[in] n Number of characters in the field. + * + */ + void clearField(uint8_t col, uint8_t row, uint8_t n); + /** + * @brief Clear the display to the end of the current line. + * @note The number of rows cleared will be determined by the height + * of the current font. + * @note The cursor will be returned to the original position. + */ + void clearToEOL(); + /** + * @return The current column in pixels. + */ + uint8_t col() {return m_col;} + /** + * @return The display hight in pixels. + */ + uint8_t displayHeight() {return m_displayHeight;} + /** + * @brief Set display to normal or 180 degree remap mode. + * + * @param[in] mode true for normal mode, false for remap mode. + * + * @note Adafruit and many ebay displays use remap mode. + * Use normal mode to rotate these displays 180 degrees. + */ + void displayRemap(bool mode); + /** + * @return The display height in rows with eight pixels to a row. + */ + uint8_t displayRows() {return m_displayHeight/8;} + /** + * @return The display width in pixels. + */ + uint8_t displayWidth() {return m_displayWidth;} + /** + * @brief Width of a field in pixels. + * + * @param[in] n Number of characters in the field. + * + * @return Width of the field. + */ + size_t fieldWidth(uint8_t n); + /** + * @return The current font pointer. + */ + const uint8_t* font() {return m_font;} + /** + * @return The count of characters in a font. + */ + uint8_t fontCharCount(); + /** + * @return The first character in a font. + */ + char fontFirstChar(); + /** + * @return The current font height in pixels. + */ + uint8_t fontHeight(); + /** + * @return The number of eight pixel rows required to display a character + * in the current font. + */ + uint8_t fontRows() {return (fontHeight() + 7)/8;} + /** + * @return The maximum width of characters in the current font. + */ + uint8_t fontWidth(); + /** + * @brief Set the cursor position to (0, 0). + */ + void home() {setCursor(0, 0);} + /** + * @brief Initialize the display controller. + * + * @param[in] dev A display initialization structure. + */ + void init(const DevType* dev); + /** + * @return letter-spacing in pixels with magnification factor. + */ + uint8_t letterSpacing() {return m_magFactor*m_letterSpacing;} + /** + * @return The character magnification factor. + */ + uint8_t magFactor() {return m_magFactor;} + /** + * @return the current row number with eight pixels to a row. + */ + uint8_t row() {return m_row;} + /** + * @brief Set the character magnification factor to one. + */ + void set1X() {m_magFactor = 1;} + /** + * @brief Set the character magnification factor to two. + */ + void set2X() {m_magFactor = 2;} + /** + * @brief Set the current column number. + * + * @param[in] col The desired column number in pixels. + */ + void setCol(uint8_t col); + /** + * @brief Set the display contrast. + * + * @param[in] value The contrast level in th range 0 to 255. + */ + void setContrast(uint8_t value); + /** + * @brief Set the cursor position. + * + * @param[in] col The column number in pixels. + * @param[in] row the row number in eight pixel rows. + */ + void setCursor(uint8_t col, uint8_t row); + /** + * @brief Set the current font. + * + * @param[in] font Pointer to a font table. + */ + void setFont(const uint8_t* font); + /** + * @brief Set letter-spacing. setFont() will restore default letter-spacing. + * + * @param[in] pixels letter-spacing in pixels before magnification. + */ + void setLetterSpacing(uint8_t pixels) {m_letterSpacing = pixels;} + /** + * @brief Set the current row number. + * + * @param[in] row the row number in eight pixel rows. + */ + void setRow(uint8_t row); +#if INCLUDE_SCROLLING + /** + * @brief Enable or disable scroll mode. + * + * @param[in] enable true enable scroll on new line false disable scroll. + * @note Scroll mode is only supported on 64 pixel high displays. + * Using setRow() or setCursor() will be unpredictable in scroll mode. + * You must use a font with an integral number of line on + * the display. + */ + void setScroll(bool enable); +#endif // INCLUDE_SCROLLING + /** + * @brief Write a command byte to the display controller. + * + * @param[in] c The command byte. + * @note The byte will immediately be sent to the controller. + */ + void ssd1306WriteCmd(uint8_t c) {writeDisplay(c, SSD1306_MODE_CMD);} + /** + * @brief Write a byte to RAM in the display controller. + * + * @param[in] c The data byte. + * @note The byte will immediately be sent to the controller. + */ + void ssd1306WriteRam(uint8_t c); + /** + * @brief Write a byte to RAM in the display controller. + * + * @param[in] c The data byte. + * @note The byte may be buffered until a call to ssd1306WriteCmd + * or ssd1306WriteRam. + */ + void ssd1306WriteRamBuf(uint8_t c); + /** + * @param[in] str The pointer to string. + * @return the width of the string in pixels. + */ + size_t strWidth(const char* str); + /** + * @brief Display a character. + * + * @param[in] c The character to display. + * @return the value one. + */ + size_t write(uint8_t c); + /** + * @brief Display a string. + * + * @param[in] s The string to display. + * @return The length of the string. + */ + size_t write(const char* s); + + private: + uint16_t fontSize(); + virtual void writeDisplay(uint8_t b, uint8_t mode) = 0; + uint8_t m_col; // Cursor column. + uint8_t m_row; // Cursor RAM row. + uint8_t m_displayWidth; // Display width. + uint8_t m_displayHeight; // Display height. + uint8_t m_colOffset; // Column offset RAM to SEG. + uint8_t m_letterSpacing; // lerret-spacing in pixels. + uint8_t m_magFactor; // Magnification factor. +#if INCLUDE_SCROLLING + uint8_t m_scroll; // Scroll mode +#endif // INCLUDE_SCROLLING + const uint8_t* m_font; // Current font. +}; +#endif // SSD1306Ascii_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiAvrI2c.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiAvrI2c.h new file mode 100644 index 0000000..bc1ff58 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiAvrI2c.h @@ -0,0 +1,84 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306AsciiAvrI2c.h + * @brief Class for I2C displays using AvrI2c. + */ +#ifndef SSD1306AsciiAvrI2c_h +#define SSD1306AsciiAvrI2c_h +#include "utility/AvrI2c.h" +#include "SSD1306Ascii.h" +/** + * @class SSD1306AsciiAvrI2c + * @brief Class for I2C displays on AVR. + * + * Uses the AvrI2c class that is smaller and faster than the + * Wire library. + */ +class SSD1306AsciiAvrI2c : public SSD1306Ascii { + public: + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] i2cAddr The I2C address of the display controller. + */ + void begin(const DevType* dev, uint8_t i2cAddr) { + m_nData = 0; + m_i2cAddr = i2cAddr; + + m_i2c.begin(true); + init(dev); + } + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] i2cAddr The I2C address of the display controller. + * @param[in] rst The display controller reset pin. + */ + void begin(const DevType* dev, uint8_t i2cAddr, uint8_t rst) { + oledReset(rst); + begin(dev, i2cAddr); + } + protected: + void writeDisplay(uint8_t b, uint8_t mode) { + if ((m_nData && mode == SSD1306_MODE_CMD)) { + m_i2c.stop(); + m_nData = 0; + } + if (m_nData == 0) { + m_i2c.start((m_i2cAddr << 1) | I2C_WRITE); + m_i2c.write(mode == SSD1306_MODE_CMD ? 0X00 : 0X40); + } + m_i2c.write(b); + if (mode == SSD1306_MODE_RAM_BUF) { + m_nData++; + }else { + m_i2c.stop(); + m_nData = 0; + } + } + private: + AvrI2c m_i2c; + uint8_t m_i2cAddr; + uint8_t m_nData; +}; +#endif // SSD1306AsciiAvrI2c_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSoftSpi.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSoftSpi.h new file mode 100644 index 0000000..2097d0a --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSoftSpi.h @@ -0,0 +1,86 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306AsciiSoftSpi.h + * @brief Class for software SPI displays. + */ +#ifndef SSD1306AsciiSoftSpi_h +#define SSD1306AsciiSoftSpi_h + +#include "SSD1306Ascii.h" +#include "utility/DigitalOutput.h" +/** + * @class SSD1306AsciiSoftSpi + * @brief Class for SPI displays using software SPI. + */ +class SSD1306AsciiSoftSpi : public SSD1306Ascii { + public: + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller cdata/command pin. + * @param[in] clk The SPI clock pin. + * @param[in] data The SPI MOSI pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data) { + m_csPin.begin(cs); + m_dcPin.begin(dc); + m_clkPin.begin(clk); + m_dataPin.begin(data); + init(dev); + } + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller cdata/command pin. + * @param[in] clk The SPI clock pin. + * @param[in] data The SPI MOSI pin. + * @param[in] rst The display controller reset pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc, uint8_t clk, uint8_t data, uint8_t rst) { + pinMode(rst, OUTPUT); + digitalWrite(rst, LOW); + delay(10); + digitalWrite(rst, HIGH); + delay(10); + begin(dev, cs, dc, clk, data); + } + protected: + void writeDisplay(uint8_t b, uint8_t mode) { + m_dcPin.write(mode != SSD1306_MODE_CMD); + m_csPin.write(LOW); + for (uint8_t m = 0X80; m; m >>= 1) { + m_clkPin.write(LOW); + m_dataPin.write(m & b); + m_clkPin.write(HIGH); + } + m_csPin.write(HIGH); + } + private: + DigitalOutput m_csPin; + DigitalOutput m_dcPin; + DigitalOutput m_clkPin; + DigitalOutput m_dataPin; +}; +#endif // SSD1306AsciiSoftSpi_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSpi.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSpi.h new file mode 100644 index 0000000..55acfe5 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiSpi.h @@ -0,0 +1,139 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306AsciiSpi.h + * @brief Class for hardware SPI displays. + */ +#ifndef SSD1306AsciiSpi_h +#define SSD1306AsciiSpi_h +#include +#include "SSD1306Ascii.h" + +#if !defined(__AVR__) || OPTIMIZE_AVR_SPI == 0 +//------------------------------------------------------------------------------ +/** + * @class SSD1306AsciiSpi + * @brief Class for SPI displays on the hardware SPI bus. + */ +class SSD1306AsciiSpi : public SSD1306Ascii { + public: + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller data/command pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc) { + m_cs = cs; + m_dc = dc; + pinMode(m_cs, OUTPUT); + pinMode(m_dc, OUTPUT); + SPI.begin(); + init(dev); + } + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller cdata/command pin. + * @param[in] rst The display controller reset pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc, uint8_t rst) { + oledReset(rst); + begin(dev, cs, dc); + } + + protected: + void writeDisplay(uint8_t b, uint8_t mode) { + digitalWrite(m_dc, mode != SSD1306_MODE_CMD); + SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); + digitalWrite(m_cs, LOW); + SPI.transfer(b); + digitalWrite(m_cs, HIGH); + SPI.endTransaction(); + } + + private: + int8_t m_cs; + int8_t m_dc; +}; +//------------------------------------------------------------------------------ +#else // OPTIMIZE_AVR_SPI +#include "utility/DigitalOutput.h" +/** + * @class SSD1306AsciiSpi + * @brief Class for SPI displays on the hardware SPI bus. + */ +class SSD1306AsciiSpi : public SSD1306Ascii { + public: + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller cdata/command pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc) { + m_csPin.begin(cs); + m_dcPin.begin(dc); +#ifdef __AVR_ATmega328P__ + // Save a few bytes for 328 CPU - gcc optimizes single bit '|' to sbi. + PORTB |= 1 << 2; // SS high + DDRB |= 1 << 2; // SS output mode + DDRB |= 1 << 3; // MOSI output mode + DDRB |= 1 << 5; // SCK output mode +#else // __AVR_ATmega328P__ + SPI.begin(); +#endif // __AVR_ATmega328P__ + init(dev); + } + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] cs The display controller chip select pin. + * @param[in] dc The display controller cdata/command pin. + * @param[in] rst The display controller reset pin. + */ + void begin(const DevType* dev, uint8_t cs, uint8_t dc, uint8_t rst) { + oledReset(rst); + begin(dev, cs, dc); + } + + protected: + //---------------------------------------------------------------------------- + void writeDisplay(uint8_t b, uint8_t mode) { + m_dcPin.write(mode != SSD1306_MODE_CMD); + // 8 MHz, SPI_MODE0, MSBFIRST + SPCR = (1 << SPE) | (1 << MSTR); + SPSR = 1 << SPI2X; + m_csPin.write(LOW); + SPI.transfer(b); + m_csPin.write(HIGH); + } + + private: + DigitalOutput m_csPin; + DigitalOutput m_dcPin; +}; +#endif // OPTIMIZE_AVR_SPI +#endif // SSD1306AsciiSpi_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiWire.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiWire.h new file mode 100644 index 0000000..b287d1b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306AsciiWire.h @@ -0,0 +1,97 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306AsciiWire.h + * @brief Class for I2C displays using Wire. + */ +#ifndef SSD1306AsciiWire_h +#define SSD1306AsciiWire_h +#include +#include "SSD1306Ascii.h" +/** + * @class SSD1306AsciiWire + * @brief Class for I2C displays using Wire. + */ +class SSD1306AsciiWire : public SSD1306Ascii { + public: + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] i2cAddr The I2C address of the display controller. + */ + void begin(const DevType* dev, uint8_t i2cAddr) { +#if OPTIMIZE_I2C + m_nData = 0; +#endif // OPTIMIZE_I2C + m_i2cAddr = i2cAddr; + init(dev); + } + /** + * @brief Initialize the display controller. + * + * @param[in] dev A device initialization structure. + * @param[in] i2cAddr The I2C address of the display controller. + * @param[in] rst The display controller reset pin. + */ + void begin(const DevType* dev, uint8_t i2cAddr, uint8_t rst) { + oledReset(rst); + begin(dev, i2cAddr); + } + /** + * @brief Set the I2C clock rate to 400 kHz. + * Deprecated use Wire.setClock(400000L) + */ + void set400kHz() __attribute__ ((deprecated("use Wire.setClock(400000L)"))) { + Wire.setClock(400000L); + } + + protected: + void writeDisplay(uint8_t b, uint8_t mode) { +#if OPTIMIZE_I2C + if (m_nData > 16 || (m_nData && mode == SSD1306_MODE_CMD)) { + Wire.endTransmission(); + m_nData = 0; + } + if (m_nData == 0) { + Wire.beginTransmission(m_i2cAddr); + Wire.write(mode == SSD1306_MODE_CMD ? 0X00 : 0X40); + } + Wire.write(b); + if (mode == SSD1306_MODE_RAM_BUF) { + m_nData++; + }else { + Wire.endTransmission(); + m_nData = 0; + } +#else // OPTIMIZE_I2C + Wire.beginTransmission(m_i2cAddr); + Wire.write(mode == SSD1306_MODE_CMD ? 0X00: 0X40); + Wire.write(b); + Wire.endTransmission(); +#endif // OPTIMIZE_I2C + } + private: + uint8_t m_i2cAddr; +#if OPTIMIZE_I2C + uint8_t m_nData; +#endif // OPTIMIZE_I2C +}; +#endif // SSD1306AsciiWire_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/SSD1306init.h b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306init.h new file mode 100644 index 0000000..d29254f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/SSD1306init.h @@ -0,0 +1,232 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file SSD1306init.h + * @brief Display controller initialization commands. + */ +#ifndef SSD1306init_h +#define SSD1306init_h +//------------------------------------------------------------------------------ +#ifndef __AVR__ +/** Handle AVR flash addressing. */ +#define MEM_TYPE +#else // __AVR__ +#define MEM_TYPE __attribute__ ((progmem)) +#endif // __AVR__ +//------------------------------------------------------------------------------ +/** Set Lower Column Start Address for Page Addressing Mode. */ +#define SSD1306_SETLOWCOLUMN 0x00 +/** Set Higher Column Start Address for Page Addressing Mode. */ +#define SSD1306_SETHIGHCOLUMN 0x10 +/** Set Memory Addressing Mode. */ +#define SSD1306_MEMORYMODE 0x20 +/** Set display RAM display start line register from 0 - 63. */ +#define SSD1306_SETSTARTLINE 0x40 +/** Set Display Contrast to one of 256 steps. */ +#define SSD1306_SETCONTRAST 0x81 +/** Enable or disable charge pump. Follow with 0X14 enable, 0X10 disable. */ +#define SSD1306_CHARGEPUMP 0x8D +/** Set Segment Re-map between data column and the segment driver. */ +#define SSD1306_SEGREMAP 0xA0 +/** Resume display from GRAM content. */ +#define SSD1306_DISPLAYALLON_RESUME 0xA4 +/** Force display on regardless of GRAM content. */ +#define SSD1306_DISPLAYALLON 0xA5 +/** Set Normal Display. */ +#define SSD1306_NORMALDISPLAY 0xA6 +/** Set Inverse Display. */ +#define SSD1306_INVERTDISPLAY 0xA7 +/** Set Multiplex Ratio from 16 to 63. */ +#define SSD1306_SETMULTIPLEX 0xA8 +/** Set Display off. */ +#define SSD1306_DISPLAYOFF 0xAE +/** Set Display on. */ +#define SSD1306_DISPLAYON 0xAF +/**Set GDDRAM Page Start Address. */ +#define SSD1306_SETSTARTPAGE 0XB0 +/** Set COM output scan direction normal. */ +#define SSD1306_COMSCANINC 0xC0 +/** Set COM output scan direction reversed. */ +#define SSD1306_COMSCANDEC 0xC8 +/** Set Display Offset. */ +#define SSD1306_SETDISPLAYOFFSET 0xD3 +/** Sets COM signals pin configuration to match the OLED panel layout. */ +#define SSD1306_SETCOMPINS 0xDA +/** This command adjusts the VCOMH regulator output. */ +#define SSD1306_SETVCOMDETECT 0xDB +/** Set Display Clock Divide Ratio/ Oscillator Frequency. */ +#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 +/** Set Pre-charge Period */ +#define SSD1306_SETPRECHARGE 0xD9 +/** No Operation Command. */ +#define SSD1306_NOP 0XE3 +//------------------------------------------------------------------------------ +/** Set Pump voltage value: (30H~33H) 6.4, 7.4, 8.0 (POR), 9.0. */ +#define SH1106_SET_PUMP_VOLTAGE 0X30 +/** First byte of set charge pump mode */ +#define SH1106_SET_PUMP_MODE 0XAD +/** Second byte charge pump on. */ +#define SH1106_PUMP_ON 0X8B +/** Second byte charge pump off. */ +#define SH1106_PUMP_OFF 0X8A +//------------------------------------------------------------------------------ +/** + * @struct DevType + * @brief Device initialization structure. + */ +struct DevType { + /** + * Pointer to initialization command bytes. + */ + const uint8_t* initcmds; + /** + * Number of initialization bytes. + */ + const uint8_t initSize; + /** + * Width of the diaplay in pixels. + */ + const uint8_t lcdWidth; + /** + * Height of the display in pixels. + */ + const uint8_t lcdHeight; + /** + * Column offset RAM to display. Used to pick start column of SH1106. + */ + const uint8_t colOffset; +}; +//------------------------------------------------------------------------------ +/** Initialization commands for a 64x48 Micro OLED display (by r7) */ +static const uint8_t MEM_TYPE MicroOLED64x48init[] = { + // Init sequence for 64x48 Micro OLED module + SSD1306_DISPLAYOFF, + SSD1306_SETDISPLAYCLOCKDIV, 0x80, // the suggested ratio 0x80 + SSD1306_SETMULTIPLEX, 0x2F, // + SSD1306_SETDISPLAYOFFSET,0x0, // no offset + SSD1306_SETSTARTLINE | 0x0, // line #0 + SSD1306_CHARGEPUMP, 0x14, // internal vcc + SSD1306_NORMALDISPLAY, + SSD1306_DISPLAYALLON_RESUME, + SSD1306_SEGREMAP | 0x1, // column 127 mapped to SEG0 + SSD1306_COMSCANDEC, // column scan direction reversed + SSD1306_SETCOMPINS, 0x12, // 0x12 if height > 32 else 0x02 + SSD1306_SETCONTRAST, 0x7F, // contrast level 127 + SSD1306_SETPRECHARGE, 0xF1, // pre-charge period (1, 15) + SSD1306_SETVCOMDETECT, 0x40, // vcomh regulator level + SSD1306_DISPLAYON +}; +/** Initialize a 64x48 Micro OLED display. */ +static const DevType MEM_TYPE MicroOLED64x48 = { + MicroOLED64x48init, + sizeof(MicroOLED64x48init), + 64, + 48, + 32 +}; +//------------------------------------------------------------------------------ +// this section is based on https://github.com/adafruit/Adafruit_SSD1306 +/** Initialization commands for a 128x32 SSD1306 oled display. */ +static const uint8_t MEM_TYPE Adafruit128x32init[] = { + // Init sequence for Adafruit 128x32 OLED module + SSD1306_DISPLAYOFF, + SSD1306_SETDISPLAYCLOCKDIV, 0x80, // the suggested ratio 0x80 + SSD1306_SETMULTIPLEX, 0x1F, // ratio 32 + SSD1306_SETDISPLAYOFFSET,0x0, // no offset + SSD1306_SETSTARTLINE | 0x0, // line #0 + SSD1306_CHARGEPUMP, 0x14, // internal vcc + SSD1306_MEMORYMODE, 0x02, // page mode + SSD1306_SEGREMAP | 0x1, // column 127 mapped to SEG0 + SSD1306_COMSCANDEC, // column scan direction reversed + SSD1306_SETCOMPINS, 0x02, // sequential COM pins, disable remap + SSD1306_SETCONTRAST, 0x7F, // contrast level 127 + SSD1306_SETPRECHARGE, 0xF1, // pre-charge period (1, 15) + SSD1306_SETVCOMDETECT, 0x40, // vcomh regulator level + SSD1306_DISPLAYALLON_RESUME, + SSD1306_NORMALDISPLAY, + SSD1306_DISPLAYON +}; +/** Initialize a 128x32 SSD1306 oled display. */ +static const DevType MEM_TYPE Adafruit128x32 = { + Adafruit128x32init, + sizeof(Adafruit128x32init), + 128, + 32, + 0 +}; +//------------------------------------------------------------------------------ +// This section is based on https://github.com/adafruit/Adafruit_SSD1306 +/** Initialization commands for a 128x64 SSD1306 oled display. */ +static const uint8_t MEM_TYPE Adafruit128x64init[] = { + // Init sequence for Adafruit 128x64 OLED module + SSD1306_DISPLAYOFF, + SSD1306_SETDISPLAYCLOCKDIV, 0x80, // the suggested ratio 0x80 + SSD1306_SETMULTIPLEX, 0x3F, // ratio 64 + SSD1306_SETDISPLAYOFFSET, 0x0, // no offset + SSD1306_SETSTARTLINE | 0x0, // line #0 + SSD1306_CHARGEPUMP, 0x14, // internal vcc + SSD1306_MEMORYMODE, 0x02, // page mode + SSD1306_SEGREMAP | 0x1, // column 127 mapped to SEG0 + SSD1306_COMSCANDEC, // column scan direction reversed + SSD1306_SETCOMPINS, 0x12, // alt COM pins, disable remap + SSD1306_SETCONTRAST, 0x7F, // contrast level 127 + SSD1306_SETPRECHARGE, 0xF1, // pre-charge period (1, 15) + SSD1306_SETVCOMDETECT, 0x40, // vcomh regulator level + SSD1306_DISPLAYALLON_RESUME, + SSD1306_NORMALDISPLAY, + SSD1306_DISPLAYON +}; +/** Initialize a 128x64 oled display. */ +static const DevType MEM_TYPE Adafruit128x64 = { + Adafruit128x64init, + sizeof(Adafruit128x64init), + 128, + 64, + 0 +}; +//------------------------------------------------------------------------------ +// This section is based on https://github.com/stanleyhuangyc/MultiLCD +/** Initialization commands for a 128x64 SH1106 oled display. */ +static const uint8_t MEM_TYPE SH1106_128x64init[] = { + SSD1306_DISPLAYOFF, + SSD1306_SETSTARTPAGE | 0X0, // set page address + SSD1306_SETCONTRAST, 0x80, // 128 + SSD1306_SEGREMAP | 0X1, // set segment remap + SSD1306_NORMALDISPLAY, // normal / reverse + SSD1306_SETMULTIPLEX, 0x3F, // ratio 64 + SH1106_SET_PUMP_MODE, SH1106_PUMP_ON, // set charge pump enable + SH1106_SET_PUMP_VOLTAGE | 0X2, // 8.0 volts + SSD1306_COMSCANDEC, // Com scan direction + SSD1306_SETDISPLAYOFFSET, 0X00, // set display offset + SSD1306_SETDISPLAYCLOCKDIV, 0X80, // set osc division + SSD1306_SETPRECHARGE, 0X1F, // set pre-charge period + SSD1306_SETCOMPINS, 0X12, // set COM pins + SSD1306_SETVCOMDETECT, 0x40, // set vcomh + SSD1306_DISPLAYON +}; +/** Initialize a 128x64 oled SH1106 display. */ +static const DevType MEM_TYPE SH1106_128x64 = { + SH1106_128x64init, + sizeof(SH1106_128x64init), + 128, + 64, + 2 // SH1106 is a 132x64 controller. Use middle 128 columns. +}; +#endif // SSD1306init_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Adafruit5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Adafruit5x7.h new file mode 100644 index 0000000..5950cf6 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Adafruit5x7.h @@ -0,0 +1,276 @@ +#ifndef glcdfont_h +#define glcdfont_h + +// standard ascii 5x7 font +// Restrict to 96 characters +#define ADAFRUIT_ASCII96 +GLCDFONTDECL(Adafruit5x7) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 0x05, // width + 0x07, // height +#ifdef ADAFRUIT_ASCII96 + 0x20, // first char + 0x60, // char count +#else // ADAFRUIT_ASCII96 + 0x00, // first char + 0xFE, // char count + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + 0x00, 0x18, 0x3C, 0x18, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + 0x00, 0x18, 0x24, 0x18, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + 0x30, 0x48, 0x3A, 0x06, 0x0E, + 0x26, 0x29, 0x79, 0x29, 0x26, + 0x40, 0x7F, 0x05, 0x05, 0x07, + 0x40, 0x7F, 0x05, 0x25, 0x3F, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + 0x14, 0x22, 0x7F, 0x22, 0x14, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + 0x06, 0x09, 0x7F, 0x01, 0x7F, + 0x00, 0x66, 0x89, 0x95, 0x6A, + 0x60, 0x60, 0x60, 0x60, 0x60, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + 0x08, 0x04, 0x7E, 0x04, 0x08, + 0x10, 0x20, 0x7E, 0x20, 0x10, + 0x08, 0x08, 0x2A, 0x1C, 0x08, + 0x08, 0x1C, 0x2A, 0x08, 0x08, + 0x1E, 0x10, 0x10, 0x10, 0x10, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + 0x30, 0x38, 0x3E, 0x38, 0x30, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, +#endif // ADAFRUIT_ASCII96 + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, + 0x23, 0x13, 0x08, 0x64, 0x62, + 0x36, 0x49, 0x56, 0x20, 0x50, + 0x00, 0x08, 0x07, 0x03, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + 0x08, 0x08, 0x3E, 0x08, 0x08, + 0x00, 0x80, 0x70, 0x30, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x60, 0x60, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3E, 0x51, 0x49, 0x45, 0x3E, + 0x00, 0x42, 0x7F, 0x40, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, + 0x21, 0x41, 0x49, 0x4D, 0x33, + 0x18, 0x14, 0x12, 0x7F, 0x10, + 0x27, 0x45, 0x45, 0x45, 0x39, + 0x3C, 0x4A, 0x49, 0x49, 0x31, + 0x41, 0x21, 0x11, 0x09, 0x07, + 0x36, 0x49, 0x49, 0x49, 0x36, + 0x46, 0x49, 0x49, 0x29, 0x1E, + 0x00, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x00, 0x41, 0x22, 0x14, 0x08, + 0x02, 0x01, 0x59, 0x09, 0x06, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + 0x7C, 0x12, 0x11, 0x12, 0x7C, + 0x7F, 0x49, 0x49, 0x49, 0x36, + 0x3E, 0x41, 0x41, 0x41, 0x22, + 0x7F, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x49, 0x49, 0x49, 0x41, + 0x7F, 0x09, 0x09, 0x09, 0x01, + 0x3E, 0x41, 0x41, 0x51, 0x73, + 0x7F, 0x08, 0x08, 0x08, 0x7F, + 0x00, 0x41, 0x7F, 0x41, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, + 0x7F, 0x08, 0x14, 0x22, 0x41, + 0x7F, 0x40, 0x40, 0x40, 0x40, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + 0x7F, 0x04, 0x08, 0x10, 0x7F, + 0x3E, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x09, 0x09, 0x09, 0x06, + 0x3E, 0x41, 0x51, 0x21, 0x5E, + 0x7F, 0x09, 0x19, 0x29, 0x46, + 0x26, 0x49, 0x49, 0x49, 0x32, + 0x03, 0x01, 0x7F, 0x01, 0x03, + 0x3F, 0x40, 0x40, 0x40, 0x3F, + 0x1F, 0x20, 0x40, 0x20, 0x1F, + 0x3F, 0x40, 0x38, 0x40, 0x3F, + 0x63, 0x14, 0x08, 0x14, 0x63, + 0x03, 0x04, 0x78, 0x04, 0x03, + 0x61, 0x59, 0x49, 0x4D, 0x43, + 0x00, 0x7F, 0x41, 0x41, 0x41, + 0x02, 0x04, 0x08, 0x10, 0x20, + 0x00, 0x41, 0x41, 0x41, 0x7F, + 0x04, 0x02, 0x01, 0x02, 0x04, + 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x03, 0x07, 0x08, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, + 0x7F, 0x28, 0x44, 0x44, 0x38, + 0x38, 0x44, 0x44, 0x44, 0x28, + 0x38, 0x44, 0x44, 0x28, 0x7F, + 0x38, 0x54, 0x54, 0x54, 0x18, + 0x00, 0x08, 0x7E, 0x09, 0x02, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + 0x7F, 0x08, 0x04, 0x04, 0x78, + 0x00, 0x44, 0x7D, 0x40, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, + 0x7C, 0x08, 0x04, 0x04, 0x78, + 0x38, 0x44, 0x44, 0x44, 0x38, + 0xFC, 0x18, 0x24, 0x24, 0x18, + 0x18, 0x24, 0x24, 0x18, 0xFC, + 0x7C, 0x08, 0x04, 0x04, 0x08, + 0x48, 0x54, 0x54, 0x54, 0x24, + 0x04, 0x04, 0x3F, 0x44, 0x24, + 0x3C, 0x40, 0x40, 0x20, 0x7C, + 0x1C, 0x20, 0x40, 0x20, 0x1C, + 0x3C, 0x40, 0x30, 0x40, 0x3C, + 0x44, 0x28, 0x10, 0x28, 0x44, + 0x4C, 0x90, 0x90, 0x90, 0x7C, + 0x44, 0x64, 0x54, 0x4C, 0x44, + 0x00, 0x08, 0x36, 0x41, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, + 0x3C, 0x26, 0x23, 0x26, 0x3C, +#ifndef ADAFRUIT_ASCII96 + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + 0x3A, 0x40, 0x40, 0x20, 0x7A, + 0x38, 0x54, 0x54, 0x55, 0x59, + 0x21, 0x55, 0x55, 0x79, 0x41, + 0x21, 0x54, 0x54, 0x78, 0x41, + 0x21, 0x55, 0x54, 0x78, 0x40, + 0x20, 0x54, 0x55, 0x79, 0x40, + 0x0C, 0x1E, 0x52, 0x72, 0x12, + 0x39, 0x55, 0x55, 0x55, 0x59, + 0x39, 0x54, 0x54, 0x54, 0x59, + 0x39, 0x55, 0x54, 0x54, 0x58, + 0x00, 0x00, 0x45, 0x7C, 0x41, + 0x00, 0x02, 0x45, 0x7D, 0x42, + 0x00, 0x01, 0x45, 0x7C, 0x40, + 0xF0, 0x29, 0x24, 0x29, 0xF0, + 0xF0, 0x28, 0x25, 0x28, 0xF0, + 0x7C, 0x54, 0x55, 0x45, 0x00, + 0x20, 0x54, 0x54, 0x7C, 0x54, + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + 0x32, 0x49, 0x49, 0x49, 0x32, + 0x32, 0x48, 0x48, 0x48, 0x32, + 0x32, 0x4A, 0x48, 0x48, 0x30, + 0x3A, 0x41, 0x41, 0x21, 0x7A, + 0x3A, 0x42, 0x40, 0x20, 0x78, + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + 0x39, 0x44, 0x44, 0x44, 0x39, + 0x3D, 0x40, 0x40, 0x40, 0x3D, + 0x3C, 0x24, 0xFF, 0x24, 0x24, + 0x48, 0x7E, 0x49, 0x43, 0x66, + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + 0xFF, 0x09, 0x29, 0xF6, 0x20, + 0xC0, 0x88, 0x7E, 0x09, 0x03, + 0x20, 0x54, 0x54, 0x79, 0x41, + 0x00, 0x00, 0x44, 0x7D, 0x41, + 0x30, 0x48, 0x48, 0x4A, 0x32, + 0x38, 0x40, 0x40, 0x22, 0x7A, + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + 0x26, 0x29, 0x29, 0x2F, 0x28, + 0x26, 0x29, 0x29, 0x29, 0x26, + 0x30, 0x48, 0x4D, 0x40, 0x20, + 0x38, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x38, + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + 0x2F, 0x10, 0x28, 0x34, 0xFA, + 0x00, 0x00, 0x7B, 0x00, 0x00, + 0x08, 0x14, 0x2A, 0x14, 0x22, + 0x22, 0x14, 0x2A, 0x14, 0x08, + 0xAA, 0x00, 0x55, 0x00, 0xAA, + 0xAA, 0x55, 0xAA, 0x55, 0xAA, + 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x10, 0x10, 0x10, 0xFF, 0x00, + 0x14, 0x14, 0x14, 0xFF, 0x00, + 0x10, 0x10, 0xFF, 0x00, 0xFF, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x14, 0x14, 0x14, 0xFC, 0x00, + 0x14, 0x14, 0xF7, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x14, 0x14, 0xF4, 0x04, 0xFC, + 0x14, 0x14, 0x17, 0x10, 0x1F, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0x1F, 0x00, + 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0xF0, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0xFF, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x14, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0x10, 0x17, + 0x00, 0x00, 0xFC, 0x04, 0xF4, + 0x14, 0x14, 0x17, 0x10, 0x17, + 0x14, 0x14, 0xF4, 0x04, 0xF4, + 0x00, 0x00, 0xFF, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xF7, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x17, 0x14, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0xF4, 0x14, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x00, 0x00, 0x1F, 0x10, 0x1F, + 0x00, 0x00, 0x00, 0x1F, 0x14, + 0x00, 0x00, 0x00, 0xFC, 0x14, + 0x00, 0x00, 0xF0, 0x10, 0xF0, + 0x10, 0x10, 0xFF, 0x10, 0xFF, + 0x14, 0x14, 0x14, 0xFF, 0x14, + 0x10, 0x10, 0x10, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x38, 0x44, 0x44, 0x38, 0x44, + 0x7C, 0x2A, 0x2A, 0x3E, 0x14, + 0x7E, 0x02, 0x02, 0x06, 0x06, + 0x02, 0x7E, 0x02, 0x7E, 0x02, + 0x63, 0x55, 0x49, 0x41, 0x63, + 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x40, 0x7E, 0x20, 0x1E, 0x20, + 0x06, 0x02, 0x7E, 0x02, 0x02, + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + 0x4C, 0x72, 0x01, 0x72, 0x4C, + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + 0x30, 0x48, 0x78, 0x48, 0x30, + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + 0x3E, 0x49, 0x49, 0x49, 0x00, + 0x7E, 0x01, 0x01, 0x01, 0x7E, + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + 0x44, 0x44, 0x5F, 0x44, 0x44, + 0x40, 0x51, 0x4A, 0x44, 0x40, + 0x40, 0x44, 0x4A, 0x51, 0x40, + 0x00, 0x00, 0xFF, 0x01, 0x03, + 0xE0, 0x80, 0xFF, 0x00, 0x00, + 0x08, 0x08, 0x6B, 0x6B, 0x08, + 0x36, 0x12, 0x36, 0x24, 0x36, + 0x06, 0x0F, 0x09, 0x0F, 0x06, + 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, + 0x30, 0x40, 0xFF, 0x01, 0x01, + 0x00, 0x1F, 0x01, 0x01, 0x1E, + 0x00, 0x19, 0x1D, 0x17, 0x12, + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, +// 0x00, 0x00, 0x00, 0x00, 0x00, +#endif // ADAFRUIT_ASCII96 +}; +#endif // glcdfont_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial14.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial14.h new file mode 100644 index 0000000..2c93dc1 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial14.h @@ -0,0 +1,168 @@ +/* + * + * Arial_14 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Arial14.h + * Date : 02.05.2008 + * Font size in bytes : 7788 + * Font width : 13 + * Font height : 14 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef ARIAL_14_H +#define ARIAL_14_H + +#define ARIAL_14_WIDTH 13 +#define ARIAL_14_HEIGHT 14 + +/* + * added for backward compability + */ + +#define Arial_14 Arial14 + +GLCDFONTDECL(Arial14) = { + 0x1E, 0x6C, // size + 0x0D, // width + 0x0E, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x03, 0x08, 0x07, 0x0A, 0x08, 0x01, 0x03, 0x03, + 0x05, 0x07, 0x01, 0x04, 0x01, 0x04, 0x06, 0x03, 0x06, 0x06, + 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x01, 0x06, 0x06, + 0x06, 0x06, 0x0D, 0x09, 0x07, 0x08, 0x08, 0x07, 0x07, 0x09, + 0x07, 0x01, 0x05, 0x08, 0x07, 0x09, 0x07, 0x09, 0x07, 0x09, + 0x08, 0x07, 0x07, 0x07, 0x09, 0x0D, 0x08, 0x09, 0x08, 0x02, + 0x04, 0x02, 0x05, 0x08, 0x02, 0x06, 0x06, 0x05, 0x06, 0x06, + 0x04, 0x06, 0x06, 0x01, 0x02, 0x06, 0x01, 0x09, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x05, 0x04, 0x06, 0x07, 0x09, 0x06, 0x07, + 0x06, 0x03, 0x01, 0x03, 0x07, 0x07, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x14, // 33 + 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, // 34 + 0x90, 0x90, 0xF8, 0x96, 0x90, 0xF8, 0x96, 0x90, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 35 + 0x18, 0x24, 0x22, 0xFF, 0x42, 0x42, 0x84, 0x08, 0x10, 0x10, 0x3C, 0x10, 0x08, 0x04, // 36 + 0x1C, 0x22, 0x22, 0x1C, 0xC0, 0x30, 0x8C, 0x42, 0x40, 0x80, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, 0x10, 0x0C, // 37 + 0x80, 0x5C, 0x22, 0x62, 0x92, 0x0C, 0x80, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x08, 0x10, // 38 + 0x1E, 0x00, // 39 + 0xF0, 0x0C, 0x02, 0x1C, 0x60, 0x80, // 40 + 0x02, 0x0C, 0xF0, 0x80, 0x60, 0x1C, // 41 + 0x04, 0x14, 0x0E, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0xF8, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, // 43 + 0x00, 0x70, // 44 + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x10, // 46 + 0x00, 0xC0, 0x38, 0x06, 0x18, 0x04, 0x00, 0x00, // 47 + 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 48 + 0x08, 0x04, 0xFE, 0x00, 0x00, 0x1C, // 49 + 0x0C, 0x02, 0x02, 0x82, 0x42, 0x3C, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 50 + 0x0C, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 51 + 0x80, 0x40, 0x30, 0x08, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x04, // 52 + 0x38, 0x16, 0x12, 0x12, 0x12, 0xE2, 0x0C, 0x10, 0x10, 0x10, 0x18, 0x04, // 53 + 0xF8, 0x44, 0x22, 0x22, 0x22, 0xC4, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 54 + 0x02, 0x02, 0x02, 0xE2, 0x1A, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 55 + 0xDC, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 56 + 0x3C, 0x42, 0x42, 0x42, 0x22, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 57 + 0x08, 0x10, // 58 + 0x08, 0x70, // 59 + 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, // 60 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x08, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, // 62 + 0x0C, 0x02, 0x82, 0x42, 0x22, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x18, 0x04, 0xC4, 0x22, 0x12, 0x12, 0x12, 0xA2, 0x72, 0x04, 0x08, 0xF0, 0x0C, 0x30, 0x40, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x9C, 0x90, 0x50, 0x4C, 0x20, // 64 + 0x00, 0x80, 0xE0, 0x9C, 0x82, 0x9C, 0xE0, 0x80, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, // 65 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 66 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 67 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 68 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 69 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x42, 0x42, 0x44, 0xC8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 71 + 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, // 72 + 0xFE, 0x1C, // 73 + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x0C, // 74 + 0xFE, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 75 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 76 + 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0xC0, 0x30, 0x0C, 0xFE, 0x1C, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x1C, // 77 + 0xFE, 0x04, 0x18, 0x60, 0x80, 0x00, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x08, 0x1C, // 78 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 79 + 0xFE, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x14, 0x08, 0x1C, 0x10, // 81 + 0xFE, 0x42, 0x42, 0x42, 0xC2, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 82 + 0x1C, 0x22, 0x22, 0x22, 0x42, 0x42, 0x8C, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 83 + 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 84 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 85 + 0x06, 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, // 86 + 0x06, 0x38, 0xC0, 0x00, 0xC0, 0x3C, 0x02, 0x3C, 0xC0, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 87 + 0x02, 0x0C, 0x90, 0x60, 0x60, 0x90, 0x0C, 0x02, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x10, // 88 + 0x02, 0x04, 0x18, 0x20, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x02, 0x82, 0x42, 0x22, 0x1A, 0x06, 0x02, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, // 90 + 0xFE, 0x02, 0xFC, 0x80, // 91 + 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x18, // 92 + 0x02, 0xFE, 0x80, 0xFC, // 93 + 0x20, 0x1C, 0x02, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x04, 0x00, 0x00, // 96 + 0x10, 0x88, 0x48, 0x48, 0x48, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 97 + 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x08, 0x10, 0x10, 0x10, 0x0C, // 98 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0x0C, 0x10, 0x10, 0x10, 0x08, // 99 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 100 + 0xF0, 0x48, 0x48, 0x48, 0x48, 0x70, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x08, // 101 + 0x08, 0xFC, 0x0A, 0x0A, 0x00, 0x1C, 0x00, 0x00, // 102 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x7C, // 103 + 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 104 + 0xFA, 0x1C, // 105 + 0x00, 0xFA, 0x80, 0x7C, // 106 + 0xFE, 0x80, 0x40, 0xA0, 0x10, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x10, // 107 + 0xFE, 0x1C, // 108 + 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x10, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 109 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 110 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 111 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x0C, // 112 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0xFC, // 113 + 0xF8, 0x10, 0x08, 0x08, 0x1C, 0x00, 0x00, 0x00, // 114 + 0x30, 0x48, 0x48, 0x48, 0x90, 0x08, 0x10, 0x10, 0x10, 0x0C, // 115 + 0x08, 0xFE, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x10, // 116 + 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 117 + 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 118 + 0x18, 0xE0, 0x00, 0xE0, 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x04, 0x18, 0x04, 0x00, 0x04, 0x18, 0x04, 0x00, // 119 + 0x08, 0x30, 0xC0, 0xC0, 0x30, 0x08, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, // 120 + 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x80, 0x8C, 0x70, 0x0C, 0x00, 0x00, // 121 + 0x08, 0x08, 0x88, 0x68, 0x18, 0x08, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 122 + 0x80, 0x7C, 0x02, 0x00, 0x7C, 0x80, // 123 + 0xFE, 0xFC, // 124 + 0x02, 0x7C, 0x80, 0x80, 0x7C, 0x00, // 125 + 0x40, 0x20, 0x20, 0x60, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1C // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial_bold_14.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial_bold_14.h new file mode 100644 index 0000000..aa0a009 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Arial_bold_14.h @@ -0,0 +1,162 @@ +/* + * + * Arial Bold 14 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : arial_bold_14 + * Date : 29.01.2005 + * Font size in bytes : 8712 + * Font width : 10 + * Font height : 14 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef ARIAL_BOLD_14_H +#define ARIAL_BOLD_14_H + +#define ARIAL_BOLD_14_WIDTH 13 +#define ARIAL_BOLD_14_HEIGHT 14 + +GLCDFONTDECL(Arial_bold_14) = { + 0x22, 0x08, // size + 0x0D, // width + 0x0E, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x04, 0x02, 0x05, 0x06, 0x07, 0x08, 0x09, 0x02, 0x03, 0x03, + 0x05, 0x08, 0x02, 0x04, 0x02, 0x04, 0x07, 0x04, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x02, 0x07, 0x07, + 0x07, 0x08, 0x0E, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x09, + 0x08, 0x02, 0x07, 0x08, 0x07, 0x0B, 0x08, 0x09, 0x07, 0x09, + 0x09, 0x07, 0x08, 0x08, 0x09, 0x0D, 0x07, 0x08, 0x08, 0x04, + 0x04, 0x04, 0x06, 0x08, 0x03, 0x07, 0x07, 0x06, 0x07, 0x07, + 0x05, 0x07, 0x07, 0x02, 0x03, 0x06, 0x02, 0x0A, 0x07, 0x07, + 0x07, 0x07, 0x05, 0x06, 0x05, 0x07, 0x07, 0x0B, 0x06, 0x07, + 0x05, 0x05, 0x01, 0x05, 0x07, 0x08, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0xFE, 0xFE, 0x18, 0x18, // 33 + 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x90, 0xF8, 0x9E, 0x90, 0xF8, 0x9E, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, // 35 + 0x18, 0x3C, 0x26, 0xFF, 0x66, 0xCC, 0x88, 0x04, 0x0C, 0x18, 0x3C, 0x18, 0x0C, 0x04, // 36 + 0x1C, 0x22, 0x1C, 0xC0, 0x30, 0x8E, 0x40, 0x80, 0x00, 0x00, 0x18, 0x04, 0x00, 0x0C, 0x10, 0x0C, // 37 + 0x80, 0xCC, 0x7E, 0x72, 0xF2, 0xDE, 0x0C, 0x80, 0x00, 0x0C, 0x1C, 0x10, 0x10, 0x10, 0x1C, 0x0C, 0x1C, 0x10, // 38 + 0x1E, 0x1E, 0x00, 0x00, // 39 + 0xF0, 0xFC, 0x06, 0x1C, 0x7C, 0xC0, // 40 + 0x06, 0xFC, 0xF0, 0xC0, 0x7C, 0x1C, // 41 + 0x14, 0x14, 0x0E, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x60, 0x60, 0x60, 0xFC, 0xFC, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x58, 0x38, // 44 + 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x18, 0x18, // 46 + 0x00, 0xC0, 0x38, 0x06, 0x18, 0x04, 0x00, 0x00, // 47 + 0xF8, 0xFC, 0x0E, 0x06, 0x0E, 0xFC, 0xF8, 0x04, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0x04, // 48 + 0x18, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x1C, 0x1C, // 49 + 0x18, 0x1C, 0x86, 0xC6, 0x66, 0x3E, 0x1C, 0x18, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, // 50 + 0x88, 0x8C, 0x06, 0x26, 0x26, 0xFE, 0xDC, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x0C, 0x04, // 51 + 0xC0, 0xE0, 0xB8, 0x8C, 0xFE, 0xFE, 0x80, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x1C, 0x04, // 52 + 0x70, 0x7E, 0x3E, 0x36, 0x36, 0xF6, 0xC6, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x0C, 0x04, // 53 + 0xF8, 0xFC, 0x6E, 0x66, 0x66, 0xEE, 0xCC, 0x04, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 54 + 0x06, 0x06, 0x06, 0xE6, 0x76, 0x1E, 0x06, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 55 + 0x9C, 0xFE, 0x66, 0x66, 0x66, 0xFE, 0x9C, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 56 + 0x3C, 0x7E, 0x66, 0x66, 0x66, 0xFC, 0xF8, 0x0C, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 57 + 0x18, 0x18, 0x18, 0x18, // 58 + 0x18, 0x18, 0x58, 0x38, // 59 + 0x60, 0x60, 0xF0, 0xF0, 0x98, 0x98, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0C, // 60 + 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x0C, 0x98, 0x98, 0xF0, 0xF0, 0x60, 0x60, 0x0C, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, // 62 + 0x08, 0x0C, 0x06, 0xC6, 0xE6, 0x76, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x30, 0x08, 0xC4, 0xF6, 0x3A, 0x1A, 0x1A, 0xF2, 0xFA, 0x7E, 0x04, 0x08, 0xF0, 0x0C, 0x30, 0x60, 0x4C, 0x9C, 0x98, 0x98, 0x8C, 0x9C, 0x9C, 0x90, 0x48, 0x4C, 0x20, // 64 + 0x00, 0xC0, 0xF8, 0xBE, 0x86, 0xBE, 0xF8, 0xC0, 0x00, 0x18, 0x1C, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x18, // 65 + 0xFE, 0xFE, 0x66, 0x66, 0x66, 0x66, 0xFE, 0xDC, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 66 + 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0x9C, 0x08, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 67 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 68 + 0xFE, 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, // 69 + 0xFE, 0xFE, 0x66, 0x66, 0x66, 0x66, 0x06, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0xC6, 0xCE, 0xDC, 0xC8, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x04, // 71 + 0xFE, 0xFE, 0x60, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, // 72 + 0xFE, 0xFE, 0x1C, 0x1C, // 73 + 0x80, 0x80, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 74 + 0xFE, 0xFE, 0x60, 0x30, 0x78, 0xEC, 0x86, 0x02, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x1C, 0x18, // 75 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, // 76 + 0xFE, 0xFE, 0x0E, 0x7C, 0xE0, 0x00, 0xE0, 0x7C, 0x0E, 0xFE, 0xFE, 0x1C, 0x1C, 0x00, 0x00, 0x0C, 0x1C, 0x0C, 0x00, 0x00, 0x1C, 0x1C, // 77 + 0xFE, 0xFE, 0x1C, 0x78, 0xE0, 0x80, 0xFE, 0xFE, 0x1C, 0x1C, 0x00, 0x00, 0x04, 0x0C, 0x1C, 0x1C, // 78 + 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 79 + 0xFE, 0xFE, 0x66, 0x66, 0x66, 0x7E, 0x3C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF8, 0xFC, 0x0E, 0x06, 0x86, 0x06, 0x0E, 0xFC, 0xF8, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x1C, 0x24, // 81 + 0xFE, 0xFE, 0x66, 0x66, 0xE6, 0xE6, 0xBE, 0x1C, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x18, 0x10, // 82 + 0x3C, 0x7E, 0x66, 0x66, 0x66, 0xEE, 0xCC, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 83 + 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 84 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x04, 0x0C, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 85 + 0x02, 0x1E, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 86 + 0x06, 0xFE, 0xF8, 0x00, 0xF0, 0xFE, 0x0E, 0xFE, 0xF0, 0x00, 0xF8, 0xFE, 0x06, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, // 87 + 0x06, 0x0E, 0xF8, 0xF0, 0xF8, 0x0E, 0x06, 0x18, 0x1C, 0x04, 0x00, 0x04, 0x1C, 0x18, // 88 + 0x06, 0x0E, 0x38, 0xF0, 0xF0, 0x38, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 89 + 0x06, 0x06, 0x86, 0xE6, 0x76, 0x1E, 0x0E, 0x06, 0x18, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, // 90 + 0xFE, 0xFE, 0x06, 0x06, 0xFC, 0xFC, 0xC0, 0xC0, // 91 + 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x18, // 92 + 0x06, 0x06, 0xFE, 0xFE, 0xC0, 0xC0, 0xFC, 0xFC, // 93 + 0x20, 0x38, 0x0E, 0x0E, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x06, 0x04, 0x00, 0x00, 0x00, // 96 + 0x10, 0x98, 0xD8, 0x58, 0xF8, 0xF0, 0x00, 0x0C, 0x1C, 0x18, 0x18, 0x0C, 0x1C, 0x10, // 97 + 0xFE, 0xFE, 0x30, 0x18, 0x38, 0xF0, 0xE0, 0x1C, 0x1C, 0x0C, 0x18, 0x1C, 0x0C, 0x04, // 98 + 0xE0, 0xF0, 0x18, 0x18, 0x38, 0x30, 0x04, 0x0C, 0x18, 0x18, 0x1C, 0x0C, // 99 + 0xE0, 0xF0, 0x38, 0x18, 0x30, 0xFE, 0xFE, 0x04, 0x0C, 0x1C, 0x18, 0x0C, 0x1C, 0x1C, // 100 + 0xE0, 0xF0, 0xD8, 0xD8, 0xD8, 0xF0, 0xE0, 0x04, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x08, // 101 + 0x18, 0xFC, 0xFE, 0x1A, 0x1A, 0x00, 0x1C, 0x1C, 0x00, 0x00, // 102 + 0xE0, 0xF0, 0x38, 0x18, 0x30, 0xF8, 0xF8, 0x64, 0xEC, 0xDC, 0xD8, 0xCC, 0xFC, 0x7C, // 103 + 0xFE, 0xFE, 0x30, 0x18, 0x18, 0xF8, 0xF0, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x1C, // 104 + 0xFA, 0xFA, 0x1C, 0x1C, // 105 + 0x00, 0xFA, 0xFA, 0xC0, 0xFC, 0x7C, // 106 + 0xFE, 0xFE, 0xE0, 0xF0, 0x98, 0x08, 0x1C, 0x1C, 0x00, 0x04, 0x1C, 0x18, // 107 + 0xFE, 0xFE, 0x1C, 0x1C, // 108 + 0xF8, 0xF8, 0x10, 0x18, 0xF8, 0xF0, 0x18, 0x18, 0xF8, 0xF0, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, // 109 + 0xF8, 0xF8, 0x30, 0x18, 0x18, 0xF8, 0xF0, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x1C, // 110 + 0xE0, 0xF0, 0x38, 0x18, 0x38, 0xF0, 0xE0, 0x04, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0x04, // 111 + 0xF8, 0xF8, 0x30, 0x18, 0x38, 0xF0, 0xE0, 0xFC, 0xFC, 0x0C, 0x18, 0x1C, 0x0C, 0x04, // 112 + 0xE0, 0xF0, 0x38, 0x18, 0x30, 0xF8, 0xF8, 0x04, 0x0C, 0x1C, 0x18, 0x0C, 0xFC, 0xFC, // 113 + 0xF8, 0xF8, 0x30, 0x18, 0x18, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 114 + 0x70, 0xF8, 0xD8, 0xD8, 0xD8, 0x90, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, // 115 + 0x18, 0xFC, 0xFE, 0x18, 0x18, 0x00, 0x0C, 0x1C, 0x18, 0x18, // 116 + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x0C, 0x1C, 0x18, 0x18, 0x0C, 0x1C, 0x1C, // 117 + 0x38, 0xF8, 0xC0, 0x00, 0xC0, 0xF8, 0x38, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, // 118 + 0x18, 0xF8, 0xE0, 0x00, 0xF0, 0x38, 0xF0, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x1C, 0x1C, 0x0C, 0x00, 0x0C, 0x1C, 0x1C, 0x00, 0x00, // 119 + 0x18, 0x38, 0xE0, 0xE0, 0x38, 0x18, 0x18, 0x1C, 0x04, 0x04, 0x1C, 0x18, // 120 + 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x84, 0xFC, 0xF8, 0x3C, 0x04, 0x00, // 121 + 0x18, 0x98, 0xD8, 0x78, 0x38, 0x1C, 0x1C, 0x18, 0x18, 0x18, // 122 + 0x80, 0xFC, 0x7E, 0x06, 0x06, 0x00, 0x7C, 0xFC, 0xC0, 0xC0, // 123 + 0xFE, 0xFC, // 124 + 0x06, 0x06, 0x7E, 0xFC, 0x80, 0xC0, 0xC0, 0xFC, 0x7C, 0x00, // 125 + 0x60, 0x30, 0x30, 0x70, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1C // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalBlk36.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalBlk36.h new file mode 100644 index 0000000..cc328a9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalBlk36.h @@ -0,0 +1,184 @@ +/* + * + * CalBlk36 Font + * + * + * Copyright (C) 2010 by Integrated Mapping Ltd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : CalBlk36.h + * Date : 19.05.2011 + * Font size in bytes : 65586 + * Font width : 10 + * Font height : 36 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef CalBlk36_H +#define CalBlk32_H + +#define CalBlk36_WIDTH 28 +#define CalBlk36_HEIGHT 36 + +GLCDFONTDECL(CalBlk36) = { + 0x00, 0x32, // size + 0x1C, // width + 0x24, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x08, 0x08, 0x10, 0x16, 0x16, 0x20, 0x1B, 0x08, 0x0A, 0x0A, + 0x0E, 0x13, 0x08, 0x0A, 0x08, 0x0A, 0x15, 0x0F, 0x15, 0x14, + 0x16, 0x15, 0x15, 0x14, 0x14, 0x15, 0x08, 0x08, 0x14, 0x13, + 0x14, 0x14, 0x1B, 0x1C, 0x17, 0x18, 0x17, 0x15, 0x13, 0x1A, + 0x18, 0x08, 0x14, 0x1B, 0x14, 0x1D, 0x18, 0x1A, 0x15, 0x1B, + 0x19, 0x17, 0x18, 0x18, 0x1C, 0x24, 0x1C, 0x1C, 0x18, 0x0B, + 0x0A, 0x0B, 0x13, 0x12, 0x08, 0x16, 0x15, 0x15, 0x15, 0x16, + 0x0E, 0x15, 0x14, 0x08, 0x0A, 0x16, 0x08, 0x20, 0x14, 0x16, + 0x15, 0x15, 0x0E, 0x14, 0x0E, 0x14, 0x16, 0x22, 0x16, 0x16, + 0x12, 0x0E, 0x04, 0x0E, 0x14, 0x00, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC0, 0xC7, 0xCF, 0xCF, 0xCF, 0xCF, 0xC7, 0xC0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0x1F, 0x3E, 0x3E, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3E, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3E, 0x3E, 0x3E, 0x3E, 0x3C, 0x00, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7C, 0xFF, 0xFF, 0x7C, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xFF, 0xFF, 0xF0, 0xF0, 0xF1, 0xE1, 0xE1, 0xC1, 0xC1, 0x81, 0x00, 0x00, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE1, 0x81, 0x83, 0xFF, 0xFF, 0x87, 0x87, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0xFF, 0xFF, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xC0, 0xF0, 0xF8, 0xFC, 0x7C, 0x1C, 0x1C, 0x1C, 0x7C, 0xFC, 0xF8, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x7F, 0x7C, 0x70, 0x70, 0x70, 0x7C, 0x7F, 0x3F, 0x3F, 0x07, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0xFF, 0x1F, 0x07, 0x07, 0x07, 0x1F, 0xFF, 0xFE, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1C, 0x1F, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x3C, 0x3C, 0x3C, 0x7C, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC7, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFC, 0xFC, 0xFE, 0xBF, 0x1F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x83, 0x03, 0x03, 0x07, 0x0F, 0x9F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x80, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x38, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0x7C, 0x1C, 0xC0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x70, 0xF0, 0xF0, 0xF0, 0xE0, // 40 + 0x0C, 0x7C, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, // 41 + 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0xDC, 0xFC, 0xFC, 0xDC, 0xC0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x19, 0x3D, 0x3F, 0x1F, 0x07, 0x0F, 0x3F, 0x3D, 0x3D, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0x8F, 0x8F, 0xEF, 0xFF, 0xFF, 0xFF, 0x1F, 0x30, 0x70, 0x70, 0x30, 0x30, 0x10, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFC, 0xFC, 0x0C, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0xC0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xC7, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x7C, 0x3C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0xF0, 0xF0, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x8F, 0x87, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x80, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0x7F, 0x1F, 0x0F, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7D, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x78, 0x78, 0x78, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0xE1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1E, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x3C, 0x3C, 0x3C, 0x7C, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x78, 0x78, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x3C, 0x3C, 0x3C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x03, 0x0F, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xF0, 0xF0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x0F, 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x3C, 0x3C, 0x7C, 0x7C, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xC0, 0xC1, 0xC3, 0xC3, 0xC7, 0xC7, 0xC7, 0x87, 0x07, 0x07, 0x07, 0x83, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x0F, 0x8F, 0x8F, 0xEF, 0xFF, 0xFF, 0xFF, 0x1F, 0x10, 0x70, 0x70, 0x30, 0x30, 0x10, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0x3E, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7E, 0x7E, 0x7E, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7E, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0x7E, 0x7E, 0x3E, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x81, 0xC0, 0xE0, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x18, 0x1C, 0x9C, 0x9C, 0x8C, 0x0C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x0F, 0x03, 0xC0, 0xF0, 0xFC, 0xFE, 0x3F, 0x0F, 0x07, 0x03, 0x03, 0x07, 0xDE, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFE, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0x80, 0xC0, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1C, 0x38, 0x71, 0x71, 0x63, 0xE3, 0xE3, 0xE3, 0xE1, 0xE0, 0xE1, 0xE3, 0xE3, 0x63, 0x73, 0x71, 0x39, 0x38, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x03, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xFC, 0xFC, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x9F, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE1, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE0, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x87, 0x87, 0xC7, 0xC7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x0F, 0x07, 0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF0, 0xE0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0xC0, 0xC0, 0xCC, 0xDC, 0xFC, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF3, 0xF3, 0xF3, 0xE3, 0xE3, 0xC3, 0x83, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xE1, 0xC1, 0x81, 0x83, 0x83, 0x83, 0x87, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x04, 0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x0C, 0x00, 0x00, 0x01, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x01, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x04, 0x1C, 0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x04, 0x0C, 0x3C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, // 91 + 0x0C, 0xFC, 0xFC, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, // 93 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0x1F, 0x07, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x04, 0x0C, 0x1C, 0x3C, 0x7C, 0x7C, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x78, 0x7C, 0x7C, 0x7E, 0x7E, 0x3E, 0x1E, 0x1E, 0x1E, 0x1E, 0x3E, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0x1E, 0x0E, 0x0E, 0x0F, 0x8F, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7C, 0x7C, 0x3E, 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0x7E, 0x7E, 0x3E, 0x3E, 0x3E, 0x7E, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xC0, 0x80, 0x80, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x80, 0xE0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFE, 0xFE, 0x7E, 0x3E, 0x3E, 0x7C, 0x7C, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0x3E, 0x3E, 0x1E, 0x1E, 0x1E, 0x3E, 0xFE, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x0E, 0x0E, 0x0E, 0x0E, 0x8E, 0x8E, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x0F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0x7E, 0x3E, 0x3E, 0x3C, 0x7C, 0xF8, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xE1, 0xE3, 0xE3, 0xE7, 0xE7, 0xE7, 0xC7, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x10, 0x30, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x10, 0x00, 0x00, // 103 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x78, 0x7C, 0x7C, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x30, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x30, 0x10, 0x00, // 106 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF8, 0x78, 0x7C, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF0, 0xF0, 0xF8, 0x7C, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF0, 0x78, 0x7C, 0x7C, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0x7E, 0x3E, 0x3E, 0x3E, 0x3E, 0x7E, 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF8, 0x7C, 0x3C, 0x3E, 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0x7E, 0x3E, 0x3E, 0x3C, 0x7C, 0xF8, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF8, 0xFC, 0x7E, 0x7E, 0x3E, 0x3E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0x9F, 0x9F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3E, 0x3C, 0x3C, 0x38, 0x20, 0x00, 0xC0, 0xC1, 0xC3, 0xC7, 0xCF, 0xCF, 0xCF, 0x8F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0x60, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x03, 0x03, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xF0, 0xC0, 0xC0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE, 0xFE, 0x7E, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC1, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0xBE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, 0x3E, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0x9F, 0x8F, 0x87, 0x83, 0x81, 0x80, 0x80, 0x80, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, // 123 + 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, // 124 + 0x78, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x1F, 0xC0, 0xC0, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF0, 0xF0, 0xF0, 0x70, 0x70, 0x70, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalLite24.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalLite24.h new file mode 100644 index 0000000..fb59a2f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/CalLite24.h @@ -0,0 +1,182 @@ +/* + * + * CalLite24 Font + * + * Copyright (C) 2010 by Integrated Mapping Ltd + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : CalLite24.h + * Date : 21.11.2010 + * Font size in bytes : 27002 + * Font width : 10 + * Font height : 25 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _CalLite24_H +#define _CalLite24_H + +#define CalLite24_WIDTH 10 +#define CalLite24_HEIGHT 25 + +GLCDFONTDECL(CalLite24) = { + 0x69, 0x7A, // size + 0x15, // width + 0x19, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x07, 0x03, 0x07, 0x0F, 0x0C, 0x16, 0x10, 0x02, 0x07, 0x07, + 0x0B, 0x0F, 0x04, 0x07, 0x03, 0x0A, 0x0C, 0x0A, 0x0C, 0x0B, + 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x03, 0x04, 0x0D, 0x0E, + 0x0E, 0x0A, 0x14, 0x10, 0x0D, 0x0F, 0x0F, 0x0C, 0x0B, 0x10, + 0x0E, 0x06, 0x08, 0x0E, 0x0B, 0x10, 0x0E, 0x11, 0x0C, 0x11, + 0x0E, 0x0D, 0x0F, 0x0D, 0x0F, 0x15, 0x0E, 0x0D, 0x0E, 0x06, + 0x0A, 0x06, 0x0E, 0x0F, 0x04, 0x0B, 0x0C, 0x0B, 0x0C, 0x0C, + 0x07, 0x0C, 0x0B, 0x03, 0x06, 0x0C, 0x02, 0x13, 0x0B, 0x0C, + 0x0C, 0x0C, 0x08, 0x0A, 0x08, 0x0B, 0x0C, 0x11, 0x0C, 0x0C, + 0x0B, 0x0B, 0x02, 0x0B, 0x0F, 0x00, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0x38, 0xF8, 0xF8, 0x00, 0x7F, 0x7F, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, // 33 + 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0xB8, 0x80, 0x80, 0x80, 0xF8, 0x98, 0x80, 0x80, 0x40, 0x60, 0x61, 0x61, 0xF1, 0x7F, 0x43, 0x41, 0xE1, 0xF9, 0x7F, 0x61, 0x61, 0x61, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x03, 0x00, 0x00, 0x08, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0xC0, 0xE0, 0x60, 0x60, 0xFC, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x00, 0x07, 0x0F, 0x1C, 0x18, 0x18, 0xFF, 0x38, 0x30, 0x30, 0xE0, 0xE0, 0x80, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0xFF, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xF0, 0xF8, 0x18, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x08, 0x08, 0x0C, 0x0F, 0x07, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0xF8, 0xF8, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x08, 0x0C, 0x0C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x60, 0xF8, 0xF8, 0x0C, 0x0C, 0x0C, 0x0C, 0xF8, 0xF8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF9, 0x0F, 0x07, 0x06, 0x0E, 0x1B, 0x31, 0x71, 0xE0, 0xC0, 0xFC, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x03, 0x07, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xFC, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x0C, 0x04, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, // 40 + 0x04, 0x0C, 0x1C, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xFF, 0xFC, 0x00, 0x80, 0xE0, 0x78, 0x3F, 0x0F, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 41 + 0x10, 0x30, 0x20, 0x60, 0xC0, 0xFC, 0xC0, 0x60, 0x20, 0x30, 0x10, 0x02, 0x02, 0x03, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x03, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x3E, 0x0E, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3C, 0x04, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3F, 0x07, 0x00, 0x00, 0x00, 0xE0, 0x78, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0xC0, 0xF0, 0x78, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0x3F, 0x01, 0x07, 0x07, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x60, 0x60, 0x70, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x00, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x78, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x0E, 0x0F, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x00, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x0E, 0x0E, 0x1B, 0xF9, 0xF0, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x70, 0x78, 0x6E, 0x67, 0x63, 0x61, 0x60, 0x60, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF8, 0xE0, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x80, 0xE0, 0xF0, 0x30, 0x18, 0x18, 0x08, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0xBC, 0xF8, 0xF0, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x98, 0xF8, 0x78, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x78, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0xE0, 0xF0, 0xB8, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0xF8, 0xF0, 0x00, 0xF1, 0xF3, 0x1F, 0x0E, 0x06, 0x0C, 0x0C, 0x1C, 0x1E, 0xF3, 0xF1, 0xC0, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x08, 0x08, 0x0C, 0x0C, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0xE0, 0xF0, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xF0, 0xE0, 0xC0, 0x01, 0x0F, 0x1F, 0x18, 0x38, 0x30, 0x30, 0x30, 0x10, 0x98, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x80, 0x80, 0x80, 0x03, 0x03, 0x03, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, // 58 + 0x00, 0x80, 0x80, 0x80, 0x00, 0x03, 0x03, 0x03, 0xE0, 0xFC, 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0x18, 0x38, 0x38, 0x6C, 0x6C, 0xC6, 0xC6, 0xC3, 0x83, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x83, 0x83, 0xC3, 0xC6, 0x66, 0x6C, 0x3C, 0x38, 0x38, 0x10, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x78, 0x78, 0x0C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x88, 0x88, 0x8C, 0x8C, 0x8C, 0x88, 0x88, 0x18, 0x30, 0x70, 0xE0, 0x80, 0x00, 0x7C, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0xFF, 0x83, 0x01, 0x01, 0x01, 0x01, 0x81, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7C, 0x00, 0x03, 0x07, 0x0C, 0x18, 0x30, 0x31, 0x23, 0x23, 0x63, 0x63, 0x63, 0x61, 0x23, 0x03, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x38, 0x38, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x7F, 0x6F, 0x61, 0x60, 0x60, 0x60, 0x67, 0x7F, 0xFC, 0xE0, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xB8, 0xF0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0F, 0x1D, 0xF8, 0xF0, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x80, 0xE0, 0xF0, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x18, 0x38, 0x30, 0x1E, 0xFF, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF3, 0xFF, 0x3F, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x80, 0xE0, 0xF0, 0x30, 0x18, 0x18, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x30, 0x1E, 0xFF, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x38, 0xF8, 0xF8, 0x00, 0x00, 0x03, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x08, 0x08, 0xF8, 0xF8, 0x08, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x08, 0x08, 0x08, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x1C, 0x1E, 0x1F, 0x7F, 0xF1, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0xF8, 0xF8, 0xF8, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x38, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x07, 0x1E, 0x78, 0x70, 0x3E, 0x07, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xF8, 0xF8, 0xF8, 0x38, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x0F, 0x3E, 0xF8, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0xF0, 0xE0, 0x80, 0x00, 0x1E, 0xFF, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF3, 0xFF, 0x3E, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x10, 0x10, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0xF0, 0xE0, 0x80, 0x00, 0x1E, 0xFF, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE7, 0xFF, 0x1E, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x1C, 0x7C, 0xFE, 0xC6, 0xC7, 0x83, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, // 81 + 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0xF0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x38, 0x78, 0xEC, 0xC7, 0x87, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0xE0, 0xF0, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x78, 0xF0, 0xE0, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x38, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x78, 0x08, 0x00, 0x01, 0x07, 0x3F, 0xFC, 0xE0, 0x00, 0x00, 0xC0, 0xF0, 0x7E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x08, 0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x78, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x78, 0x00, 0x00, 0x0F, 0x7F, 0xF8, 0x80, 0x00, 0xF0, 0x7F, 0x07, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xC0, 0xFC, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x18, 0x38, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x38, 0x18, 0x00, 0x00, 0x00, 0x80, 0xE1, 0x77, 0x3F, 0x1E, 0x7F, 0xF3, 0xC0, 0x80, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x18, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x38, 0x08, 0x00, 0x00, 0x00, 0x03, 0x07, 0xFE, 0xFC, 0xFE, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x98, 0xF8, 0xF8, 0x38, 0x18, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFC, 0xFC, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 91 + 0x0C, 0x3C, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x3E, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0x78, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x04, 0x04, 0x04, 0x04, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 93 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x38, 0x18, 0x38, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x03, 0x0F, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0xE1, 0xE1, 0x31, 0x31, 0x31, 0x11, 0x19, 0x19, 0xFF, 0xFF, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFC, 0xFC, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x8F, 0xFE, 0xF8, 0x0F, 0x0F, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xF8, 0xFE, 0x8F, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xFC, 0xFC, 0xF8, 0xFE, 0x8F, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x78, 0xFE, 0xFF, 0x33, 0x31, 0x31, 0x30, 0x31, 0x31, 0x33, 0x3F, 0x3C, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x80, 0xE0, 0xF8, 0xBC, 0x8C, 0x8C, 0x8C, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x78, 0xFE, 0xCF, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xC7, 0x86, 0x8E, 0x8C, 0x8C, 0x86, 0xC6, 0xF7, 0x7F, 0x0F, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 103 + 0xFC, 0xFC, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFE, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x9C, 0x9C, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x80, 0x80, 0x80, 0x9C, 0x9C, 0x00, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0x7F, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, // 106 + 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x70, 0x78, 0xFC, 0xCE, 0x87, 0x03, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFC, 0xFC, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, // 108 + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x07, 0xFF, 0xFF, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFE, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0x8F, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x07, 0xFF, 0xFC, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x18, 0x18, 0x1C, 0x0C, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x8F, 0xFE, 0x78, 0xFF, 0xFF, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x01, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0xFE, 0xCF, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, // 113 + 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x1F, 0x3F, 0x31, 0x31, 0x71, 0x61, 0x61, 0xE1, 0xC3, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x80, 0xF8, 0xF8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x07, 0x3F, 0xF8, 0xE0, 0x00, 0x00, 0xC0, 0xF8, 0x3E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x1F, 0xFF, 0xF0, 0x00, 0x80, 0xF8, 0x3F, 0x07, 0x0F, 0x7E, 0xF0, 0x80, 0x80, 0xF8, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x03, 0x8F, 0xDC, 0xF8, 0xF8, 0xFC, 0x8E, 0x07, 0x01, 0x00, 0x08, 0x0C, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x01, 0x07, 0x3F, 0xFC, 0xE0, 0x80, 0x00, 0xE0, 0xF8, 0x3E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x80, 0xF3, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x81, 0xC1, 0xE1, 0x71, 0x1D, 0x0F, 0x07, 0x03, 0x00, 0x0C, 0x0E, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x0C, 0x0C, 0x04, 0x04, 0x30, 0x30, 0x30, 0x78, 0xCE, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0xFE, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, // 123 + 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, // 124 + 0x04, 0x04, 0x0C, 0x0C, 0x3C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xCF, 0x58, 0x70, 0x30, 0x30, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x1C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x60, 0x60, 0x60, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri10.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri10.h new file mode 100644 index 0000000..fb6283a --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri10.h @@ -0,0 +1,161 @@ +/* + * + * Callibri10 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Callibri10.h + * Date : 10.11.2012 + * Font size in bytes : 3742 + * Font width : 10 + * Font height : 10 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Callibri10_H +#define _Callibri10_H + +#define Callibri10_WIDTH 10 +#define Callibri10_HEIGHT 10 + +GLCDFONTDECL(Callibri10) = { + 0x0E, 0x9E, // size + 0x0A, // width + 0x0A, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x02, 0x05, 0x05, 0x07, 0x05, 0x01, 0x02, 0x02, + 0x03, 0x05, 0x02, 0x02, 0x01, 0x04, 0x05, 0x04, 0x04, 0x04, + 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x02, 0x04, 0x04, + 0x05, 0x03, 0x07, 0x05, 0x04, 0x05, 0x05, 0x03, 0x03, 0x05, + 0x05, 0x01, 0x03, 0x04, 0x03, 0x07, 0x05, 0x06, 0x04, 0x07, + 0x04, 0x04, 0x05, 0x05, 0x06, 0x09, 0x05, 0x05, 0x04, 0x02, + 0x04, 0x02, 0x03, 0x05, 0x02, 0x04, 0x04, 0x03, 0x04, 0x04, + 0x03, 0x04, 0x04, 0x01, 0x02, 0x04, 0x01, 0x07, 0x04, 0x05, + 0x04, 0x04, 0x02, 0x03, 0x03, 0x04, 0x04, 0x06, 0x04, 0x04, + 0x03, 0x03, 0x01, 0x02, 0x04, 0x04, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xBE, 0x00, // 33 + 0x06, 0x06, 0x00, 0x00, // 34 + 0x28, 0x7C, 0x28, 0xFC, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x88, 0x94, 0x96, 0xA4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0x1E, 0x92, 0x7E, 0x10, 0xFC, 0x92, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0xFC, 0x92, 0xAA, 0x44, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x06, 0x00, // 39 + 0xFC, 0x02, 0x40, 0x80, // 40 + 0x02, 0xFC, 0x80, 0x40, // 41 + 0x0C, 0x1E, 0x0C, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x80, 0x80, 0x40, // 44 + 0x20, 0x20, 0x00, 0x00, // 45 + 0x80, 0x00, // 46 + 0x80, 0x60, 0x1C, 0x02, 0x40, 0x00, 0x00, 0x00, // 47 + 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x88, 0x84, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, // 49 + 0x84, 0xC4, 0xA4, 0x9C, 0x00, 0x00, 0x00, 0x00, // 50 + 0x84, 0x94, 0x94, 0x6C, 0x00, 0x00, 0x00, 0x00, // 51 + 0x60, 0x50, 0x4C, 0xFC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x9C, 0x94, 0x94, 0x64, 0x00, 0x00, 0x00, 0x00, // 53 + 0x78, 0x94, 0x94, 0x74, 0x00, 0x00, 0x00, 0x00, // 54 + 0x04, 0xC4, 0x34, 0x0C, 0x00, 0x00, 0x00, 0x00, // 55 + 0xEC, 0x94, 0xB4, 0xEC, 0x00, 0x00, 0x00, 0x00, // 56 + 0xB8, 0xA4, 0xA4, 0x78, 0x00, 0x00, 0x00, 0x00, // 57 + 0x88, 0x00, // 58 + 0x00, 0x90, 0x80, 0x40, // 59 + 0x10, 0x28, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, // 60 + 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 61 + 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x02, 0x92, 0x1E, 0x00, 0x00, 0x00, // 63 + 0xF0, 0x08, 0x74, 0x54, 0x74, 0x44, 0x38, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 64 + 0x80, 0x70, 0x4C, 0x5C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xFC, 0x94, 0x94, 0x6C, 0x00, 0x00, 0x00, 0x00, // 66 + 0x78, 0xCC, 0x84, 0x84, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFC, 0x84, 0x84, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xFC, 0x94, 0x94, 0x00, 0x00, 0x00, // 69 + 0xFC, 0x14, 0x14, 0x00, 0x00, 0x00, // 70 + 0x78, 0xCC, 0x84, 0xA4, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xFC, 0x10, 0x10, 0x10, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xFC, 0x00, // 73 + 0x80, 0x80, 0xFC, 0x00, 0x00, 0x00, // 74 + 0xFC, 0x30, 0x48, 0x84, 0x00, 0x00, 0x00, 0x00, // 75 + 0xFC, 0x80, 0x80, 0x00, 0x00, 0x00, // 76 + 0xFC, 0x0C, 0x70, 0x80, 0x70, 0x0C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xFC, 0x0C, 0x30, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x78, 0x8C, 0x84, 0x84, 0xC4, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0xFC, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, // 80 + 0x78, 0xCC, 0x84, 0x84, 0xC4, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, // 81 + 0xFC, 0x24, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x00, // 82 + 0x98, 0x94, 0xA4, 0x64, 0x00, 0x00, 0x00, 0x00, // 83 + 0x04, 0x04, 0xFC, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x7C, 0x80, 0x80, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x04, 0x38, 0xC0, 0xE0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x04, 0x38, 0xC0, 0x70, 0x0C, 0x70, 0xC0, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x84, 0x48, 0x30, 0x68, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x04, 0x18, 0xE0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x84, 0xE4, 0x94, 0x8C, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFE, 0x02, 0xC0, 0x80, // 91 + 0x06, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, // 92 + 0x02, 0xFE, 0x80, 0xC0, // 93 + 0x18, 0x04, 0x38, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0xE8, 0xA8, 0xA8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFE, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, // 98 + 0x70, 0x88, 0x88, 0x00, 0x00, 0x00, // 99 + 0x70, 0x88, 0x88, 0xFE, 0x00, 0x00, 0x00, 0x00, // 100 + 0x70, 0xA8, 0xA8, 0xB0, 0x00, 0x00, 0x00, 0x00, // 101 + 0x08, 0xFE, 0x0A, 0x00, 0x00, 0x00, // 102 + 0x78, 0xA8, 0xA8, 0xB8, 0xC0, 0x80, 0x80, 0xC0, // 103 + 0xFE, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, // 104 + 0xFA, 0x00, // 105 + 0x00, 0xFA, 0x80, 0xC0, // 106 + 0xFE, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFE, 0x00, // 108 + 0xF8, 0x08, 0x08, 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0xF8, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, // 110 + 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0xF8, 0x88, 0x88, 0x70, 0xC0, 0x00, 0x00, 0x00, // 112 + 0x70, 0x88, 0x88, 0xF8, 0x00, 0x00, 0x00, 0xC0, // 113 + 0xF8, 0x08, 0x00, 0x00, // 114 + 0x98, 0xA8, 0xE8, 0x00, 0x00, 0x00, // 115 + 0x08, 0xFC, 0x88, 0x00, 0x00, 0x00, // 116 + 0xF8, 0x80, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x00, // 117 + 0x18, 0xE0, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x00, // 118 + 0x38, 0xC0, 0x30, 0x78, 0x80, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x88, 0x70, 0x70, 0x88, 0x00, 0x00, 0x00, 0x00, // 120 + 0x08, 0x70, 0xC0, 0x38, 0x00, 0x80, 0x40, 0x00, // 121 + 0xC8, 0xA8, 0x98, 0x00, 0x00, 0x00, // 122 + 0x20, 0xDE, 0x02, 0x00, 0xC0, 0x80, // 123 + 0xFE, 0xC0, // 124 + 0xDE, 0x20, 0xC0, 0x00, // 125 + 0x0C, 0x04, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x94, 0xB4, 0xFC, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11.h new file mode 100644 index 0000000..3c8170b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11.h @@ -0,0 +1,162 @@ +/* + * + * Callibri11 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Callibri11.h + * Date : 10.11.2012 + * Font size in bytes : 4898 + * Font width : 10 + * Font height : 11 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + + +#ifndef _Callibri11_H +#define _Callibri11_H + +#define Callibri11_WIDTH 10 +#define Callibri11_HEIGHT 11 + +GLCDFONTDECL(Callibri11) = { + 0x13, 0x22, // size + 0x0A, // width + 0x0B, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x03, 0x06, 0x04, 0x08, 0x07, 0x01, 0x02, 0x02, + 0x05, 0x05, 0x02, 0x03, 0x01, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x05, 0x05, + 0x05, 0x04, 0x09, 0x07, 0x05, 0x05, 0x06, 0x04, 0x04, 0x06, + 0x06, 0x01, 0x03, 0x05, 0x04, 0x08, 0x06, 0x06, 0x05, 0x07, + 0x05, 0x04, 0x05, 0x06, 0x07, 0x0B, 0x06, 0x05, 0x06, 0x02, + 0x05, 0x02, 0x05, 0x06, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, + 0x04, 0x05, 0x05, 0x01, 0x02, 0x04, 0x01, 0x08, 0x05, 0x05, + 0x05, 0x05, 0x03, 0x04, 0x04, 0x05, 0x05, 0x09, 0x05, 0x05, + 0x03, 0x03, 0x01, 0x03, 0x05, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x7E, 0x20, // 33 + 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, // 34 + 0x40, 0xE8, 0x5E, 0xE8, 0x5E, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, // 35 + 0x8C, 0x12, 0x23, 0xC4, 0x00, 0x60, 0x20, 0x00, // 36 + 0x0C, 0x12, 0xD2, 0x2C, 0xD0, 0x2C, 0x22, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 37 + 0xC0, 0x2C, 0x12, 0x32, 0xCC, 0xC0, 0x20, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x20, // 38 + 0x0E, 0x00, // 39 + 0xF8, 0x06, 0x20, 0xC0, // 40 + 0x06, 0xF8, 0xC0, 0x20, // 41 + 0x14, 0x08, 0x3E, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x80, 0x60, // 44 + 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 + 0x00, 0x20, // 46 + 0x00, 0x80, 0x70, 0x0C, 0x03, 0xC0, 0x20, 0x00, 0x00, 0x00, // 47 + 0xFC, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x00, // 48 + 0x04, 0x02, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 + 0x04, 0x82, 0x42, 0x22, 0x1C, 0x20, 0x20, 0x20, 0x20, 0x20, // 50 + 0x84, 0x12, 0x12, 0x12, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 51 + 0x60, 0x58, 0x46, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, // 52 + 0x9E, 0x12, 0x12, 0x12, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 53 + 0xF8, 0x14, 0x12, 0x12, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 54 + 0x02, 0x82, 0x62, 0x1A, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, // 55 + 0xEC, 0x12, 0x12, 0x12, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 56 + 0x1C, 0x22, 0x22, 0xA2, 0x7C, 0x20, 0x20, 0x20, 0x00, 0x00, // 57 + 0x08, 0x20, // 58 + 0x00, 0x08, 0x80, 0x60, // 59 + 0x20, 0x20, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x02, 0x72, 0x12, 0x0C, 0x00, 0x20, 0x00, 0x00, // 63 + 0xF0, 0x08, 0x64, 0x92, 0x8A, 0x4A, 0xBA, 0x84, 0x78, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 + 0x80, 0x60, 0x58, 0x46, 0x58, 0x60, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // 65 + 0xFE, 0x12, 0x12, 0x1C, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 + 0xFC, 0x02, 0x02, 0x02, 0x84, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 + 0xFE, 0x02, 0x02, 0x02, 0x84, 0x78, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 + 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, // 69 + 0xFE, 0x12, 0x12, 0x12, 0x20, 0x00, 0x00, 0x00, // 70 + 0x78, 0x84, 0x02, 0x22, 0x22, 0xE4, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00, // 71 + 0xFE, 0x10, 0x10, 0x10, 0x10, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, // 72 + 0xFE, 0x20, // 73 + 0x00, 0x00, 0xFE, 0x20, 0x20, 0x00, // 74 + 0xFE, 0x10, 0x28, 0xC4, 0x02, 0x20, 0x00, 0x00, 0x00, 0x20, // 75 + 0xFE, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 + 0xFE, 0x06, 0x78, 0x80, 0x80, 0x78, 0x06, 0xFE, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, // 77 + 0xFE, 0x06, 0x18, 0x60, 0x80, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 78 + 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, // 79 + 0xFE, 0x22, 0x22, 0x22, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, // 80 + 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, // 81 + 0xFE, 0x22, 0x22, 0x62, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x20, // 82 + 0x8C, 0x12, 0x22, 0xC4, 0x00, 0x20, 0x20, 0x00, // 83 + 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, // 84 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, // 85 + 0x06, 0x18, 0x60, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 86 + 0x06, 0x78, 0x80, 0x60, 0x18, 0x06, 0x18, 0x60, 0x80, 0x78, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // 87 + 0x02, 0xCC, 0x30, 0x30, 0xCC, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, // 88 + 0x06, 0x18, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, // 89 + 0x82, 0x42, 0x22, 0x12, 0x0A, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 90 + 0xFE, 0x02, 0xE0, 0x80, // 91 + 0x03, 0x0C, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, // 92 + 0x02, 0xFE, 0x80, 0xE0, // 93 + 0x10, 0x0C, 0x02, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0xC8, 0x28, 0x28, 0x28, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x20, // 97 + 0xFE, 0x08, 0x08, 0x08, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x00, // 98 + 0xF0, 0x08, 0x08, 0x08, 0x00, 0x20, 0x20, 0x20, // 99 + 0xF0, 0x08, 0x08, 0x08, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, // 100 + 0xF0, 0x28, 0x28, 0x28, 0x30, 0x00, 0x20, 0x20, 0x20, 0x20, // 101 + 0x08, 0xFC, 0x0A, 0x0A, 0x00, 0x20, 0x00, 0x00, // 102 + 0xB0, 0x48, 0x48, 0x38, 0x08, 0xC0, 0xA0, 0xA0, 0xA0, 0x40, // 103 + 0xFE, 0x10, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, // 104 + 0xFA, 0x20, // 105 + 0x00, 0xFA, 0x80, 0x60, // 106 + 0xFE, 0x20, 0xD0, 0x08, 0x20, 0x00, 0x00, 0x20, // 107 + 0xFE, 0x20, // 108 + 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, // 109 + 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x20, // 110 + 0xF0, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x00, // 111 + 0xF8, 0x08, 0x08, 0x08, 0xF0, 0xE0, 0x20, 0x20, 0x20, 0x00, // 112 + 0xF0, 0x08, 0x08, 0x08, 0xF8, 0x00, 0x20, 0x20, 0x20, 0xE0, // 113 + 0xF8, 0x08, 0x08, 0x20, 0x00, 0x00, // 114 + 0x30, 0x28, 0x48, 0xC8, 0x20, 0x20, 0x20, 0x00, // 115 + 0x08, 0xFC, 0x08, 0x08, 0x00, 0x00, 0x20, 0x20, // 116 + 0xF8, 0x00, 0x00, 0x80, 0xF8, 0x00, 0x20, 0x20, 0x00, 0x20, // 117 + 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, // 118 + 0x18, 0x60, 0x80, 0x60, 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // 119 + 0x08, 0x90, 0x60, 0x90, 0x08, 0x20, 0x00, 0x00, 0x00, 0x20, // 120 + 0x18, 0x60, 0x80, 0x60, 0x18, 0x00, 0xC0, 0x20, 0x00, 0x00, // 121 + 0x88, 0x68, 0x18, 0x20, 0x20, 0x20, // 122 + 0x20, 0xDC, 0x02, 0x00, 0x60, 0x80, // 123 + 0xFE, 0xE0, // 124 + 0x02, 0xDC, 0x20, 0x80, 0x60, 0x00, // 125 + 0x10, 0x08, 0x18, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x0A, 0x7A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_bold.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_bold.h new file mode 100644 index 0000000..9b5ecf5 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_bold.h @@ -0,0 +1,161 @@ +/* + * + * Callibri11_bold + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Callibri11_bold.h + * Date : 10.11.2012 + * Font size in bytes : 5217 + * Font width : 10 + * Font height : 11 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Callibri11_bold_H +#define _Callibri11_bold_H + +#define Callibri11_bold_WIDTH 10 +#define Callibri11_bold_HEIGHT 11 + +GLCDFONTDECL(Callibri11_bold) = { + 0x14, 0x61, // size + 0x0A, // width + 0x0B, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x02, 0x03, 0x06, 0x05, 0x08, 0x08, 0x01, 0x03, 0x03, + 0x05, 0x05, 0x02, 0x03, 0x02, 0x05, 0x05, 0x06, 0x05, 0x05, + 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x05, 0x05, + 0x05, 0x05, 0x0A, 0x06, 0x06, 0x05, 0x07, 0x05, 0x05, 0x07, + 0x07, 0x02, 0x03, 0x06, 0x04, 0x09, 0x07, 0x07, 0x05, 0x08, + 0x06, 0x05, 0x06, 0x07, 0x06, 0x0A, 0x06, 0x06, 0x05, 0x03, + 0x05, 0x03, 0x05, 0x06, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, + 0x03, 0x06, 0x05, 0x02, 0x02, 0x05, 0x02, 0x08, 0x05, 0x05, + 0x05, 0x05, 0x03, 0x04, 0x03, 0x05, 0x05, 0x08, 0x05, 0x05, + 0x04, 0x03, 0x01, 0x04, 0x05, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xBE, 0xBE, 0x20, 0x20, // 33 + 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, // 34 + 0x48, 0xE8, 0x5E, 0xE8, 0x5E, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, // 35 + 0x9C, 0x3E, 0x33, 0xF2, 0xE4, 0x00, 0x20, 0x60, 0x20, 0x00, // 36 + 0x0C, 0x12, 0x8C, 0x60, 0x18, 0xC6, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 37 + 0xC0, 0xEC, 0x3E, 0x32, 0x7E, 0xCC, 0xE0, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, // 38 + 0x0E, 0x00, // 39 + 0xF0, 0xFC, 0x06, 0x00, 0x60, 0xC0, // 40 + 0x06, 0xFC, 0xF0, 0xC0, 0x60, 0x00, // 41 + 0x12, 0x0C, 0x3F, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x80, 0x80, 0xE0, 0x60, // 44 + 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 + 0x80, 0x80, 0x20, 0x20, // 46 + 0x00, 0x80, 0x70, 0x0C, 0x03, 0xC0, 0x20, 0x00, 0x00, 0x00, // 47 + 0xFC, 0xFE, 0x02, 0xFE, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x00, // 48 + 0x08, 0x04, 0xFE, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 + 0x84, 0xC2, 0x62, 0x3E, 0x1C, 0x20, 0x20, 0x20, 0x20, 0x20, // 50 + 0x84, 0x12, 0x12, 0xFE, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 51 + 0x60, 0x58, 0x46, 0xFE, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 52 + 0x1E, 0x1E, 0x12, 0xF2, 0xE2, 0x20, 0x20, 0x20, 0x20, 0x00, // 53 + 0xFC, 0xFE, 0x12, 0xF2, 0xE2, 0x00, 0x20, 0x20, 0x20, 0x00, // 54 + 0x02, 0xC2, 0xFA, 0x3E, 0x06, 0x00, 0x20, 0x20, 0x00, 0x00, // 55 + 0xEC, 0xFE, 0x12, 0xFE, 0xEC, 0x00, 0x20, 0x20, 0x20, 0x00, // 56 + 0x1C, 0x3E, 0x22, 0xFE, 0xFC, 0x20, 0x20, 0x20, 0x20, 0x00, // 57 + 0x98, 0x98, 0x20, 0x20, // 58 + 0x98, 0x98, 0xE0, 0x60, // 59 + 0x20, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x02, 0xB2, 0xB2, 0x1E, 0x0C, 0x00, 0x20, 0x20, 0x00, 0x00, // 63 + 0xF0, 0x08, 0x64, 0x92, 0x8A, 0x4A, 0xF2, 0x9A, 0x84, 0x78, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 + 0xE0, 0xF8, 0x4E, 0x4E, 0xF8, 0xE0, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 65 + 0xFE, 0xFE, 0x12, 0x12, 0xFE, 0xEC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 + 0xFC, 0xFE, 0x02, 0x02, 0x84, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 + 0xFE, 0xFE, 0x02, 0x02, 0x86, 0xFC, 0x78, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 + 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, 0x20, // 69 + 0xFE, 0xFE, 0x12, 0x12, 0x12, 0x20, 0x20, 0x00, 0x00, 0x00, // 70 + 0xFC, 0xFE, 0x02, 0x02, 0x22, 0xE2, 0xE4, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 71 + 0xFE, 0xFE, 0x10, 0x10, 0x10, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 72 + 0xFE, 0xFE, 0x20, 0x20, // 73 + 0x00, 0xFE, 0xFE, 0x20, 0x20, 0x00, // 74 + 0xFE, 0xFE, 0x30, 0xFC, 0xCE, 0x02, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 75 + 0xFE, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 + 0xFE, 0xFE, 0x1C, 0x70, 0xC0, 0x70, 0x1C, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x20, // 77 + 0xFE, 0xFE, 0x0C, 0x30, 0xC0, 0xFE, 0xFE, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, // 78 + 0xFC, 0xFE, 0x02, 0x02, 0x02, 0xFE, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 79 + 0xFE, 0xFE, 0x22, 0x3E, 0x1C, 0x20, 0x20, 0x00, 0x00, 0x00, // 80 + 0xFC, 0xFE, 0x02, 0x02, 0x02, 0xFE, 0xFC, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, // 81 + 0xFE, 0xFE, 0x12, 0x32, 0xFE, 0xCC, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 82 + 0x9C, 0x3E, 0x32, 0xF2, 0xE4, 0x00, 0x20, 0x20, 0x20, 0x00, // 83 + 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 84 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 85 + 0x0E, 0x7E, 0xE0, 0xE0, 0x7E, 0x0E, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 86 + 0x06, 0x3E, 0xF8, 0xC0, 0x3E, 0x3E, 0xC0, 0xF8, 0x3E, 0x06, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 87 + 0x86, 0xCE, 0x78, 0x78, 0xCE, 0x86, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, // 88 + 0x06, 0x1E, 0xF8, 0xF8, 0x1E, 0x06, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, // 89 + 0x82, 0xE2, 0x7A, 0x1E, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, // 90 + 0xFE, 0xFE, 0x02, 0xE0, 0xE0, 0x80, // 91 + 0x03, 0x0C, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0xC0, // 92 + 0x02, 0xFE, 0xFE, 0x80, 0xE0, 0xE0, // 93 + 0x10, 0x0C, 0x02, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0xC8, 0xE8, 0x28, 0xF8, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x20, // 97 + 0xFE, 0xFE, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x00, // 98 + 0xF0, 0xF8, 0x08, 0x08, 0x00, 0x20, 0x20, 0x20, // 99 + 0xF0, 0xF8, 0x08, 0xFE, 0xFE, 0x00, 0x20, 0x20, 0x20, 0x20, // 100 + 0xF0, 0xF8, 0x28, 0x38, 0x30, 0x00, 0x20, 0x20, 0x20, 0x20, // 101 + 0xFC, 0xFE, 0x0A, 0x20, 0x20, 0x00, // 102 + 0xB0, 0xF8, 0x48, 0x78, 0x38, 0x08, 0xC0, 0xE0, 0xA0, 0xE0, 0x60, 0x00, // 103 + 0xFE, 0xFE, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, // 104 + 0xFB, 0xFB, 0x20, 0x20, // 105 + 0xFB, 0xFB, 0xE0, 0x60, // 106 + 0xFE, 0xFE, 0x60, 0xF8, 0x98, 0x20, 0x20, 0x00, 0x20, 0x20, // 107 + 0xFE, 0xFE, 0x20, 0x20, // 108 + 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, // 109 + 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0x20, 0x20, 0x00, 0x20, 0x20, // 110 + 0xF0, 0xF8, 0x08, 0xF8, 0xF0, 0x00, 0x20, 0x20, 0x20, 0x00, // 111 + 0xF8, 0xF8, 0x08, 0xF8, 0xF0, 0xE0, 0xE0, 0x20, 0x20, 0x00, // 112 + 0xF0, 0xF8, 0x08, 0xF8, 0xF8, 0x00, 0x20, 0x20, 0xE0, 0xE0, // 113 + 0xF8, 0xF8, 0x08, 0x20, 0x20, 0x00, // 114 + 0x30, 0x78, 0xE8, 0xC8, 0x20, 0x20, 0x20, 0x00, // 115 + 0xFC, 0xFC, 0x08, 0x00, 0x20, 0x20, // 116 + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0x20, 0x20, 0x20, 0x20, // 117 + 0x38, 0xF8, 0x80, 0xF8, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 118 + 0x38, 0xF8, 0xC0, 0x38, 0x38, 0xC0, 0xF8, 0x38, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00, // 119 + 0x98, 0xF8, 0x60, 0xF8, 0x98, 0x20, 0x20, 0x00, 0x20, 0x20, // 120 + 0x38, 0xF8, 0x80, 0xF8, 0x38, 0x00, 0xC0, 0xE0, 0x20, 0x00, // 121 + 0x88, 0xE8, 0x78, 0x18, 0x20, 0x20, 0x20, 0x20, // 122 + 0xFC, 0xDE, 0x02, 0x60, 0xE0, 0x80, // 123 + 0xFE, 0xE0, // 124 + 0x02, 0xDE, 0xFC, 0x20, 0x80, 0xE0, 0x60, 0x00, // 125 + 0x10, 0x08, 0x18, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x6A, 0x3A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_italic.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_italic.h new file mode 100644 index 0000000..b8ccc2d --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri11_italic.h @@ -0,0 +1,161 @@ +/* + * + * Callibri11_italic + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Callibri11_italic.h + * Date : 10.11.2012 + * Font size in bytes : 5184 + * Font width : 10 + * Font height : 11 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Callibri11_italic_H +#define _Callibri11_italic_H + +#define Callibri11_italic_WIDTH 10 +#define Callibri11_italic_HEIGHT 11 + +GLCDFONTDECL(Callibri11_italic) = { + 0x14, 0x40, // size + 0x0A, // width + 0x0B, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x02, 0x03, 0x06, 0x06, 0x08, 0x07, 0x01, 0x03, 0x03, + 0x04, 0x06, 0x02, 0x03, 0x01, 0x05, 0x05, 0x05, 0x06, 0x06, + 0x05, 0x06, 0x05, 0x05, 0x05, 0x06, 0x02, 0x03, 0x05, 0x05, + 0x06, 0x04, 0x0A, 0x07, 0x06, 0x05, 0x06, 0x05, 0x05, 0x07, + 0x06, 0x02, 0x04, 0x05, 0x04, 0x09, 0x07, 0x07, 0x05, 0x07, + 0x06, 0x05, 0x05, 0x07, 0x05, 0x09, 0x06, 0x05, 0x06, 0x03, + 0x03, 0x03, 0x04, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x05, + 0x04, 0x05, 0x05, 0x02, 0x03, 0x04, 0x02, 0x09, 0x05, 0x05, + 0x05, 0x05, 0x03, 0x05, 0x03, 0x05, 0x04, 0x08, 0x05, 0x05, + 0x05, 0x03, 0x03, 0x04, 0x05, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x60, 0x1E, 0x20, 0x00, // 33 + 0x08, 0x06, 0x08, 0x00, 0x00, 0x00, // 34 + 0xC8, 0x78, 0x4E, 0xC8, 0x78, 0x4E, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, // 35 + 0x80, 0x0C, 0x12, 0x22, 0xC3, 0x04, 0x00, 0x60, 0x20, 0x20, 0x00, 0x00, // 36 + 0x0C, 0x92, 0x52, 0x2C, 0xD0, 0x28, 0x24, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, // 37 + 0xC0, 0x20, 0x1C, 0x32, 0xCA, 0xC4, 0x20, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x20, // 38 + 0x08, 0x00, // 39 + 0xE0, 0x1C, 0x02, 0x60, 0x80, 0x00, // 40 + 0x00, 0x82, 0x7C, 0x80, 0x60, 0x00, // 41 + 0x14, 0x38, 0x0E, 0x14, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0xE0, 0x38, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x80, 0x60, // 44 + 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 + 0x00, 0x20, // 46 + 0x80, 0x60, 0x18, 0x06, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, // 47 + 0xF0, 0x0C, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x00, 0x00, // 48 + 0x00, 0x04, 0xE2, 0x1E, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, // 49 + 0x00, 0x80, 0x44, 0x22, 0x12, 0x0C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 50 + 0x80, 0x00, 0x14, 0x12, 0xF2, 0x0C, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 51 + 0x60, 0x50, 0x48, 0xE4, 0x5E, 0x00, 0x00, 0x00, 0x20, 0x00, // 52 + 0x80, 0x18, 0x16, 0x12, 0xE2, 0x02, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 53 + 0xE0, 0x18, 0x14, 0x92, 0x62, 0x00, 0x20, 0x20, 0x00, 0x00, // 54 + 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, // 55 + 0xE0, 0x1C, 0x12, 0xF2, 0x0C, 0x00, 0x20, 0x20, 0x00, 0x00, // 56 + 0x00, 0x18, 0x24, 0xA2, 0x62, 0x1C, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 57 + 0x00, 0x08, 0x20, 0x00, // 58 + 0x00, 0x00, 0x08, 0x80, 0x60, 0x00, // 59 + 0x20, 0x50, 0x50, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x80, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x62, 0x12, 0x12, 0x0C, 0x20, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x18, 0x04, 0x24, 0x52, 0x4A, 0x7A, 0x4A, 0x22, 0x1C, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 64 + 0x00, 0xC0, 0x70, 0x4C, 0x42, 0x7C, 0xC0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // 65 + 0xE0, 0x1E, 0x12, 0x12, 0x12, 0xEC, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 66 + 0xF0, 0x0C, 0x02, 0x02, 0x82, 0x00, 0x20, 0x20, 0x20, 0x00, // 67 + 0xE0, 0x1E, 0x02, 0x02, 0xC2, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 68 + 0xE0, 0x1E, 0x12, 0x12, 0x12, 0x20, 0x20, 0x20, 0x20, 0x20, // 69 + 0xE0, 0x1E, 0x12, 0x12, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x0C, 0x02, 0x02, 0x12, 0xD2, 0x34, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 71 + 0xE0, 0x1E, 0x10, 0x10, 0xF0, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 72 + 0xE0, 0x1E, 0x20, 0x00, // 73 + 0x00, 0x00, 0xE0, 0x1E, 0x20, 0x20, 0x00, 0x00, // 74 + 0xE0, 0x1E, 0x30, 0xC8, 0x04, 0x20, 0x00, 0x00, 0x00, 0x20, // 75 + 0xE0, 0x1E, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 76 + 0xE0, 0x1E, 0x06, 0x78, 0x80, 0x60, 0x18, 0xE6, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, // 77 + 0xE0, 0x1E, 0x0C, 0x30, 0xC0, 0xE0, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // 78 + 0xF0, 0x0C, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 79 + 0xE0, 0x3E, 0x22, 0x22, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF0, 0x0C, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, // 81 + 0xE0, 0x1E, 0x12, 0x32, 0xD2, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 82 + 0x80, 0x0C, 0x12, 0x22, 0xC2, 0x00, 0x20, 0x20, 0x20, 0x00, // 83 + 0x02, 0xE2, 0x1E, 0x02, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, // 84 + 0xE0, 0x1E, 0x00, 0x00, 0x00, 0xE0, 0x1E, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 85 + 0xFE, 0x80, 0x60, 0x10, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, // 86 + 0x3E, 0xC0, 0x60, 0x18, 0x0E, 0xF0, 0x40, 0x30, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 87 + 0x00, 0x80, 0x46, 0x78, 0x88, 0x04, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, // 88 + 0x06, 0xD8, 0x20, 0x18, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, // 89 + 0x80, 0x42, 0x22, 0x12, 0x0A, 0x06, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 90 + 0xC0, 0x3E, 0x02, 0xE0, 0x80, 0x00, // 91 + 0x07, 0xF8, 0x00, 0x00, 0x00, 0xE0, // 92 + 0x00, 0xC2, 0x3E, 0x80, 0xE0, 0x00, // 93 + 0x10, 0x0C, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 97 + 0xC0, 0x3E, 0x08, 0x88, 0x70, 0x20, 0x20, 0x20, 0x00, 0x00, // 98 + 0xE0, 0x10, 0x08, 0x88, 0x00, 0x20, 0x20, 0x00, // 99 + 0xE0, 0x10, 0x08, 0xC8, 0x3E, 0x00, 0x20, 0x20, 0x20, 0x00, // 100 + 0xE0, 0x30, 0x28, 0x28, 0x10, 0x00, 0x20, 0x20, 0x20, 0x00, // 101 + 0x00, 0x88, 0x78, 0x0C, 0x80, 0x60, 0x00, 0x00, // 102 + 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x80, 0xA0, 0xA0, 0x60, 0x00, // 103 + 0xC0, 0x3E, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x20, 0x00, // 104 + 0xC0, 0x3A, 0x20, 0x00, // 105 + 0x00, 0xC0, 0x3A, 0x80, 0x60, 0x00, // 106 + 0xC0, 0x3E, 0xE0, 0x10, 0x20, 0x00, 0x00, 0x20, // 107 + 0xC0, 0x3E, 0x20, 0x00, // 108 + 0xC0, 0x38, 0x10, 0x08, 0xC8, 0x30, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, // 109 + 0xC0, 0x38, 0x08, 0xC8, 0x30, 0x20, 0x00, 0x00, 0x20, 0x00, // 110 + 0xE0, 0x10, 0x08, 0x88, 0x70, 0x00, 0x20, 0x20, 0x00, 0x00, // 111 + 0xC0, 0x38, 0x08, 0x88, 0x70, 0xE0, 0x20, 0x20, 0x00, 0x00, // 112 + 0xE0, 0x10, 0x08, 0xC8, 0x38, 0x00, 0x20, 0x20, 0xE0, 0x00, // 113 + 0xC0, 0x38, 0x08, 0x20, 0x00, 0x00, // 114 + 0x00, 0x10, 0x28, 0xC8, 0x08, 0x20, 0x20, 0x20, 0x00, 0x00, // 115 + 0xC8, 0x3C, 0x08, 0x00, 0x20, 0x20, // 116 + 0xC0, 0x38, 0x00, 0xC0, 0x38, 0x00, 0x20, 0x20, 0x20, 0x00, // 117 + 0xF8, 0x80, 0x40, 0x30, 0x20, 0x00, 0x00, 0x00, // 118 + 0xF8, 0x80, 0x60, 0x10, 0xF8, 0x80, 0x40, 0x30, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, // 119 + 0x00, 0x88, 0x70, 0xE0, 0x10, 0x20, 0x00, 0x00, 0x00, 0x20, // 120 + 0x00, 0xF8, 0x00, 0xC0, 0x30, 0x80, 0x40, 0x20, 0x00, 0x00, // 121 + 0x00, 0x88, 0x48, 0x28, 0x18, 0x20, 0x20, 0x20, 0x20, 0x20, // 122 + 0x20, 0xE0, 0x1E, 0x00, 0xE0, 0x80, // 123 + 0x00, 0xF0, 0x0E, 0xE0, 0x00, 0x00, // 124 + 0x00, 0xC2, 0x3E, 0x20, 0x80, 0x60, 0x00, 0x00, // 125 + 0x10, 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x5A, 0x0A, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri14.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri14.h new file mode 100644 index 0000000..bafcd28 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri14.h @@ -0,0 +1,163 @@ + + +/* + * + * new Font + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : callibri_size14.h + * Date : 10.11.2012 + * Font size in bytes : 7102 + * Font width : 10 + * Font height : 14 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Callibri14_H +#define _Callibri14_H + +#define Callibri14_WIDTH 10 +#define Callibri14_HEIGHT 14 + +GLCDFONTDECL(Callibri14) = { + 0x1B, 0xBE, // size + 0x0A, // width + 0x0E, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x04, 0x07, 0x05, 0x09, 0x08, 0x01, 0x02, 0x02, + 0x05, 0x07, 0x03, 0x03, 0x01, 0x05, 0x07, 0x05, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x02, 0x06, 0x06, + 0x05, 0x05, 0x0A, 0x08, 0x06, 0x06, 0x07, 0x05, 0x05, 0x07, + 0x06, 0x01, 0x03, 0x05, 0x05, 0x0A, 0x07, 0x08, 0x05, 0x08, + 0x06, 0x05, 0x07, 0x07, 0x08, 0x0C, 0x07, 0x05, 0x06, 0x03, + 0x05, 0x02, 0x05, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x06, + 0x04, 0x06, 0x05, 0x01, 0x02, 0x05, 0x01, 0x09, 0x05, 0x06, + 0x06, 0x06, 0x04, 0x04, 0x04, 0x05, 0x06, 0x0A, 0x06, 0x06, + 0x04, 0x03, 0x01, 0x03, 0x06, 0x07, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x18, // 33 + 0x1E, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, // 34 + 0x80, 0xD0, 0xBC, 0x90, 0xD0, 0xBC, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, // 35 + 0x38, 0x64, 0x47, 0x44, 0x88, 0x18, 0x70, 0x10, 0x10, 0x0C, // 36 + 0x38, 0x44, 0x44, 0x38, 0x80, 0xC0, 0x70, 0x48, 0x84, 0x00, 0x00, 0x10, 0x08, 0x04, 0x0C, 0x10, 0x10, 0x0C, // 37 + 0xC0, 0x7E, 0x62, 0xF2, 0x9E, 0x04, 0xC0, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x1C, 0x0C, 0x1C, 0x10, // 38 + 0x1E, 0x00, // 39 + 0xF0, 0x0E, 0x1C, 0xE0, // 40 + 0x0E, 0xF0, 0xE0, 0x1C, // 41 + 0x14, 0x14, 0x3E, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x40, 0x38, 0x08, // 44 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, // 45 + 0x00, 0x18, // 46 + 0x00, 0x00, 0xC0, 0x38, 0x0E, 0x60, 0x38, 0x04, 0x00, 0x00, // 47 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x0C, 0xF0, 0x04, 0x18, 0x10, 0x10, 0x10, 0x08, 0x04, // 48 + 0x08, 0x04, 0xFC, 0x00, 0x00, 0x10, 0x10, 0x1C, 0x10, 0x10, // 49 + 0x08, 0x04, 0x04, 0x84, 0x44, 0x38, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 50 + 0x08, 0x44, 0x44, 0x44, 0xE4, 0xB8, 0x08, 0x10, 0x10, 0x10, 0x10, 0x0C, // 51 + 0x80, 0x60, 0x30, 0x0C, 0xFC, 0x00, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x04, // 52 + 0x3C, 0x24, 0x24, 0x24, 0x64, 0xC0, 0x18, 0x10, 0x10, 0x10, 0x18, 0x0C, // 53 + 0xF0, 0x28, 0x24, 0x24, 0x24, 0xC4, 0x0C, 0x18, 0x10, 0x10, 0x18, 0x0C, // 54 + 0x04, 0x04, 0x04, 0xC4, 0x3C, 0x0C, 0x00, 0x10, 0x1C, 0x04, 0x00, 0x00, // 55 + 0x98, 0xA4, 0x44, 0x44, 0xA4, 0x98, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 56 + 0x38, 0x44, 0x44, 0x44, 0x4C, 0xF8, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 57 + 0x30, 0x18, // 58 + 0x00, 0x60, 0x40, 0x38, // 59 + 0x40, 0xE0, 0xA0, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, // 60 + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, // 61 + 0x10, 0x20, 0x20, 0xC0, 0xC0, 0x08, 0x04, 0x04, 0x00, 0x00, // 62 + 0x06, 0xE2, 0x22, 0x36, 0x1C, 0x00, 0x18, 0x18, 0x00, 0x00, // 63 + 0xC0, 0x30, 0xC8, 0x64, 0x24, 0xE4, 0x64, 0x04, 0x08, 0xF0, 0x1C, 0x20, 0x4C, 0x48, 0x48, 0x44, 0x48, 0x08, 0x0C, 0x00, // 64 + 0x00, 0x80, 0xF0, 0x1C, 0x1C, 0xF0, 0x80, 0x00, 0x10, 0x1C, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x10, // 65 + 0xFC, 0x44, 0x44, 0x44, 0x78, 0x80, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 66 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x08, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, // 67 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 68 + 0xFC, 0x44, 0x44, 0x44, 0x04, 0x1C, 0x10, 0x10, 0x10, 0x10, // 69 + 0xFC, 0x44, 0x44, 0x44, 0x44, 0x1C, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x08, 0x04, 0x04, 0x44, 0x44, 0xC8, 0x04, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x1C, // 71 + 0xFC, 0x40, 0x40, 0x40, 0x40, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 72 + 0xFC, 0x1C, // 73 + 0x00, 0x00, 0xFC, 0x10, 0x10, 0x0C, // 74 + 0xFC, 0x40, 0xB0, 0x18, 0x04, 0x1C, 0x00, 0x00, 0x0C, 0x18, // 75 + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, // 76 + 0xFC, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0xFC, 0x1C, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x04, 0x00, 0x00, 0x1C, // 77 + 0xFC, 0x0C, 0x30, 0x60, 0x80, 0x00, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x1C, 0x1C, // 78 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 79 + 0xFC, 0x84, 0x84, 0xC4, 0x78, 0x1C, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x18, 0x34, // 81 + 0xFC, 0x44, 0x44, 0xC4, 0x38, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x1C, 0x10, // 82 + 0x38, 0x24, 0x44, 0xC4, 0x88, 0x08, 0x10, 0x10, 0x10, 0x0C, // 83 + 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 84 + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x18, 0x10, 0x10, 0x10, 0x08, 0x0C, // 85 + 0x04, 0x3C, 0xE0, 0x00, 0x00, 0xE0, 0x3C, 0x04, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x04, 0x00, 0x00, // 86 + 0x04, 0x3C, 0xE0, 0x00, 0xC0, 0x7C, 0x1C, 0xE0, 0x00, 0x80, 0xF0, 0x0C, 0x00, 0x00, 0x0C, 0x18, 0x0C, 0x00, 0x00, 0x04, 0x1C, 0x1C, 0x00, 0x00, // 87 + 0x00, 0x0C, 0xB8, 0x60, 0xB0, 0x1C, 0x04, 0x10, 0x18, 0x04, 0x00, 0x04, 0x1C, 0x10, // 88 + 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, // 89 + 0x04, 0x04, 0x84, 0x64, 0x3C, 0x0C, 0x10, 0x1C, 0x14, 0x10, 0x10, 0x10, // 90 + 0xFE, 0x02, 0x02, 0x7C, 0x40, 0x40, // 91 + 0x02, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, // 92 + 0x02, 0xFE, 0x40, 0x7C, // 93 + 0x60, 0x18, 0x04, 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x04, 0x00, 0x00, // 96 + 0x20, 0x90, 0x90, 0x90, 0xE0, 0x0C, 0x10, 0x10, 0x10, 0x1C, // 97 + 0xFE, 0x20, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x08, 0x10, 0x10, 0x18, 0x0C, // 98 + 0xE0, 0x30, 0x10, 0x10, 0x20, 0x0C, 0x18, 0x10, 0x10, 0x08, // 99 + 0xE0, 0x30, 0x10, 0x10, 0x20, 0xFE, 0x0C, 0x18, 0x10, 0x10, 0x08, 0x1C, // 100 + 0xE0, 0xB0, 0x90, 0x90, 0xB0, 0xE0, 0x0C, 0x18, 0x10, 0x10, 0x10, 0x10, // 101 + 0x10, 0xFC, 0x12, 0x12, 0x00, 0x1C, 0x00, 0x00, // 102 + 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x6C, 0x94, 0x94, 0x94, 0x90, 0x60, // 103 + 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 104 + 0xF4, 0x1C, // 105 + 0x00, 0xF4, 0x80, 0xFC, // 106 + 0xFE, 0xC0, 0x60, 0x30, 0x10, 0x1C, 0x00, 0x04, 0x18, 0x10, // 107 + 0xFE, 0x1C, // 108 + 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 109 + 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 110 + 0xE0, 0x30, 0x10, 0x10, 0x30, 0xE0, 0x0C, 0x18, 0x10, 0x10, 0x18, 0x0C, // 111 + 0xF0, 0x20, 0x10, 0x10, 0x30, 0xE0, 0xFC, 0x08, 0x10, 0x10, 0x18, 0x0C, // 112 + 0xE0, 0x30, 0x10, 0x10, 0x20, 0xF0, 0x0C, 0x18, 0x10, 0x10, 0x08, 0xFC, // 113 + 0xF0, 0x20, 0x10, 0x10, 0x1C, 0x00, 0x00, 0x00, // 114 + 0x60, 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x0C, // 115 + 0x10, 0xFC, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x10, // 116 + 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x10, 0x10, 0x08, 0x1C, // 117 + 0x30, 0xE0, 0x00, 0x00, 0xE0, 0x10, 0x00, 0x04, 0x1C, 0x1C, 0x00, 0x00, // 118 + 0x10, 0xF0, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0xF0, 0x10, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x00, // 119 + 0x00, 0x30, 0xC0, 0xC0, 0x30, 0x10, 0x10, 0x18, 0x04, 0x04, 0x18, 0x10, // 120 + 0x10, 0xF0, 0x80, 0x00, 0xC0, 0x30, 0x00, 0x00, 0xDC, 0x38, 0x04, 0x00, // 121 + 0x10, 0x90, 0x70, 0x30, 0x18, 0x14, 0x10, 0x10, // 122 + 0x40, 0xBE, 0x02, 0x00, 0x7C, 0x40, // 123 + 0xFE, 0xFC, // 124 + 0x02, 0xBE, 0x40, 0x40, 0x7C, 0x00, // 125 + 0x30, 0x08, 0x18, 0x20, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x14, 0x54, 0x74, 0x04, 0xFC, 0x1C, 0x10, 0x10, 0x14, 0x10, 0x10, 0x1C // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri15.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri15.h new file mode 100644 index 0000000..4189e9d --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Callibri15.h @@ -0,0 +1,161 @@ +/* + * + * Callibri15 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Callibri15.h + * Date : 10.11.2012 + * Font size in bytes : 8277 + * Font width : 10 + * Font height : 15 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Callibri15_H +#define _Callibri15_H + +#define Callibri15_WIDTH 10 +#define Callibri15_HEIGHT 15 + +GLCDFONTDECL(Callibri15) = { + 0x20, 0x55, // size + 0x0A, // width + 0x0F, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x04, 0x08, 0x06, 0x0A, 0x09, 0x01, 0x03, 0x03, + 0x05, 0x07, 0x02, 0x03, 0x01, 0x06, 0x06, 0x05, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x02, 0x06, 0x07, + 0x06, 0x05, 0x0C, 0x09, 0x07, 0x08, 0x08, 0x06, 0x05, 0x08, + 0x08, 0x01, 0x04, 0x06, 0x06, 0x0B, 0x08, 0x09, 0x06, 0x0A, + 0x07, 0x05, 0x07, 0x08, 0x09, 0x0B, 0x08, 0x07, 0x07, 0x03, + 0x06, 0x03, 0x07, 0x08, 0x03, 0x06, 0x06, 0x05, 0x06, 0x06, + 0x04, 0x07, 0x06, 0x01, 0x02, 0x05, 0x01, 0x09, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x05, 0x04, 0x06, 0x05, 0x09, 0x05, 0x05, + 0x04, 0x04, 0x01, 0x04, 0x07, 0x08, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x1A, // 33 + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, // 34 + 0x20, 0xA0, 0x7C, 0x20, 0x20, 0xA0, 0x7C, 0x20, 0x02, 0x1E, 0x02, 0x02, 0x02, 0x1E, 0x02, 0x02, // 35 + 0x38, 0x44, 0x44, 0x87, 0x84, 0x08, 0x08, 0x10, 0x70, 0x10, 0x10, 0x0E, // 36 + 0x38, 0x44, 0x44, 0x38, 0x80, 0x60, 0x10, 0x8C, 0x80, 0x00, 0x00, 0x00, 0x18, 0x04, 0x02, 0x00, 0x0E, 0x10, 0x10, 0x0E, // 37 + 0x80, 0x5C, 0x22, 0x62, 0x92, 0x0C, 0x00, 0xC0, 0x00, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x0A, 0x04, 0x0A, 0x10, // 38 + 0x1E, 0x00, // 39 + 0xF0, 0x0C, 0x02, 0x1E, 0x60, 0x80, // 40 + 0x02, 0x0C, 0xF0, 0x80, 0x60, 0x1E, // 41 + 0x24, 0x18, 0x7E, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x40, 0x38, // 44 + 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, // 45 + 0x00, 0x18, // 46 + 0x00, 0x00, 0x80, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, // 47 + 0xF8, 0x04, 0x04, 0x04, 0x04, 0xF8, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x0E, // 48 + 0x10, 0x08, 0xFC, 0x00, 0x00, 0x10, 0x10, 0x1E, 0x10, 0x10, // 49 + 0x08, 0x04, 0x04, 0x04, 0xC4, 0x38, 0x10, 0x18, 0x14, 0x12, 0x10, 0x10, // 50 + 0x08, 0x44, 0x44, 0x44, 0x44, 0xB8, 0x08, 0x10, 0x10, 0x10, 0x10, 0x0E, // 51 + 0x00, 0xC0, 0x30, 0x0C, 0xFC, 0x00, 0x06, 0x04, 0x04, 0x04, 0x1E, 0x04, // 52 + 0x00, 0x7C, 0x44, 0x44, 0x44, 0x84, 0x08, 0x10, 0x10, 0x10, 0x10, 0x0E, // 53 + 0xF0, 0x88, 0x44, 0x44, 0x44, 0x84, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x0E, // 54 + 0x04, 0x04, 0x04, 0xC4, 0x34, 0x0C, 0x00, 0x10, 0x0C, 0x02, 0x00, 0x00, // 55 + 0xB8, 0x44, 0x44, 0x44, 0x44, 0xB8, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x0E, // 56 + 0x78, 0x84, 0x84, 0x84, 0x44, 0xF8, 0x10, 0x10, 0x10, 0x10, 0x08, 0x06, // 57 + 0x60, 0x18, // 58 + 0x00, 0x60, 0x40, 0x38, // 59 + 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x00, 0x02, 0x02, 0x04, 0x04, 0x08, // 60 + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // 61 + 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x08, 0x04, 0x04, 0x02, 0x02, 0x00, // 62 + 0x04, 0x02, 0xC2, 0x42, 0x3C, 0x00, 0x00, 0x1A, 0x00, 0x00, // 63 + 0xC0, 0x30, 0x08, 0x88, 0x44, 0x24, 0x24, 0x44, 0xE4, 0x04, 0x08, 0xF0, 0x0E, 0x30, 0x20, 0x46, 0x48, 0x48, 0x44, 0x46, 0x48, 0x08, 0x04, 0x02, // 64 + 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x18, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x06, 0x18, // 65 + 0xFC, 0x44, 0x44, 0x44, 0x44, 0xB8, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0E, // 66 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, // 67 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x06, // 68 + 0xFC, 0x44, 0x44, 0x44, 0x44, 0x04, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, // 69 + 0xFC, 0x44, 0x44, 0x44, 0x44, 0x1E, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x08, 0x04, 0x04, 0x84, 0x84, 0x84, 0x88, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0E, // 71 + 0xFC, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xFC, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, // 72 + 0xFC, 0x1E, // 73 + 0x00, 0x00, 0x00, 0xFC, 0x10, 0x10, 0x10, 0x0E, // 74 + 0xFC, 0x40, 0xA0, 0x10, 0x08, 0x04, 0x1E, 0x00, 0x00, 0x06, 0x08, 0x10, // 75 + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, // 76 + 0xFC, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0xFC, 0x1E, 0x00, 0x00, 0x00, 0x06, 0x18, 0x06, 0x00, 0x00, 0x00, 0x1E, // 77 + 0xFC, 0x04, 0x18, 0x60, 0x80, 0x00, 0x00, 0xFC, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x0C, 0x10, 0x1E, // 78 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x06, // 79 + 0xFC, 0x84, 0x84, 0x84, 0x84, 0x78, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0xF0, 0x00, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x26, 0x20, // 81 + 0xFC, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x0C, 0x10, // 82 + 0x38, 0x44, 0x44, 0x84, 0x08, 0x08, 0x10, 0x10, 0x10, 0x0E, // 83 + 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // 84 + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x06, // 85 + 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x18, 0x06, 0x00, 0x00, 0x00, // 86 + 0x1C, 0xE0, 0x00, 0x00, 0xE0, 0x1C, 0xE0, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0x02, 0x1C, 0x06, 0x00, 0x00, 0x00, 0x06, 0x1C, 0x02, 0x00, // 87 + 0x04, 0x08, 0x30, 0xC0, 0xC0, 0x30, 0x08, 0x04, 0x10, 0x08, 0x06, 0x00, 0x00, 0x06, 0x08, 0x10, // 88 + 0x04, 0x18, 0x60, 0x80, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // 89 + 0x04, 0x04, 0x04, 0xC4, 0x24, 0x14, 0x0C, 0x18, 0x14, 0x12, 0x10, 0x10, 0x10, 0x10, // 90 + 0xFE, 0x02, 0x02, 0xFE, 0x80, 0x80, // 91 + 0x06, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x60, // 92 + 0x02, 0x02, 0xFE, 0x80, 0x80, 0xFE, // 93 + 0x80, 0x60, 0x18, 0x04, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, // 96 + 0x40, 0x20, 0x20, 0x20, 0x20, 0xC0, 0x0C, 0x12, 0x12, 0x12, 0x0A, 0x1E, // 97 + 0xFE, 0x40, 0x20, 0x20, 0x20, 0xC0, 0x1E, 0x08, 0x10, 0x10, 0x10, 0x0E, // 98 + 0xC0, 0x20, 0x20, 0x20, 0x40, 0x0E, 0x10, 0x10, 0x10, 0x08, // 99 + 0xC0, 0x20, 0x20, 0x20, 0x40, 0xFE, 0x0E, 0x10, 0x10, 0x10, 0x08, 0x1E, // 100 + 0xC0, 0x20, 0x20, 0x20, 0x20, 0xC0, 0x0E, 0x12, 0x12, 0x12, 0x12, 0x12, // 101 + 0x20, 0xFC, 0x22, 0x22, 0x00, 0x1E, 0x00, 0x00, // 102 + 0xC0, 0x20, 0x20, 0x20, 0x20, 0xE0, 0x20, 0x6A, 0x94, 0x94, 0x94, 0x94, 0x92, 0x60, // 103 + 0xFE, 0x40, 0x20, 0x20, 0x20, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1E, // 104 + 0xE8, 0x1E, // 105 + 0x00, 0xE8, 0x80, 0x7E, // 106 + 0xFE, 0x00, 0x80, 0x40, 0x20, 0x1E, 0x02, 0x04, 0x08, 0x10, // 107 + 0xFE, 0x1E, // 108 + 0xE0, 0x40, 0x20, 0x20, 0xC0, 0x40, 0x20, 0x20, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, // 109 + 0xE0, 0x40, 0x20, 0x20, 0x20, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1E, // 110 + 0xC0, 0x20, 0x20, 0x20, 0x20, 0xC0, 0x0E, 0x10, 0x10, 0x10, 0x10, 0x0E, // 111 + 0xE0, 0x40, 0x20, 0x20, 0x20, 0xC0, 0xFE, 0x08, 0x10, 0x10, 0x10, 0x0E, // 112 + 0xC0, 0x20, 0x20, 0x20, 0x40, 0xE0, 0x0E, 0x10, 0x10, 0x10, 0x08, 0xFE, // 113 + 0xE0, 0x40, 0x20, 0x20, 0x1E, 0x00, 0x00, 0x00, // 114 + 0xC0, 0x20, 0x20, 0x20, 0x20, 0x10, 0x12, 0x12, 0x12, 0x0C, // 115 + 0x20, 0xF8, 0x20, 0x20, 0x00, 0x0E, 0x10, 0x10, // 116 + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0E, 0x10, 0x10, 0x10, 0x08, 0x1E, // 117 + 0x60, 0x80, 0x00, 0x80, 0x60, 0x00, 0x06, 0x18, 0x06, 0x00, // 118 + 0x60, 0x80, 0x00, 0x80, 0x60, 0x80, 0x00, 0x80, 0x60, 0x00, 0x06, 0x18, 0x06, 0x00, 0x06, 0x18, 0x06, 0x00, // 119 + 0x20, 0xC0, 0x00, 0xC0, 0x20, 0x10, 0x0C, 0x02, 0x0C, 0x10, // 120 + 0x60, 0x80, 0x00, 0x80, 0x60, 0x00, 0xC6, 0x38, 0x06, 0x00, // 121 + 0x20, 0x20, 0xA0, 0x60, 0x18, 0x16, 0x10, 0x10, // 122 + 0x80, 0x7C, 0x02, 0x02, 0x00, 0x7E, 0x80, 0x80, // 123 + 0xFE, 0xFE, // 124 + 0x02, 0x02, 0x7C, 0x80, 0x80, 0x80, 0x7E, 0x00, // 125 + 0x30, 0x08, 0x08, 0x10, 0x20, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x14, 0x94, 0x94, 0x64, 0x04, 0xFC, 0x1E, 0x10, 0x10, 0x14, 0x10, 0x10, 0x10, 0x1E // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper19.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper19.h new file mode 100644 index 0000000..0f45bf5 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper19.h @@ -0,0 +1,162 @@ +/* + * + * Cooper19 + * Cooper std black size20 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : cooper_std_black_size18.h + * Date : 10.11.2012 + * Font size in bytes : 19140 + * Font width : 10 + * Font height : 19 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Cooper19_H +#define _Cooper19_H + +#define Cooper19_WIDTH 10 +#define Cooper19_HEIGHT 19 + +GLCDFONTDECL(Cooper19) = { + 0x4A, 0xC4, // size + 0x0A, // width + 0x13, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x04, 0x04, 0x09, 0x07, 0x0A, 0x0F, 0x11, 0x04, 0x08, 0x08, + 0x08, 0x08, 0x05, 0x05, 0x04, 0x09, 0x0B, 0x0A, 0x0B, 0x0B, + 0x0B, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x04, 0x05, 0x09, 0x09, + 0x09, 0x09, 0x0C, 0x0F, 0x0C, 0x0D, 0x0F, 0x0D, 0x0D, 0x0F, + 0x0D, 0x06, 0x0C, 0x0F, 0x0C, 0x10, 0x10, 0x0E, 0x0D, 0x0E, + 0x0E, 0x0B, 0x0C, 0x0E, 0x10, 0x14, 0x0F, 0x0F, 0x0D, 0x06, + 0x09, 0x06, 0x09, 0x09, 0x05, 0x0A, 0x0C, 0x09, 0x0B, 0x0A, + 0x08, 0x0B, 0x0D, 0x06, 0x06, 0x0D, 0x06, 0x12, 0x0D, 0x0B, + 0x0B, 0x0B, 0x0A, 0x09, 0x09, 0x0D, 0x0C, 0x13, 0x0C, 0x0B, + 0x09, 0x07, 0x02, 0x07, 0x08, 0x09, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x78, 0xFC, 0xFC, 0x78, 0x30, 0x7B, 0x79, 0x30, 0x00, 0x00, 0x00, 0x00, // 33 + 0x78, 0xFC, 0xFC, 0x78, 0x00, 0x78, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0xE0, 0x20, 0xE0, 0x60, 0x00, 0x08, 0x69, 0x3F, 0x49, 0x7F, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0xC0, 0xE0, 0xF0, 0xF8, 0xB8, 0x30, 0x20, 0x70, 0xE0, 0xC0, 0x7B, 0xE7, 0xE7, 0xCF, 0xCF, 0xCF, 0xFF, 0x7E, 0x7E, 0x38, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0x30, 0x78, 0xFC, 0xE4, 0xCC, 0xFC, 0x78, 0x38, 0xC0, 0x30, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x38, 0x0C, 0x03, 0x18, 0x3C, 0x7E, 0x62, 0x7E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0xB0, 0xF8, 0xFC, 0xFC, 0xCC, 0xCC, 0x1C, 0x08, 0x80, 0xC0, 0xC0, 0xD8, 0xF8, 0xF8, 0x78, 0x30, 0x07, 0x1F, 0x3F, 0x3F, 0x7F, 0x78, 0x70, 0x60, 0x67, 0x63, 0x33, 0x3F, 0x3F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x78, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0xC0, 0xF8, 0xFC, 0xFE, 0x0F, 0x07, 0x03, 0x03, 0x07, 0x3F, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 40 + 0x03, 0x03, 0x07, 0x0F, 0xFE, 0xFC, 0xF8, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0x7F, 0x3F, 0x07, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 41 + 0x20, 0xB0, 0xF0, 0xFC, 0xFC, 0xF0, 0xB0, 0x30, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x3F, 0x3F, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7C, 0xF8, 0xF8, 0x70, 0x00, 0x40, 0x60, 0x20, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x78, 0x38, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3C, 0x0C, 0x80, 0xC0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x07, 0x1F, 0x3F, 0x3F, 0x78, 0x70, 0x70, 0x3F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x60, 0x60, 0xE0, 0xF0, 0xF0, 0xF0, 0x30, 0x00, 0x00, 0x20, 0x20, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0xC0, 0xE0, 0x60, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x60, 0x70, 0x78, 0x7E, 0x7F, 0x7F, 0x7F, 0x77, 0xF3, 0x78, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0xC0, 0x40, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x8C, 0x8E, 0x8F, 0xCF, 0xFF, 0xFF, 0xFC, 0x7C, 0x38, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x00, 0x78, 0x7C, 0x76, 0x73, 0x71, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, // 52 + 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x8E, 0x8F, 0x8F, 0x9E, 0xFE, 0xFE, 0xFC, 0xFC, 0x7C, 0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 53 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x88, 0x80, 0x80, 0x80, 0x00, 0x07, 0x1F, 0x3F, 0x7F, 0x79, 0x73, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xE0, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x01, 0x01, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0xE0, 0xF0, 0xF8, 0xF8, 0xD8, 0x98, 0x98, 0xF8, 0xF0, 0x60, 0x1C, 0x3E, 0x3F, 0x73, 0x63, 0x67, 0x67, 0x7F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0xE0, 0xE0, 0xF0, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x80, 0x07, 0x0F, 0x1F, 0x9F, 0xDC, 0xF8, 0xF8, 0xFF, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 57 + 0x80, 0xC0, 0xC0, 0x80, 0x31, 0x7B, 0x7B, 0x31, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x38, 0x7D, 0xFB, 0xFB, 0x71, 0x00, 0x40, 0x60, 0x20, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x06, 0x0E, 0x0F, 0x1F, 0x1B, 0x19, 0x31, 0x31, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x31, 0x31, 0x19, 0x1B, 0x1F, 0x0F, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x20, 0x78, 0x78, 0x3C, 0xCC, 0xFC, 0xFC, 0xF8, 0x70, 0x00, 0x00, 0x30, 0x7A, 0x7B, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0xC0, 0x30, 0x18, 0x88, 0x84, 0xC4, 0x44, 0xC4, 0xC4, 0x68, 0x18, 0xE0, 0x0F, 0x38, 0x2E, 0x2F, 0x4F, 0x44, 0x4E, 0x4F, 0x2F, 0x34, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x7C, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x78, 0x7F, 0x6F, 0x0D, 0x0C, 0x0D, 0x6F, 0x7F, 0x7F, 0x7F, 0x7C, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x8C, 0x8C, 0xFC, 0xFC, 0xF8, 0x38, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x61, 0x61, 0x7F, 0x7F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x3C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF0, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x78, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0x00, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x1C, 0x3C, 0xFC, 0xF8, 0xF8, 0xF0, 0xC0, 0x40, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x70, 0x3F, 0x3F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x8C, 0x8C, 0xEC, 0xCC, 0x1C, 0x1C, 0x10, 0x40, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x61, 0x61, 0x67, 0x63, 0x70, 0x78, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x00, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0xCC, 0x9C, 0x1C, 0x7C, 0x30, 0x40, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x63, 0x43, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x1C, 0x0C, 0x0C, 0x0C, 0x1C, 0x3C, 0x3C, 0x38, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x78, 0x70, 0x73, 0x7F, 0x3F, 0x3F, 0x0F, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x08, 0xFC, 0xFC, 0xFC, 0xFC, 0x8C, 0x80, 0x8C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x21, 0x01, 0x61, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x08, 0x1C, 0x3C, 0x7C, 0x7C, 0x60, 0x70, 0x7F, 0x3F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xE0, 0xFC, 0xFC, 0x1C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x67, 0x07, 0x0F, 0x3F, 0x7F, 0x7E, 0x7C, 0x70, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x70, 0x7C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0xC0, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x60, 0x7C, 0x7F, 0x7F, 0x61, 0x07, 0x1F, 0x7F, 0x1F, 0x07, 0x61, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x8C, 0xFC, 0xFC, 0x0C, 0x08, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x61, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x1C, 0x1C, 0x3C, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x78, 0x70, 0x70, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x9C, 0xFC, 0xF8, 0xF8, 0xF0, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x63, 0x23, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x1C, 0x1C, 0x3C, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x87, 0xDF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xBF, 0x9F, 0x9F, 0x8F, 0x87, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x00, // 81 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x8C, 0x8C, 0xFC, 0xFC, 0xFC, 0x78, 0x30, 0x00, 0x00, 0x70, 0x7F, 0x7F, 0x7F, 0x7F, 0x61, 0x01, 0x0F, 0x3F, 0x7F, 0x7F, 0x7E, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xCC, 0xCC, 0x98, 0x98, 0x38, 0x30, 0x3C, 0x39, 0x73, 0x63, 0x67, 0x67, 0x7F, 0x7F, 0x3F, 0x3F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x78, 0x3C, 0x1C, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x1C, 0x3C, 0x38, 0x00, 0x00, 0x20, 0x70, 0x7F, 0x7F, 0x7F, 0x7F, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0xFC, 0xFC, 0xFC, 0x0C, 0x00, 0x0F, 0x1F, 0x3F, 0x3F, 0x78, 0x70, 0x70, 0x70, 0x38, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x08, 0x0C, 0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0xC8, 0x00, 0x00, 0xC8, 0xFC, 0x7C, 0x1C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7F, 0x7F, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x08, 0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0x80, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0x80, 0x8C, 0xFC, 0xFC, 0x1C, 0x0C, 0x00, 0x00, 0x01, 0x07, 0x3F, 0x7F, 0x7F, 0x3F, 0x0F, 0x01, 0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x08, 0x1C, 0x3C, 0x7C, 0xFC, 0xFC, 0xFC, 0xE8, 0xEC, 0x7C, 0x3C, 0x1C, 0x0C, 0x0C, 0x00, 0x60, 0x60, 0x70, 0x78, 0x7F, 0x2F, 0x07, 0x7F, 0x7F, 0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x08, 0x18, 0x3C, 0x7C, 0xFC, 0xFC, 0xF8, 0xE8, 0xC0, 0xF8, 0xFC, 0x3C, 0x1C, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x20, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x70, 0x7C, 0x1C, 0x0C, 0x88, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0x3C, 0x0C, 0x00, 0x40, 0x70, 0x7C, 0x7F, 0x7F, 0x7F, 0x7F, 0x67, 0x61, 0x60, 0x70, 0x7C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 91 + 0x0C, 0x1C, 0x78, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, // 92 + 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 93 + 0x00, 0x00, 0xC0, 0xF8, 0x38, 0xF8, 0xC0, 0x00, 0x00, 0x0C, 0x0F, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // 95 + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x38, 0x7B, 0x7D, 0x7D, 0x64, 0x3F, 0x7F, 0x7F, 0x7F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x10, 0xF8, 0xF8, 0xF8, 0xFC, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x61, 0x61, 0x63, 0x3F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x0E, 0x3F, 0x3F, 0x7F, 0x78, 0x70, 0x71, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC8, 0xF8, 0xFC, 0xFC, 0xFC, 0x00, 0x0E, 0x3F, 0x7F, 0x7F, 0x61, 0x20, 0x7F, 0x7F, 0x7F, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x0E, 0x3F, 0x3F, 0x7F, 0x76, 0x66, 0x66, 0x67, 0x37, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x30, 0xF8, 0xFC, 0xEC, 0xCC, 0x9C, 0xB8, 0x98, 0x00, 0x61, 0x7F, 0x7F, 0x7F, 0x7F, 0x71, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x80, 0xC0, 0xC0, 0x40, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0x60, 0x9B, 0xFF, 0xFF, 0x77, 0x74, 0x74, 0x74, 0xF7, 0xF3, 0xF1, 0x60, 0x00, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x20, 0x00, // 103 + 0x18, 0xF8, 0xFC, 0xFC, 0xFC, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x41, 0x01, 0x43, 0x7F, 0x7F, 0x7F, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x98, 0x98, 0xDC, 0xDC, 0xC8, 0x00, 0x61, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x18, 0x98, 0x9C, 0xDC, 0xC8, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x60, 0x20, 0x20, // 106 + 0x10, 0xF8, 0xF8, 0xF8, 0xFC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x2F, 0x1F, 0x7F, 0x7F, 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x18, 0xF8, 0xFC, 0xFC, 0xFC, 0x00, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x41, 0x7F, 0x7F, 0x7F, 0x7F, 0x63, 0x41, 0x7F, 0x7F, 0x7F, 0x7F, 0x63, 0x01, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x61, 0x7F, 0x7F, 0x7F, 0x7F, 0x41, 0x01, 0x63, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x1E, 0x3F, 0x3F, 0x7F, 0x78, 0x60, 0x61, 0x3F, 0x3F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xC0, 0xC0, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x21, 0x61, 0x7F, 0x7F, 0x3F, 0x0F, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x1E, 0x3F, 0x7F, 0x7F, 0x70, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, // 113 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x61, 0x23, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x18, 0x73, 0x67, 0x6F, 0x7F, 0x7E, 0x3C, 0x1D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x3F, 0x7F, 0x7F, 0x7F, 0x70, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x3F, 0x7F, 0x7F, 0x7F, 0x60, 0x20, 0x20, 0x7F, 0x7F, 0x7F, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x7F, 0x7E, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x7F, 0x7E, 0x1E, 0x07, 0x0F, 0x3F, 0x7F, 0x7E, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x60, 0x71, 0x7F, 0x0F, 0x7F, 0x7F, 0x7E, 0x7B, 0x71, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC3, 0x8F, 0x3F, 0xFF, 0xFF, 0x7C, 0x1E, 0x07, 0x00, 0x00, 0x20, 0x60, 0x60, 0x60, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x61, 0x71, 0x7C, 0x7F, 0x7F, 0x7F, 0x67, 0x71, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x02, 0x02, 0x01, 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, // 123 + 0xFE, 0xFE, 0xFF, 0xFF, 0xE0, 0xE0, // 124 + 0x02, 0x02, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x01, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x06, 0x06, 0x0C, 0x0C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x1C, 0x24, 0xC4, 0x04, 0xC4, 0x24, 0x1C, 0xFC, 0x7F, 0x70, 0x48, 0x46, 0x41, 0x46, 0x48, 0x70, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper21.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper21.h new file mode 100644 index 0000000..a50f4be --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper21.h @@ -0,0 +1,162 @@ +/* + * + * Cooper21 + * Cooper std black size20 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : cooper21.h + * Date : 10.11.2012 + * Font size in bytes : 23979 + * Font width : 10 + * Font height : 21 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Cooper21_H +#define _Cooper21_H + +#define Cooper21_WIDTH 10 +#define Cooper21_HEIGHT 21 + +GLCDFONTDECL(Cooper21) = { + 0x5D, 0xAB, // size + 0x0A, // width + 0x15, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x05, 0x05, 0x0A, 0x09, 0x0B, 0x11, 0x12, 0x05, 0x0A, 0x09, + 0x08, 0x0A, 0x05, 0x06, 0x05, 0x0A, 0x0C, 0x0B, 0x0C, 0x0C, + 0x0C, 0x0B, 0x0D, 0x0C, 0x0C, 0x0C, 0x05, 0x05, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0F, 0x12, 0x0F, 0x0E, 0x10, 0x0F, 0x0E, 0x10, + 0x10, 0x09, 0x0E, 0x12, 0x0D, 0x12, 0x12, 0x0F, 0x0E, 0x0F, + 0x10, 0x0C, 0x0F, 0x11, 0x11, 0x16, 0x10, 0x10, 0x0E, 0x08, + 0x0A, 0x08, 0x0A, 0x0A, 0x05, 0x0C, 0x0D, 0x0B, 0x0E, 0x0B, + 0x09, 0x0C, 0x0E, 0x07, 0x06, 0x10, 0x08, 0x14, 0x0E, 0x0D, + 0x0E, 0x0E, 0x0B, 0x09, 0x0A, 0x0E, 0x0D, 0x15, 0x0D, 0x0D, + 0x0B, 0x08, 0x02, 0x08, 0x0A, 0x0A, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x78, 0xFC, 0xFC, 0xFC, 0x78, 0x60, 0xF1, 0xF3, 0xF1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0x78, 0xFC, 0xFC, 0xFC, 0x78, 0x78, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0xE0, 0x20, 0x00, 0xE0, 0x60, 0x00, 0x1B, 0xDB, 0xFF, 0x1F, 0x9B, 0xFF, 0x1F, 0x1B, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0xC0, 0xE0, 0xF0, 0xF0, 0xFC, 0xBC, 0x30, 0x70, 0x70, 0xF0, 0x40, 0x79, 0x77, 0xE7, 0xCF, 0xCF, 0xCF, 0xFF, 0xFF, 0x7E, 0x7E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0x70, 0xF8, 0xF8, 0xCC, 0x9C, 0xFC, 0xF8, 0x70, 0x80, 0xC0, 0x70, 0x38, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC1, 0x71, 0x18, 0x0E, 0x03, 0x39, 0x7C, 0xFC, 0xE6, 0xCE, 0xFE, 0x7C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x70, 0xF8, 0xF8, 0xFC, 0xFC, 0x8C, 0x8C, 0x1C, 0x18, 0x80, 0x80, 0xC0, 0xE8, 0xFC, 0xFC, 0xFC, 0x7C, 0x38, 0x0E, 0x3F, 0x7F, 0x7F, 0xFF, 0xF1, 0xE1, 0xCE, 0xCF, 0xC7, 0xE7, 0x7F, 0x7F, 0x7F, 0x3D, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x78, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0xC0, 0xF0, 0xFC, 0xFE, 0xFE, 0x1F, 0x07, 0x03, 0x03, 0x02, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x18, 0x18, 0x10, // 40 + 0x03, 0x03, 0x07, 0x1F, 0xFE, 0xFE, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x18, 0x18, 0x18, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, // 41 + 0x10, 0xB0, 0xF0, 0xFC, 0xFC, 0xF0, 0xB0, 0x30, 0x00, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x60, 0x78, 0x38, 0x08, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x1E, 0x1E, 0x1E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3C, 0x0C, 0x00, 0x80, 0xE0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x30, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xF0, 0xE0, 0xFF, 0x7F, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x40, 0x40, 0x60, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0x30, 0x20, 0x00, 0x40, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x81, 0xC1, 0xE1, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xE7, 0xE3, 0xF1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, // 50 + 0xC0, 0x40, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x0E, 0x0F, 0x9F, 0xFF, 0xFF, 0xFD, 0xFC, 0xF8, 0x70, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x08, 0x08, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x70, 0x7C, 0x7E, 0x73, 0x71, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 52 + 0x00, 0xC0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x0E, 0x1F, 0x1F, 0x1F, 0x3E, 0xFE, 0xFC, 0xFC, 0xFC, 0xF8, 0x70, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x08, 0x00, 0x00, // 53 + 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x30, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x7F, 0x7F, 0xFF, 0xF3, 0xE3, 0xE7, 0xFF, 0x7F, 0x7F, 0x3F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xE0, 0xF8, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x01, 0x01, 0x01, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0x98, 0x98, 0xF8, 0xF0, 0xF0, 0xE0, 0x18, 0x7C, 0x7F, 0xE7, 0xC7, 0xCF, 0xCF, 0xFF, 0xFF, 0x7F, 0x7E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x07, 0x0F, 0x1F, 0x1F, 0x9F, 0xDC, 0xF8, 0xFF, 0xFF, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 57 + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x71, 0xFB, 0xFB, 0xFB, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0xF1, 0xF3, 0xF3, 0xF3, 0xE1, 0x00, 0x60, 0x78, 0x38, 0x08, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x0C, 0x0E, 0x1E, 0x1F, 0x3F, 0x33, 0x33, 0x71, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x61, 0x71, 0x33, 0x33, 0x3F, 0x1F, 0x1E, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x70, 0x78, 0x78, 0x1C, 0xCC, 0xFC, 0xFC, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x60, 0xF3, 0xF3, 0xF3, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0xC0, 0x30, 0x18, 0x88, 0xC8, 0xE4, 0xE4, 0x64, 0xC4, 0xEC, 0xE8, 0x18, 0xF0, 0xE0, 0x07, 0x3F, 0x70, 0x5E, 0x5F, 0x9F, 0x89, 0x8C, 0x9E, 0x9F, 0x5F, 0x68, 0x2C, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7C, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xFC, 0xFF, 0xCF, 0x0D, 0x0C, 0x0C, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0x00, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0xF8, 0x70, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xC3, 0xFF, 0xFF, 0xFF, 0x7F, 0x7E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x3C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF8, 0xF0, 0x07, 0x1F, 0x3F, 0x7F, 0x7F, 0xFE, 0xF8, 0xF8, 0xF0, 0xF0, 0x70, 0x70, 0x78, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0x00, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x1C, 0x3C, 0xF8, 0xF8, 0xF8, 0xF0, 0xC0, 0x40, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x7F, 0x3F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0xCC, 0xCC, 0x1C, 0x3C, 0x38, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xC3, 0xCF, 0xC7, 0xE0, 0xF0, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0xCC, 0x9C, 0x1C, 0x7C, 0x78, 0x40, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x43, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x3C, 0x0C, 0x0C, 0x0C, 0x1C, 0x3C, 0x7C, 0x7C, 0x78, 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x7F, 0x7F, 0x7C, 0xF0, 0xE0, 0xE4, 0xE6, 0x7E, 0x7E, 0x3E, 0x1E, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x00, 0x18, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x18, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0x40, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0x03, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x08, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0x08, 0x38, 0x78, 0x7C, 0xF8, 0xF8, 0xC0, 0xE0, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x8C, 0xC0, 0xF8, 0xFC, 0x3C, 0x1C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x0F, 0x1F, 0x3F, 0x7F, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0x80, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xC3, 0x0F, 0x3F, 0x7F, 0x3F, 0x0F, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0xC0, 0x88, 0x0C, 0xFC, 0xFC, 0xFC, 0x1C, 0x08, 0x80, 0xE0, 0xFF, 0xFF, 0xFF, 0xE3, 0x43, 0x07, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x3C, 0x1C, 0x1C, 0x3C, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x07, 0x1F, 0x3F, 0x7F, 0x7F, 0xFE, 0xF0, 0xE0, 0xE0, 0xF0, 0x7F, 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x1C, 0xFC, 0xFC, 0xF8, 0xF8, 0xE0, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x06, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0x3C, 0x1C, 0x1C, 0x3C, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x0F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0xE0, 0xE1, 0xFF, 0x7F, 0x3F, 0x3F, 0x0F, 0x08, 0x08, 0x08, 0x18, 0x18, 0x38, 0x38, 0x38, 0x78, 0x78, 0x78, 0x70, 0x70, 0x30, 0x10, // 81 + 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0xF8, 0x70, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x03, 0x1F, 0x7F, 0xFF, 0xFE, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0xE0, 0xF8, 0xF8, 0xFC, 0xFC, 0xCC, 0xCC, 0x8C, 0x9C, 0x3C, 0x3C, 0x30, 0x78, 0x73, 0xE3, 0xC7, 0xC7, 0xCF, 0xCF, 0xFF, 0x7F, 0x7F, 0x7F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x60, 0x78, 0x7C, 0x3C, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x1C, 0x3C, 0x7C, 0x7C, 0x70, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0C, 0x08, 0x00, 0x00, 0x08, 0x0C, 0xFC, 0xFC, 0xFC, 0x0C, 0x08, 0x00, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0xF8, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x08, 0x1C, 0x3C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x80, 0x00, 0x00, 0xC8, 0xFC, 0xFC, 0x3C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0x7E, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x08, 0x1C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x80, 0x08, 0x9C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xC8, 0x00, 0x8C, 0xFC, 0xFC, 0x3C, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x03, 0x0F, 0x7F, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x08, 0x1C, 0x3C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xE8, 0xEC, 0x7C, 0x3C, 0x1C, 0x0C, 0x0C, 0x00, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFF, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x0C, 0x0C, 0x1E, 0x7E, 0xFE, 0xFE, 0xFC, 0xFC, 0xE8, 0xC0, 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x70, 0x7C, 0x3C, 0x1C, 0x8C, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7E, 0x1E, 0x0C, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xDF, 0xC7, 0xC1, 0xE0, 0xF0, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x10, // 91 + 0x0C, 0x3C, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x38, // 92 + 0x02, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, // 93 + 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x18, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 95 + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x60, 0x73, 0xFB, 0xFB, 0xF9, 0xC8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x10, 0xF8, 0xF8, 0xF8, 0xFC, 0xFC, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xC1, 0xC3, 0xFF, 0x7F, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x1E, 0x3F, 0x7F, 0x7F, 0xFF, 0xF0, 0xE0, 0xE1, 0xE3, 0x77, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xD0, 0xD8, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x1E, 0x7F, 0x7F, 0xFF, 0xFF, 0xE1, 0xC0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x0E, 0x3F, 0x7F, 0x7F, 0xFF, 0xF6, 0xE6, 0xE7, 0x67, 0x77, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x70, 0xF8, 0xFC, 0xCC, 0x8C, 0x1C, 0x3C, 0x38, 0x83, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x63, 0xF7, 0xFF, 0xFF, 0xCF, 0xC8, 0xC8, 0xCF, 0xE7, 0xC7, 0xC3, 0x80, 0x10, 0x38, 0x78, 0x68, 0x68, 0x68, 0x68, 0x78, 0x38, 0x38, 0x18, 0x08, // 103 + 0x18, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x98, 0x98, 0xD8, 0xDC, 0xDC, 0xC8, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x98, 0x98, 0xD8, 0xDC, 0xDC, 0xC8, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x78, 0x78, 0x78, 0x38, 0x18, // 106 + 0x20, 0x10, 0xF8, 0xF8, 0xF8, 0xF8, 0xFC, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x3F, 0x7F, 0xFF, 0xFD, 0xF8, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x10, 0x18, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x01, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x1C, 0x7F, 0x7F, 0xFF, 0xFF, 0xF0, 0xC0, 0xC3, 0xFF, 0x7F, 0x7F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xC0, 0xC0, 0x00, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x00, 0x38, 0x38, 0x78, 0x78, 0x78, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x1E, 0x7F, 0x7F, 0xFF, 0xFF, 0xE1, 0x40, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x78, 0x78, 0x78, 0x78, 0x78, 0x30, // 113 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x43, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x73, 0xEF, 0xCF, 0xDF, 0xFF, 0xFE, 0xFC, 0x7D, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xC0, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFF, 0xFE, 0x7C, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x01, 0x03, 0x0F, 0x3F, 0x7F, 0xFF, 0xFC, 0x3C, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFE, 0x7C, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, 0xF3, 0xFF, 0x0F, 0xDF, 0xFF, 0xFE, 0xFF, 0xF1, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x03, 0x0F, 0x3F, 0xFF, 0xFF, 0xFE, 0xF8, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x38, 0x78, 0x78, 0x60, 0x60, 0x38, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x83, 0xE1, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0xCF, 0xC3, 0xE1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x18, 0x10, 0x10, // 123 + 0xFE, 0xFE, 0xFF, 0xFF, 0xF8, 0xF8, // 124 + 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x10, 0x10, 0x18, 0x18, 0x18, 0x08, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x1E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1E, 0x1E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x1C, 0x34, 0xC4, 0x84, 0x84, 0xC4, 0x34, 0x1C, 0xFC, 0xFF, 0xE0, 0xB0, 0x8C, 0x87, 0x87, 0x8C, 0xB0, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper26.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper26.h new file mode 100644 index 0000000..2360306 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Cooper26.h @@ -0,0 +1,162 @@ +/* + * + * Cooper26 + * Cooper std black size24 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : cooper_std_black_size24.h + * Date : 10.11.2012 + * Font size in bytes : 34188 + * Font width : 10 + * Font height : 26 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Cooper26_H +#define _Cooper26_H + +#define Cooper26_WIDTH 10 +#define Cooper26_HEIGHT 26 + +GLCDFONTDECL(Cooper26) = { + 0x85, 0x8C, // size + 0x0A, // width + 0x1A, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x05, 0x05, 0x0C, 0x09, 0x0C, 0x14, 0x16, 0x05, 0x0A, 0x0A, + 0x09, 0x0B, 0x06, 0x07, 0x05, 0x0C, 0x0D, 0x0D, 0x0E, 0x0F, + 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0D, 0x05, 0x06, 0x0C, 0x0C, + 0x0C, 0x0B, 0x11, 0x14, 0x11, 0x11, 0x12, 0x10, 0x10, 0x13, + 0x13, 0x09, 0x0F, 0x14, 0x0F, 0x16, 0x14, 0x12, 0x10, 0x12, + 0x14, 0x0F, 0x12, 0x14, 0x15, 0x1A, 0x14, 0x13, 0x11, 0x09, + 0x0C, 0x09, 0x0C, 0x0C, 0x07, 0x0D, 0x0F, 0x0C, 0x0F, 0x0C, + 0x0A, 0x0E, 0x11, 0x08, 0x07, 0x12, 0x08, 0x18, 0x0F, 0x0E, + 0x10, 0x10, 0x0D, 0x0A, 0x0B, 0x10, 0x0F, 0x18, 0x0F, 0x0F, + 0x0D, 0x09, 0x03, 0x09, 0x0B, 0x0C, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xF0, 0xF8, 0xF8, 0xF8, 0xF0, 0x01, 0x8F, 0x9F, 0x8F, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xF0, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0xF8, 0xF0, 0x01, 0x07, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0xC0, 0x40, 0x00, 0xC0, 0xC0, 0x00, 0xCC, 0xCC, 0xFC, 0xFF, 0xCC, 0xFC, 0xFF, 0xCD, 0xCC, 0x00, 0x0E, 0x0F, 0x00, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x00, 0x80, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x8F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFC, 0xFC, 0xF8, 0xF9, 0xF3, 0xE3, 0xC3, 0x07, 0x0F, 0x1E, 0x1C, 0x7C, 0x7C, 0x7C, 0x1F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xC0, 0xF0, 0xF0, 0xF8, 0x18, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x80, 0xE0, 0x70, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x87, 0xC7, 0x73, 0x3D, 0xCE, 0xF7, 0xF1, 0xF8, 0x18, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x00, 0x00, 0x00, 0x20, 0xB0, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0x70, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x07, 0x02, 0x70, 0x3C, 0x1E, 0x1F, 0x9F, 0xFF, 0xFF, 0xFF, 0xF7, 0x63, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xF0, 0xF8, 0xF8, 0xF8, 0xF0, 0x01, 0x07, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0xE0, 0xF8, 0xFC, 0xFE, 0x7E, 0x0F, 0x07, 0x07, 0x07, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x78, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 + 0x07, 0x07, 0x07, 0x0F, 0x7E, 0xFE, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x70, 0x70, 0x70, 0x78, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0x60, 0xE0, 0xE0, 0xF8, 0xF8, 0xC0, 0xE0, 0xE0, 0x40, 0x04, 0x0E, 0x07, 0x03, 0x07, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x01, 0x07, 0xCF, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x80, 0x80, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x60, 0x78, 0x7E, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x03, 0x0F, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x40, 0x00, 0x00, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x02, 0x06, 0x06, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x04, 0x07, 0x07, 0x83, 0xC3, 0xE3, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x87, 0x80, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0xE1, 0xE1, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE0, 0xC0, 0x80, 0x20, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0x78, 0x7F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x18, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x70, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xF3, 0xF3, 0xF3, 0xF3, 0xE3, 0xE3, 0xC3, 0x81, 0x18, 0x30, 0x70, 0x70, 0x70, 0x79, 0x7F, 0x7F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1C, 0x1C, 0x3E, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0x00, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x80, 0xC0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x87, 0xE7, 0xFF, 0xFF, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x7E, 0xFF, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xE7, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x3E, 0x7E, 0xFC, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x21, 0x31, 0x79, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x80, 0x80, 0x80, 0x00, 0x0F, 0x9F, 0xDF, 0x9F, 0x0F, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0F, 0x9F, 0xDF, 0xDF, 0xCF, 0x02, 0x01, 0x07, 0xCF, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF0, 0xF0, 0xF8, 0xF8, 0xDC, 0x9C, 0x9C, 0x8E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0E, 0x8E, 0x9C, 0x9C, 0xDC, 0xF8, 0xF8, 0xF0, 0xF0, 0x70, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x01, 0x03, 0x01, 0x81, 0x9C, 0xBE, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x80, 0xC0, 0x60, 0x30, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18, 0x30, 0xB0, 0x30, 0xE0, 0xC0, 0x00, 0x7E, 0xFF, 0x80, 0xF0, 0xF8, 0xFE, 0xFE, 0x4F, 0xF3, 0xFE, 0xFF, 0x7F, 0x63, 0x70, 0x38, 0x1F, 0x07, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFF, 0xFF, 0xE3, 0xE3, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x04, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x78, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0xE0, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x78, 0x78, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x83, 0x83, 0xC3, 0x81, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x78, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x7F, 0x7F, 0x3E, 0x00, 0x00, 0xC0, 0x80, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0x78, 0xF8, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x3C, 0x7F, 0x7F, 0x3E, 0x00, 0x01, 0x01, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x78, 0x78, 0xF8, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x20, 0x30, 0x38, 0xF8, 0xF8, 0xF9, 0xF9, 0xF8, 0x38, 0x30, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x20, 0x30, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x30, 0x00, 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x04, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x30, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x20, 0x80, 0xF0, 0xF8, 0xF8, 0x78, 0x78, 0x38, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7F, 0x7F, 0xFF, 0xFF, 0xFD, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x30, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0x7F, 0xFF, 0xFF, 0xFE, 0xFC, 0x7E, 0x1F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x78, 0x78, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x01, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x30, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x78, 0xF8, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x3C, 0x3F, 0x1F, 0x1F, 0x0F, 0x03, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x78, 0x78, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x18, 0x1C, 0x1D, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFF, 0xFF, 0xE7, 0xE3, 0x63, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x78, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x1C, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xE1, 0xC0, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x80, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x78, 0xF8, 0xF8, 0xF0, 0xC0, 0xE3, 0xCF, 0x9F, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF9, 0xF0, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x80, 0xF0, 0xF8, 0xF8, 0x78, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0xF8, 0xF8, 0xF0, 0xE0, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0x00, 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x30, 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x10, 0x00, 0x00, 0x00, 0x10, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x18, 0x18, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xFC, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x10, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x10, 0xF8, 0xF8, 0xF8, 0x78, 0x10, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFC, 0x7F, 0x1F, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFE, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x10, 0x30, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x80, 0x90, 0xF8, 0xF8, 0x78, 0x38, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xE3, 0xF7, 0xFF, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x04, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x18, 0x38, 0x78, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0xE0, 0xF0, 0xF8, 0x78, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x3C, 0x08, 0x00, 0x01, 0x01, 0x81, 0xE0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0xC0, 0xC0, 0xC0, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0x18, 0x78, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x7E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x06, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0x70, 0x70, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3F, 0x0F, 0x03, 0x03, 0x0F, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x08, 0x1C, 0x1C, 0x3C, 0x3C, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCE, 0xEE, 0xE7, 0x63, 0x63, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x40, 0x60, 0xF0, 0xF0, 0xF0, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0F, 0x1F, 0xFF, 0xFF, 0xFE, 0xFE, 0x78, 0x00, 0x00, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFE, 0xFE, 0xCF, 0x87, 0x07, 0x1F, 0x3E, 0xBE, 0x1C, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0xF0, 0xFC, 0xFE, 0xFE, 0xFF, 0x0F, 0x07, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFE, 0xFF, 0x77, 0x77, 0x7F, 0x7E, 0x7E, 0x7C, 0x78, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0xC0, 0xF0, 0xF0, 0xF8, 0x38, 0x38, 0x78, 0xF8, 0xF0, 0xF0, 0x1D, 0x1F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x1C, 0x1C, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x7C, 0xFE, 0xFE, 0xFF, 0xC3, 0xC3, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x03, 0x30, 0x7F, 0x7F, 0xFF, 0xFF, 0xDE, 0xDE, 0xDE, 0xDE, 0xFE, 0x7E, 0x7E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0x40, 0x70, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x04, 0x06, 0x0F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x04, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x60, 0x70, 0x70, 0x70, 0x78, 0x70, 0x30, 0x00, 0x04, 0x0E, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x60, 0x70, 0x70, 0x70, 0x78, 0x70, 0x30, 0x08, 0x0E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0xE0, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 + 0x40, 0x60, 0xF0, 0xF0, 0xF0, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xC7, 0x87, 0x02, 0x00, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x20, 0x70, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x06, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0C, 0x06, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x04, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x06, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0C, 0x0E, 0x1F, 0xFF, 0xFF, 0xFE, 0xFE, 0xF8, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x04, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFE, 0xFE, 0x87, 0x07, 0x0F, 0x1F, 0xFF, 0xFE, 0xFE, 0xFC, 0xF0, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0x20, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x4E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0x0F, 0x07, 0x07, 0x0F, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x4E, 0x6E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x04, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xBE, 0x7E, 0x7F, 0xFF, 0xF7, 0xE7, 0xEF, 0xDF, 0x9E, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x0E, 0x06, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xE0, 0x7B, 0x3F, 0x0F, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0xE2, 0xF7, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x7B, 0x1F, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x07, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xFF, 0xDF, 0x07, 0x03, 0x03, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x04, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0xE0, 0xF2, 0x7F, 0x0F, 0x07, 0x03, 0x10, 0x78, 0xF8, 0xF8, 0xF0, 0xE3, 0x7F, 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F, 0x8F, 0xC7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x87, 0x80, 0x04, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x18, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 + 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, // 124 + 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xF0, 0xF0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xF8, 0x38, 0x68, 0x88, 0x08, 0x08, 0x08, 0x08, 0x88, 0x68, 0x38, 0xF8, 0xFF, 0x00, 0x00, 0xC1, 0x63, 0x1C, 0x1C, 0x63, 0xC1, 0x00, 0x00, 0xFF, 0x0F, 0x0E, 0x0B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0B, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Corsiva_12.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Corsiva_12.h new file mode 100644 index 0000000..3e744ba --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Corsiva_12.h @@ -0,0 +1,162 @@ +/* + * + * Corsiva_12 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : corsiva_12.h + * Date : 29.01.2005 + * Font size in bytes : 5690 + * Font width : 10 + * Font height : 11 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef CORSIVA_12_H +#define CORSIVA_12_H + +#define CORSIVA_12_WIDTH 10 +#define CORSIVA_12_HEIGHT 11 + +GLCDFONTDECL(Corsiva_12) = { + 0x16, 0x3A, // size + 0x0A, // width + 0x0B, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x03, 0x02, 0x02, 0x06, 0x05, 0x07, 0x09, 0x01, 0x03, 0x04, + 0x02, 0x05, 0x02, 0x03, 0x01, 0x05, 0x05, 0x04, 0x05, 0x04, + 0x05, 0x06, 0x05, 0x05, 0x05, 0x05, 0x02, 0x03, 0x05, 0x05, + 0x05, 0x04, 0x07, 0x07, 0x07, 0x06, 0x08, 0x07, 0x07, 0x07, + 0x0A, 0x05, 0x06, 0x09, 0x07, 0x09, 0x0A, 0x06, 0x07, 0x09, + 0x09, 0x06, 0x08, 0x08, 0x08, 0x0B, 0x09, 0x09, 0x07, 0x03, + 0x03, 0x04, 0x03, 0x06, 0x02, 0x04, 0x04, 0x04, 0x06, 0x04, + 0x06, 0x06, 0x04, 0x03, 0x04, 0x06, 0x03, 0x06, 0x04, 0x04, + 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x06, 0x08, 0x07, 0x05, + 0x06, 0x03, 0x01, 0x04, 0x05, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0x80, 0x3E, 0x00, 0x00, // 33 + 0x08, 0x06, 0x00, 0x00, // 34 + 0xA0, 0x78, 0xAE, 0x78, 0x2E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0x8C, 0xF2, 0xBF, 0x62, 0x00, 0x20, 0x00, 0x00, 0x00, // 36 + 0x1C, 0x92, 0x7E, 0x0C, 0xE2, 0x90, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x70, 0xC8, 0xA8, 0xB8, 0x6C, 0xBE, 0x02, 0xC2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, // 38 + 0x08, 0x00, // 39 + 0xE0, 0x18, 0x06, 0x60, 0x80, 0x00, // 40 + 0x00, 0x00, 0xC3, 0x3C, 0x40, 0x20, 0x00, 0x00, // 41 + 0x0C, 0x0F, 0x00, 0x00, // 42 + 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x80, 0x40, 0x20, // 44 + 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // 45 + 0x80, 0x00, // 46 + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, // 47 + 0x78, 0x84, 0x82, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x80, 0x88, 0xFC, 0x86, 0x00, 0x00, 0x00, 0x00, // 49 + 0xC0, 0xC4, 0xA2, 0x92, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0xC0, 0x80, 0xDA, 0x76, 0x00, 0x00, 0x00, 0x00, // 51 + 0x20, 0x30, 0xA8, 0x7E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x80, 0x80, 0x84, 0x4A, 0x32, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x70, 0xAC, 0x94, 0x72, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xC4, 0x32, 0x0A, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0xE0, 0xAC, 0x92, 0x6A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0x9C, 0x52, 0x72, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x80, 0x08, 0x00, 0x00, // 58 + 0x00, 0x80, 0x08, 0x40, 0x20, 0x00, // 59 + 0x30, 0x30, 0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x48, 0x48, 0x48, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x80, 0x36, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, // 63 + 0x70, 0xCC, 0xB4, 0xAA, 0xBA, 0x62, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x80, 0x4C, 0x32, 0x2E, 0xFE, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0x38, 0x24, 0x86, 0xFA, 0x8E, 0x8A, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0xF0, 0x8C, 0x04, 0x02, 0x82, 0x0C, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 67 + 0x38, 0x4C, 0x86, 0xEA, 0x9A, 0x82, 0x46, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x38, 0x84, 0xE2, 0x9E, 0x92, 0xBA, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x1C, 0x86, 0xE2, 0x9E, 0x12, 0x3A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x70, 0x8C, 0x84, 0x82, 0xD2, 0x32, 0x16, 0x00, 0x80, 0x80, 0xC0, 0x20, 0x00, 0x00, // 71 + 0xC0, 0x8C, 0xC2, 0x3A, 0x16, 0x90, 0xF8, 0x86, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x80, 0xC0, 0xFA, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x0C, 0xC2, 0x3A, 0x06, 0x60, 0x40, 0x40, 0x20, 0x00, 0x00, // 74 + 0x8C, 0x82, 0xF2, 0x1E, 0x78, 0x88, 0x06, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x40, 0x40, // 75 + 0x80, 0xC0, 0xB8, 0x84, 0x82, 0x82, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x80, 0x9C, 0x62, 0x1E, 0xF8, 0x60, 0x90, 0xFC, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x80, 0x0C, 0xE2, 0x12, 0x0E, 0xF0, 0x70, 0x0C, 0x02, 0x02, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x78, 0xC4, 0x82, 0x82, 0x46, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x38, 0xCC, 0x86, 0xFA, 0x92, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x78, 0xC4, 0x82, 0x82, 0x42, 0x26, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xC0, 0x80, 0x80, 0x40, // 81 + 0x38, 0xA4, 0x86, 0xFA, 0x32, 0xD2, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x40, 0x40, // 82 + 0x80, 0x00, 0x0C, 0x92, 0xE2, 0x0E, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, // 83 + 0x1C, 0x86, 0x82, 0xF2, 0x8E, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x0C, 0x7A, 0x86, 0x80, 0x80, 0x40, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x0C, 0x06, 0xFE, 0x42, 0x20, 0x10, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x0C, 0x06, 0xFE, 0x32, 0x08, 0x04, 0xFE, 0x20, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x80, 0x40, 0x22, 0x1E, 0xF4, 0x82, 0x01, 0x01, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x1C, 0x04, 0x82, 0xC6, 0xBC, 0x8C, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x80, 0xC0, 0xA6, 0x92, 0x8A, 0x86, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0x00, 0xF0, 0x0F, 0xC0, 0xA0, 0x00, // 91 + 0x07, 0xFC, 0x80, 0x00, 0x00, 0x60, // 92 + 0x00, 0x00, 0xF1, 0x0F, 0x80, 0xE0, 0x00, 0x00, // 93 + 0x04, 0x02, 0x04, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0xE0, 0x90, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, // 97 + 0xE0, 0x9E, 0x49, 0x39, 0x00, 0x00, 0x00, 0x00, // 98 + 0xE0, 0x90, 0x88, 0x48, 0x00, 0x00, 0x00, 0x00, // 99 + 0xE0, 0x90, 0x48, 0xF8, 0x4E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0xF0, 0xB0, 0xA8, 0x58, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x90, 0x78, 0x16, 0x01, 0x01, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0xE0, 0x90, 0x88, 0xE8, 0x18, 0xE0, 0x80, 0x80, 0xC0, 0x60, 0x00, // 103 + 0xE0, 0x1E, 0xD1, 0xB9, 0x00, 0x00, 0x00, 0x00, // 104 + 0xE0, 0x38, 0x02, 0x00, 0x00, 0x00, // 105 + 0x00, 0x90, 0x78, 0x02, 0x80, 0x60, 0x00, 0x00, // 106 + 0xE0, 0x3E, 0xE9, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x40, 0x40, // 107 + 0xE0, 0x9C, 0x42, 0x00, 0x00, 0x00, // 108 + 0xC8, 0x38, 0xD0, 0x38, 0xF0, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0xE8, 0x18, 0xD0, 0xB8, 0x00, 0x00, 0x00, 0x00, // 110 + 0xF0, 0x88, 0xC8, 0x38, 0x00, 0x00, 0x00, 0x00, // 111 + 0x88, 0xF8, 0x90, 0x48, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x00, // 112 + 0xE0, 0x90, 0x88, 0xE8, 0x18, 0x00, 0x80, 0xC0, 0xA0, 0x00, // 113 + 0xC8, 0x38, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, // 114 + 0xC0, 0x98, 0xE8, 0x08, 0x00, 0x00, 0x00, 0x00, // 115 + 0xE8, 0x9C, 0x88, 0x40, 0x00, 0x00, 0x00, 0x00, // 116 + 0xE8, 0x98, 0xE0, 0x98, 0x00, 0x00, 0x00, 0x00, // 117 + 0x10, 0x08, 0xF8, 0x88, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x10, 0x08, 0xF8, 0x88, 0x40, 0xF8, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x80, 0xD0, 0x58, 0xF0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x60, // 120 + 0x10, 0x18, 0xF0, 0xC0, 0x38, 0x80, 0x40, 0x20, 0x00, 0x00, // 121 + 0x80, 0xD8, 0xA8, 0x98, 0xD8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0xA0, 0xD8, 0x07, 0xE0, 0x80, 0x00, // 123 + 0xFF, 0xE0, // 124 + 0x00, 0x00, 0xD1, 0x2F, 0x80, 0xC0, 0x20, 0x00, // 125 + 0x08, 0x08, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFF, 0x81, 0x81, 0x81, 0x81, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Iain5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Iain5x7.h new file mode 100644 index 0000000..ad824a1 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Iain5x7.h @@ -0,0 +1,175 @@ +/* + * + * Iain5x7 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Iain5x7.h + * Date : 28.12.2010 + * Font size in bytes : 2461 + * Font width : 5 + * Font height : 7 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef IAIN5X7_H_INCLUDED +#define IAIN5X7_H_INCLUDED + +#define IAIN5X7_WIDTH 5 +#define IAIN5X7_HEIGHT 7 + +//#define SUBFONT + +GLCDFONTDECL(Iain5x7) = { + 0x09, 0x9D, // size + 0x05, // width + 0x07, // height + +#ifdef SUBFONT + 'A', + 63, +#else + 0x20, // first char + 0x60, // char count +#endif + + // char widths +#ifndef SUBFONT + 0x01, 0x01, 0x03, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x02, + 0x05, 0x03, 0x01, 0x02, 0x01, 0x03, 0x04, 0x02, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x03, 0x03, + + 0x03, 0x04, 0x05, +#endif + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x03, 0x04, 0x05, 0x03, 0x05, 0x05, 0x05, 0x04, 0x05, + 0x04, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, + 0x03, 0x02, 0x03, 0x03, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x01, 0x03, 0x04, 0x01, 0x05, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x05, 0x03, 0x04, + 0x04, 0x03, 0x01, 0x03, 0x05, 0x00, + + // font data +#ifndef SUBFONT + 0x00, // 32 + 0xBE, // 33 ! + 0x0E, 0x00, 0x0E, // 34 " + 0x28, 0xFE, 0x28, 0xFE, 0x28, // 35 # + 0x48, 0x54, 0xFE, 0x54, 0x24, // 36 $ + 0x46, 0x26, 0x10, 0xC8, 0xC4, // 37 % + 0x6C, 0x92, 0xAA, 0x44, 0xA0, // 38 & + 0x06, // 39 ' + 0x3C, 0x42, // 40 ( + 0x42, 0x3C, // 41 ) + 0x00, 0x54, 0x38, 0x54, 0x00, // 42 * + 0x10, 0x38, 0x10, // 43 + + 0xC0, // 44 , + 0x10, 0x10, // 45 - + 0x40, // 46 . + 0xC0, 0x38, 0x06, // 47 / + 0x7C, 0x82, 0x82, 0x7C, // 48 0 + 0x04, 0xFE, // 49 1 + 0xC4, 0xA2, 0x92, 0x8C, // 50 2 + 0x82, 0x92, 0x92, 0x6C, // 51 3 + 0x30, 0x28, 0x24, 0xFE, // 52 4 + 0x4E, 0x92, 0x92, 0x72, // 53 5 + 0x78, 0x94, 0x92, 0x60, // 54 6 + 0x02, 0xE2, 0x12, 0x0E, // 55 7 + 0x6C, 0x92, 0x92, 0x6C, // 56 8 + 0x0C, 0x92, 0x52, 0x3C, // 57 9 + 0x6C, // 58 : + 0x6C, // 59 ; + 0x10, 0x28, 0x44, // 60 < + 0x28, 0x28, 0x28, // 61 = + 0x44, 0x28, 0x10, // 62 > + 0x04, 0xA2, 0x12, 0x0C, // 63 ? + 0x64, 0x92, 0xF2, 0x82, 0x7C, // 64 @ +#endif + 0xFC, 0x22, 0x22, 0xFC, // 65 A + 0xFE, 0x92, 0x92, 0x6C, // 66 B + 0x7C, 0x82, 0x82, 0x44, // 67 C + 0xFE, 0x82, 0x82, 0x7C, // 68 D + 0xFE, 0x92, 0x92, 0x82, // 69 E + 0xFE, 0x12, 0x12, 0x02, // 70 F + 0x7C, 0x82, 0xA2, 0x64, // 71 G + 0xFE, 0x10, 0x10, 0xFE, // 72 H + 0x82, 0xFE, 0x82, // 73 I + 0x40, 0x80, 0x80, 0x7E, // 74 J + 0xFE, 0x10, 0x28, 0x44, 0x82, // 75 K + 0xFE, 0x80, 0x80, // 76 L + 0xFE, 0x04, 0x08, 0x04, 0xFE, // 77 M + 0xFE, 0x08, 0x10, 0x20, 0xFE, // 78 N + 0x7C, 0x82, 0x82, 0x82, 0x7C, // 79 O + 0xFE, 0x12, 0x12, 0x0C, // 80 P + 0x7C, 0x82, 0xA2, 0x42, 0xBC, // 81 Q + 0xFE, 0x32, 0x52, 0x8C, // 82 R + 0x4C, 0x92, 0x92, 0x64, // 83 S + 0x02, 0xFE, 0x02, // 84 T + 0x7E, 0x80, 0x80, 0x7E, // 85 U + 0x3E, 0x40, 0x80, 0x40, 0x3E, // 86 V + 0xFE, 0x40, 0x30, 0x40, 0xFE, // 87 W + 0xC6, 0x28, 0x10, 0x28, 0xC6, // 88 X + 0x06, 0x08, 0xF0, 0x08, 0x06, // 89 Y + 0xC2, 0xA2, 0x92, 0x8A, 0x86, // 90 Z + 0xFE, 0x82, // 91 [ + 0x06, 0x38, 0xC0, // 92 '\' + 0x82, 0xFE, // 93 ] + 0x04, 0x02, 0x04, // 94 ^ + 0x80, 0x80, 0x80, // 95 _ + 0x06, // 96 ` + 0x40, 0xA8, 0xA8, 0x70, // 97 a + 0x7E, 0x90, 0x88, 0x70, // 98 b + 0x70, 0x88, 0x88, 0x50, // 99 c + 0x70, 0x88, 0x90, 0x7E, // 100 d + 0x70, 0xA8, 0xA8, 0x30, // 101 e + 0x10, 0xFC, 0x12, 0x04, // 102 f + 0x10, 0xA8, 0xA8, 0x78, // 103 g + 0xFE, 0x10, 0x08, 0xF0, // 104 h + 0xFA, // 105 i + 0x40, 0x80, 0x7A, // 106 j + 0xFE, 0x20, 0x50, 0x88, // 107 k + 0xFE, // 108 l + 0xF8, 0x08, 0x30, 0x08, 0xF0, // 109 m + 0xF8, 0x10, 0x08, 0xF0, // 110 n + 0x70, 0x88, 0x88, 0x70, // 111 o + 0xF8, 0x28, 0x28, 0x10, // 112 p + 0x10, 0x28, 0x28, 0xF8, // 113 q + 0xF8, 0x10, 0x08, 0x10, // 114 r + 0x90, 0xA8, 0xA8, 0x48, // 115 s + 0x08, 0x7E, 0x88, 0x40, // 116 t + 0x78, 0x80, 0x40, 0xF8, // 117 u + 0x78, 0x80, 0x78, // 118 v + 0x78, 0x80, 0x60, 0x80, 0x78, // 119 w + 0xD8, 0x20, 0xD8, // 120 x + 0x18, 0xA0, 0xA0, 0x78, // 121 y + 0xC8, 0xA8, 0xA8, 0x98, // 122 z + 0x10, 0x6C, 0x82, // 123 { + 0xEE, // 124 | + 0x82, 0x6C, 0x10, // 125 } + 0x10, 0x08, 0x10, 0x20, 0x10, // 126 ~ + // no defintion for 127 + +}; +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood22.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood22.h new file mode 100644 index 0000000..ab9dac9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood22.h @@ -0,0 +1,162 @@ +/* + * + * new Font + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Rooswood22.h + * Date : 10.11.2012 + * Font size in bytes : 21024 + * Font width : 10 + * Font height : 22 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + + +#ifndef _Rooswood22_H +#define _Rooswood22_H + +#define _Rooswood22_WIDTH 10 +#define _Rooswood22_HEIGHT 22 + +GLCDFONTDECL(Roosewood22) = { + 0x52, 0x20, // size + 0x0A, // width + 0x16, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x06, 0x06, 0x07, 0x09, 0x0A, 0x10, 0x0D, 0x04, 0x05, 0x07, + 0x07, 0x09, 0x05, 0x04, 0x04, 0x08, 0x0A, 0x07, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0C, 0x0B, 0x0B, 0x04, 0x04, 0x09, 0x09, + 0x09, 0x0A, 0x0E, 0x0C, 0x0C, 0x0B, 0x0C, 0x0B, 0x0A, 0x0B, + 0x0C, 0x08, 0x0A, 0x0D, 0x0B, 0x0E, 0x0C, 0x0B, 0x0B, 0x0D, + 0x0D, 0x0A, 0x0A, 0x0C, 0x0C, 0x0F, 0x0C, 0x0C, 0x0A, 0x06, + 0x05, 0x07, 0x09, 0x0A, 0x05, 0x0C, 0x0C, 0x0B, 0x0C, 0x0B, + 0x0A, 0x0B, 0x0C, 0x08, 0x0A, 0x0D, 0x0B, 0x0E, 0x0C, 0x0B, + 0x0B, 0x0D, 0x0D, 0x0A, 0x0A, 0x0C, 0x0C, 0x0F, 0x0C, 0x0C, + 0x0A, 0x08, 0x02, 0x06, 0x09, 0x0A, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xE0, 0xF0, 0xF0, 0x10, 0xE0, 0x80, 0xC1, 0x3F, 0x33, 0xFC, 0xFF, 0x07, 0x04, 0x08, 0x18, 0x1C, 0x1C, 0x00, // 33 + 0x70, 0xF8, 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0x00, 0x03, 0x07, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x80, 0x80, 0xC0, 0xB0, 0x80, 0xC0, 0xB0, 0x80, 0x18, 0x99, 0x7D, 0x1B, 0xD9, 0x3D, 0x1B, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0xC0, 0xE0, 0xB8, 0xF8, 0xF0, 0x60, 0xC0, 0x80, 0x00, 0x73, 0x8F, 0x4F, 0x75, 0x87, 0x6B, 0x7B, 0x27, 0x8F, 0xFE, 0x00, 0x00, 0x04, 0x08, 0x30, 0x38, 0x38, 0x1C, 0x1C, 0x0C, // 36 + 0xC0, 0xE0, 0xF0, 0xF0, 0xD0, 0xF0, 0x20, 0xC0, 0xC0, 0xB0, 0xD0, 0x70, 0x20, 0x00, 0x00, 0x00, 0x03, 0x05, 0x0B, 0x8F, 0x7F, 0x1B, 0xC4, 0xF7, 0x0B, 0x06, 0xFF, 0xF6, 0x06, 0x0C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x1C, 0x00, 0x00, 0x04, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 37 + 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3E, 0x1F, 0x7D, 0x57, 0x76, 0x8F, 0x1B, 0x43, 0x72, 0x3A, 0xDC, 0x98, 0x00, 0x04, 0x08, 0x08, 0x18, 0x18, 0x1C, 0x18, 0x08, 0x18, 0x1C, 0x1C, 0x0C, // 38 + 0x70, 0xE8, 0x08, 0xF0, 0x01, 0x02, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0xF0, 0xE8, 0xF8, 0xF0, 0xFF, 0x95, 0x7F, 0xFF, 0x00, 0x00, 0x0C, 0x10, 0x3C, 0x3C, // 40 + 0x08, 0xF8, 0x68, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xC0, 0x3F, 0xAD, 0xD5, 0xFF, 0xFE, 0x08, 0x14, 0x30, 0x38, 0x3C, 0x0C, 0x00, // 41 + 0xC0, 0xF0, 0xE8, 0xF8, 0xD8, 0x60, 0xE0, 0x00, 0x03, 0x05, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0x00, 0x34, 0x68, 0x70, 0x7C, 0x38, // 44 + 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x0C, 0x18, 0x1C, 0x1C, // 46 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0xF0, 0x60, 0xC0, 0x30, 0x8E, 0xE7, 0x7D, 0x1F, 0x03, 0x00, 0x0C, 0x18, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x3F, 0xFD, 0x07, 0x7F, 0xFF, 0x7F, 0x47, 0x3F, 0xC0, 0xFF, 0x00, 0x00, 0x04, 0x08, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x04, // 48 + 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x80, 0x7F, 0x3E, 0x0A, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 49 + 0xC0, 0xA0, 0xE0, 0xF0, 0xF0, 0xB0, 0xE0, 0xA0, 0xC0, 0x80, 0xC1, 0x33, 0x5D, 0x2F, 0x36, 0x7F, 0x7A, 0x1D, 0xFF, 0xC7, 0x0C, 0x18, 0x1C, 0x1C, 0x08, 0x08, 0x18, 0x1C, 0x1C, 0x0C, // 50 + 0xC0, 0xA0, 0xD0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x00, 0xF1, 0x0B, 0x4E, 0xFF, 0x4E, 0x77, 0x39, 0x8F, 0xFF, 0xE7, 0x00, 0x04, 0x08, 0x08, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x04, // 51 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0x50, 0xF0, 0xF0, 0xF0, 0xE0, 0x38, 0x64, 0x63, 0x72, 0xFD, 0x7F, 0x3D, 0x0D, 0x6F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, // 52 + 0x00, 0xE0, 0x30, 0xB0, 0xB0, 0xB0, 0xB0, 0x90, 0xF0, 0xC0, 0xF0, 0x0F, 0x0A, 0xFF, 0x4F, 0x7D, 0x7D, 0x93, 0xFD, 0xF1, 0x00, 0x04, 0x08, 0x08, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 53 + 0x00, 0xC0, 0xE0, 0x60, 0xB0, 0xF0, 0xD0, 0xE0, 0xC0, 0x80, 0x7F, 0x84, 0x3F, 0x77, 0xFB, 0x72, 0x4F, 0xBF, 0xFF, 0xE7, 0x00, 0x00, 0x04, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 54 + 0xF0, 0xF0, 0x70, 0xA0, 0xB0, 0xF0, 0x60, 0xE0, 0xD0, 0xF0, 0xF0, 0xE0, 0x07, 0x0F, 0x0F, 0xE7, 0x5E, 0x3B, 0xE5, 0xFE, 0x3F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, // 55 + 0x80, 0xE0, 0xE0, 0xF0, 0x70, 0xF0, 0x30, 0xE0, 0xE0, 0xC0, 0x00, 0x73, 0x8F, 0x76, 0xF5, 0xB7, 0xAE, 0x7B, 0x7B, 0x85, 0xFF, 0xE7, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 56 + 0x80, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x00, 0xE7, 0x1B, 0x97, 0xFF, 0xBF, 0x7B, 0x47, 0x39, 0xC6, 0xFF, 0x7E, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x04, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x8E, 0x71, 0xBE, 0x1C, 0x0C, 0x18, 0x1C, 0x1C, // 58 + 0x00, 0x00, 0x00, 0x00, 0x8E, 0x71, 0x7E, 0x98, 0x34, 0xF8, 0x70, 0x7C, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x18, 0x3C, 0x24, 0x66, 0x42, 0xC3, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0xC3, 0x42, 0x66, 0x24, 0x3C, 0x38, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0xC0, 0xA0, 0xD0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x03, 0x05, 0xDF, 0x36, 0x2F, 0xFB, 0x3C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x04, 0x08, 0x18, 0x1C, 0x1C, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x78, 0xFE, 0x07, 0xF1, 0xF8, 0x8C, 0x44, 0x22, 0xFE, 0xFE, 0x82, 0x40, 0x63, 0x1E, 0x00, 0x04, 0x0C, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0xC0, 0x40, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x3C, 0x03, 0xE6, 0xE5, 0xEF, 0x77, 0x07, 0x3F, 0xF8, 0xC0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 65 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x00, 0x80, 0x80, 0x7F, 0x77, 0x0C, 0xFF, 0xFF, 0x77, 0x4F, 0xB5, 0xFF, 0xE7, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 66 + 0x80, 0x40, 0xE0, 0xB0, 0xF0, 0xB0, 0x60, 0xF0, 0xF0, 0xF0, 0xC0, 0x7F, 0xBD, 0x03, 0x7F, 0xFF, 0x80, 0x77, 0x1F, 0x9F, 0xFF, 0xCF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 67 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x80, 0x80, 0x82, 0x7F, 0x7F, 0x10, 0xFF, 0xFF, 0x60, 0x7F, 0x9F, 0xE0, 0xFF, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x04, // 68 + 0x30, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xB0, 0xF0, 0xF0, 0xC0, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0xFF, 0xFF, 0x7F, 0x17, 0xF7, 0xC7, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 69 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x80, 0x7F, 0x77, 0x0C, 0x7F, 0xFF, 0x1F, 0x1F, 0x07, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, // 70 + 0x80, 0x40, 0xE0, 0xB0, 0xF0, 0xB0, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0x7F, 0xFD, 0x07, 0x7F, 0xFF, 0xB8, 0x6F, 0x0F, 0xEF, 0xEF, 0x7F, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x00, // 71 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0xFF, 0xFF, 0x7F, 0x6E, 0x16, 0xFF, 0xFF, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, // 72 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0x7F, 0x3F, 0x10, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, // 73 + 0x00, 0x00, 0x00, 0x00, 0x70, 0xB0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x88, 0x08, 0x70, 0x60, 0x3F, 0x77, 0x9B, 0xFF, 0xFF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x00, // 74 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x80, 0x80, 0x7F, 0x3F, 0x14, 0xFB, 0xED, 0xF3, 0x4E, 0x3F, 0x63, 0xC0, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 75 + 0x30, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0x82, 0x7F, 0x7F, 0x10, 0x7F, 0xFF, 0x80, 0x60, 0xE0, 0xC0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 76 + 0x70, 0x50, 0xB0, 0xF0, 0x70, 0xF0, 0xE0, 0xA0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0x7F, 0x07, 0xFF, 0x8C, 0x77, 0x87, 0xFE, 0x7D, 0x1D, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 77 + 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x80, 0x80, 0x7F, 0x01, 0xFF, 0xF2, 0xBF, 0x0B, 0x07, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x04, 0x18, 0x18, 0x1C, 0x1C, 0x00, // 78 + 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0x40, 0xC0, 0x00, 0x7F, 0xFA, 0x07, 0x7F, 0xFF, 0x7F, 0x87, 0x7D, 0x86, 0xFF, 0xFF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 79 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x82, 0x7D, 0x7F, 0x04, 0xF7, 0xF7, 0x37, 0x35, 0x3B, 0x1F, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x00, 0x00, 0x00, // 80 + 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x03, 0xEF, 0xEF, 0x5F, 0xC7, 0x3D, 0x06, 0xFF, 0x7E, 0xC0, 0x80, 0x00, 0x00, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x1C, 0x1C, 0x0C, // 81 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0x7F, 0xFF, 0xFF, 0x1D, 0x73, 0x3F, 0x17, 0xE0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x08, 0x08, 0x18, 0x18, 0x1C, // 82 + 0xC0, 0xE0, 0x30, 0xF0, 0xF0, 0x70, 0xD0, 0xF0, 0xF0, 0xC0, 0xF3, 0x2E, 0x4D, 0x9A, 0xB7, 0x6E, 0x5A, 0x35, 0x87, 0xFB, 0x0C, 0x1C, 0x18, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, // 83 + 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x07, 0x0C, 0x8F, 0x7F, 0x3D, 0x15, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x00, // 84 + 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x00, 0x00, 0x7F, 0x8D, 0x7F, 0xFF, 0x80, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, 0x00, // 85 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x3B, 0xCF, 0x74, 0x37, 0x0F, 0xE3, 0xFE, 0x7F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x04, 0x08, 0x18, 0x1C, 0x1C, 0x0C, 0x00, 0x00, 0x00, // 86 + 0x30, 0xF0, 0x30, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x07, 0x3B, 0xF4, 0x09, 0x87, 0xFF, 0xCC, 0x7F, 0x01, 0x07, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x1C, 0x1C, 0x04, 0x08, 0x18, 0x18, 0x0C, 0x00, 0x00, // 87 + 0x30, 0x30, 0x70, 0xF0, 0x70, 0xF0, 0xF0, 0x70, 0xF0, 0xB0, 0xD0, 0xF0, 0x00, 0x00, 0x80, 0x61, 0x1B, 0xED, 0xD7, 0x65, 0x1E, 0x67, 0xC1, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 88 + 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x01, 0x82, 0x7F, 0x2F, 0x14, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x10, 0x00, // 89 + 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x61, 0x1B, 0x67, 0x1A, 0xE7, 0xFB, 0xBE, 0x77, 0xF1, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 90 + 0xF8, 0xF8, 0xF8, 0xF8, 0x68, 0x78, 0xFF, 0x7D, 0xFF, 0xFF, 0x00, 0x00, 0x1C, 0x30, 0x34, 0x34, 0x34, 0x38, // 91 + 0x30, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, // 92 + 0x38, 0x78, 0x78, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x3D, 0xFF, 0xFF, 0x1C, 0x34, 0x34, 0x34, 0x30, 0x3C, 0x3C, // 93 + 0x00, 0x00, 0x80, 0xE0, 0x60, 0xE0, 0x80, 0x00, 0x00, 0x08, 0x0E, 0x03, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 95 + 0x06, 0x0B, 0x0E, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0xC0, 0x40, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x3C, 0x03, 0xE6, 0xE5, 0xEF, 0x77, 0x07, 0x3F, 0xF8, 0xC0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 97 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x00, 0x80, 0x80, 0x7F, 0x77, 0x0C, 0xFF, 0xFF, 0x77, 0x4F, 0xB5, 0xFF, 0xE7, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, // 98 + 0x80, 0x40, 0xE0, 0xB0, 0xF0, 0xB0, 0x60, 0xF0, 0xF0, 0xF0, 0xC0, 0x7F, 0xBD, 0x03, 0x7F, 0xFF, 0x80, 0x77, 0x1F, 0x9F, 0xFF, 0xCF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 99 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x80, 0x80, 0x82, 0x7F, 0x7F, 0x10, 0xFF, 0xFF, 0x60, 0x7F, 0x9F, 0xE0, 0xFF, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x04, // 100 + 0x30, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xB0, 0xF0, 0xF0, 0xC0, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0xFF, 0xFF, 0x7F, 0x17, 0xF7, 0xC7, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 101 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x80, 0x7F, 0x77, 0x0C, 0x7F, 0xFF, 0x1F, 0x1F, 0x07, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x00, 0x00, 0x00, // 102 + 0x80, 0x40, 0xE0, 0xB0, 0xF0, 0xB0, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0x7F, 0xFD, 0x07, 0x7F, 0xFF, 0xB8, 0x6F, 0x0F, 0xEF, 0xEF, 0x7F, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x00, // 103 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0xFF, 0xFF, 0x7F, 0x6E, 0x16, 0xFF, 0xFF, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, // 104 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0x7F, 0x3F, 0x10, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, // 105 + 0x00, 0x00, 0x00, 0x00, 0x70, 0xB0, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0x88, 0x08, 0x70, 0x60, 0x3F, 0x77, 0x9B, 0xFF, 0xFF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x00, // 106 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x80, 0x80, 0x7F, 0x3F, 0x14, 0xFB, 0xED, 0xF3, 0x4E, 0x3F, 0x63, 0xC0, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 107 + 0x30, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0x82, 0x7F, 0x7F, 0x10, 0x7F, 0xFF, 0x80, 0x60, 0xE0, 0xC0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 108 + 0x70, 0x50, 0xB0, 0xF0, 0x70, 0xF0, 0xE0, 0xA0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0x7F, 0x07, 0xFF, 0x8C, 0x77, 0x87, 0xFE, 0x7D, 0x1D, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, // 109 + 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x80, 0x80, 0x7F, 0x01, 0xFF, 0xF2, 0xBF, 0x0B, 0x07, 0xFF, 0xFF, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x04, 0x18, 0x18, 0x1C, 0x1C, 0x00, // 110 + 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xD0, 0xA0, 0x40, 0xC0, 0x00, 0x7F, 0xFA, 0x07, 0x7F, 0xFF, 0x7F, 0x87, 0x7D, 0x86, 0xFF, 0xFF, 0x00, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, 0x00, // 111 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x82, 0x7D, 0x7F, 0x04, 0xF7, 0xF7, 0x37, 0x35, 0x3B, 0x1F, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x00, 0x00, 0x00, // 112 + 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xD0, 0xA0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x03, 0xEF, 0xEF, 0x5F, 0xC7, 0x3D, 0x06, 0xFF, 0x7E, 0xC0, 0x80, 0x00, 0x00, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x1C, 0x1C, 0x0C, // 113 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x7F, 0x7F, 0x14, 0x7F, 0xFF, 0xFF, 0x1D, 0x73, 0x3F, 0x17, 0xE0, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x08, 0x08, 0x18, 0x18, 0x1C, // 114 + 0xC0, 0xE0, 0x30, 0xF0, 0xF0, 0x70, 0xD0, 0xF0, 0xF0, 0xC0, 0xF3, 0x2E, 0x4D, 0x9A, 0xB7, 0x6E, 0x5A, 0x35, 0x87, 0xFB, 0x0C, 0x1C, 0x18, 0x08, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x0C, // 115 + 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x07, 0x0C, 0x8F, 0x7F, 0x3D, 0x15, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x00, // 116 + 0x70, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x00, 0x00, 0x7F, 0x8D, 0x7F, 0xFF, 0x80, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, 0x00, // 117 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x3B, 0xCF, 0x74, 0x37, 0x0F, 0xE3, 0xFE, 0x7F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x04, 0x08, 0x18, 0x1C, 0x1C, 0x0C, 0x00, 0x00, 0x00, // 118 + 0x30, 0xF0, 0x30, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x07, 0x3B, 0xF4, 0x09, 0x87, 0xFF, 0xCC, 0x7F, 0x01, 0x07, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x1C, 0x1C, 0x04, 0x08, 0x18, 0x18, 0x0C, 0x00, 0x00, // 119 + 0x30, 0x30, 0x70, 0xF0, 0x70, 0xF0, 0xF0, 0x70, 0xF0, 0xB0, 0xD0, 0xF0, 0x00, 0x00, 0x80, 0x61, 0x1B, 0xED, 0xD7, 0x65, 0x1E, 0x67, 0xC1, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 120 + 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x01, 0x82, 0x7F, 0x2F, 0x14, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x18, 0x10, 0x00, // 121 + 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x80, 0x61, 0x1B, 0x67, 0x1A, 0xE7, 0xFB, 0xBE, 0x77, 0xF1, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, // 122 + 0x00, 0x00, 0xE0, 0xF0, 0x98, 0xF8, 0xF8, 0x60, 0x0C, 0x1C, 0xFF, 0x1B, 0x7F, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x14, 0x38, 0x20, // 123 + 0xFC, 0xFC, 0xFF, 0xFF, 0xFC, 0xFC, // 124 + 0x38, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xF3, 0x1F, 0xF4, 0xF7, 0x3C, 0x1C, 0x30, 0x30, 0x1C, 0x0C, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x08, 0x08, 0x18, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xF8, 0x38, 0x68, 0x88, 0x08, 0x08, 0x88, 0x68, 0x38, 0xF8, 0xFF, 0xC0, 0x60, 0x19, 0x0F, 0x0F, 0x19, 0x60, 0xC0, 0xFF, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood26.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood26.h new file mode 100644 index 0000000..20e6ca7 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Roosewood26.h @@ -0,0 +1,162 @@ +/* + * + * new Font + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : roosewood_std_size24 + * Date : 10.11.2012 + * Font size in bytes : 28312 + * Font width : 10 + * Font height : 26 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + + +#ifndef _Roosewood26_H +#define _Roosewood26_H + +#define _Roosewood26_WIDTH 10 +#define _Roosewood26_HEIGHT 26 + +GLCDFONTDECL(Roosewood26) = { + 0x6E, 0x98, // size + 0x0A, // width + 0x1A, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x07, 0x07, 0x09, 0x0B, 0x0C, 0x12, 0x10, 0x05, 0x06, 0x07, + 0x08, 0x0A, 0x06, 0x05, 0x05, 0x09, 0x0C, 0x09, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0B, 0x0E, 0x0D, 0x0D, 0x05, 0x05, 0x0A, 0x0A, + 0x0A, 0x0B, 0x10, 0x0E, 0x0E, 0x0D, 0x0D, 0x0B, 0x0C, 0x0D, + 0x0E, 0x08, 0x0B, 0x0E, 0x0C, 0x0F, 0x0D, 0x0D, 0x0D, 0x0F, + 0x0F, 0x0C, 0x0C, 0x0D, 0x0D, 0x11, 0x0D, 0x0D, 0x0C, 0x07, + 0x06, 0x08, 0x0A, 0x0C, 0x06, 0x0E, 0x0E, 0x0D, 0x0D, 0x0B, + 0x0C, 0x0D, 0x0E, 0x08, 0x0B, 0x0E, 0x0C, 0x0F, 0x0D, 0x0D, + 0x0D, 0x0F, 0x0F, 0x0C, 0x0C, 0x0D, 0x0D, 0x11, 0x0D, 0x0D, + 0x0C, 0x07, 0x02, 0x07, 0x0B, 0x0C, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xE0, 0xE0, 0xF0, 0xD0, 0x20, 0xC0, 0x80, 0x03, 0x7F, 0xBD, 0x83, 0xFC, 0xFF, 0x1F, 0x06, 0x09, 0x10, 0x39, 0x3F, 0x3F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xE0, 0xF0, 0x10, 0xE0, 0xE0, 0xF0, 0x10, 0xE0, 0xC0, 0x00, 0x07, 0x0F, 0x0F, 0x07, 0x07, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x60, 0x66, 0xE6, 0x7E, 0x67, 0x66, 0xE6, 0x7E, 0x67, 0x66, 0x06, 0x00, 0x04, 0x07, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0x40, 0xA0, 0xE0, 0xD8, 0xF8, 0xD8, 0xD0, 0xA0, 0xC0, 0x00, 0x00, 0xC7, 0x2F, 0x3D, 0x3B, 0xCB, 0x1F, 0xAF, 0x2D, 0x6E, 0x9F, 0x3F, 0xDE, 0x03, 0x04, 0x0C, 0x19, 0x3B, 0x60, 0x73, 0x7B, 0x39, 0x38, 0x1C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0x80, 0xE0, 0xE0, 0xF0, 0xF0, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x80, 0x60, 0x20, 0xE0, 0xE0, 0x40, 0x00, 0x00, 0x07, 0x1F, 0x3F, 0x37, 0x77, 0xF8, 0x7F, 0x1F, 0xCF, 0xE7, 0x39, 0x1E, 0xCF, 0xCB, 0x08, 0x10, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x1C, 0x32, 0x31, 0x3C, 0x0F, 0x03, 0x03, 0x0C, 0x18, 0x17, 0x37, 0x30, 0x38, 0x3C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xB0, 0xB0, 0x20, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7F, 0xBF, 0xC9, 0x1F, 0x6F, 0xD6, 0x3B, 0x67, 0x07, 0x04, 0xC4, 0xE4, 0x78, 0x60, 0x03, 0x05, 0x08, 0x11, 0x13, 0x33, 0x32, 0x38, 0x39, 0x30, 0x10, 0x33, 0x30, 0x38, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xE0, 0xF0, 0x10, 0xE0, 0xC0, 0x00, 0x07, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x80, 0xF0, 0xE8, 0xF8, 0xF8, 0xFF, 0xFC, 0x5F, 0xFF, 0xFF, 0x03, 0x03, 0x0F, 0x34, 0x47, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 + 0x28, 0xD8, 0xE8, 0xD8, 0x70, 0xE0, 0x80, 0x00, 0x01, 0xFE, 0x5B, 0xFF, 0x19, 0xFF, 0x18, 0x27, 0x60, 0x73, 0x7C, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0x80, 0xE0, 0xA0, 0xD0, 0xF0, 0x70, 0xC0, 0xC0, 0x01, 0x03, 0x07, 0x0B, 0x1F, 0x1F, 0x16, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xD1, 0xD1, 0xE2, 0xFE, 0x78, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x31, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xB0, 0xF0, 0xE0, 0x00, 0xC0, 0x38, 0x16, 0xEF, 0xFD, 0x3F, 0x07, 0x00, 0x1E, 0x31, 0x38, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0xC0, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xD0, 0xE0, 0xC0, 0xC0, 0x00, 0xFC, 0x0F, 0xF1, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x0F, 0xFF, 0x8D, 0xFF, 0x00, 0x03, 0x0D, 0x08, 0x11, 0x13, 0x33, 0x38, 0x3A, 0x1D, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0xC0, 0x40, 0xC0, 0xF0, 0xF0, 0x10, 0xF0, 0xC0, 0x00, 0x03, 0x06, 0xFE, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x00, 0x1C, 0x34, 0x33, 0x30, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x80, 0xC0, 0x60, 0xA0, 0xB0, 0xB0, 0x70, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0x07, 0xCF, 0xB6, 0x57, 0xBF, 0xE9, 0xDF, 0xEF, 0xEF, 0x78, 0xFF, 0x1E, 0x1F, 0x31, 0x30, 0x3A, 0x19, 0x11, 0x31, 0x31, 0x31, 0x38, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x80, 0xC0, 0x60, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0x83, 0x4F, 0x3E, 0x3C, 0xFF, 0x74, 0xCF, 0x73, 0xEB, 0x3C, 0xDF, 0x9E, 0x03, 0x0C, 0x18, 0x13, 0x13, 0x33, 0x31, 0x31, 0x38, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0x50, 0xF0, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0xE0, 0x18, 0x2E, 0x33, 0x3D, 0x3F, 0xF9, 0x29, 0x3F, 0x3F, 0x40, 0x80, 0x01, 0x03, 0x03, 0x1F, 0x33, 0x30, 0x31, 0x30, 0x33, 0x3F, 0x3B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x90, 0xF0, 0xC0, 0xC8, 0x37, 0x1F, 0x15, 0xFF, 0x9F, 0xFB, 0x0D, 0xFF, 0x0D, 0xF9, 0xE1, 0x03, 0x04, 0x08, 0x11, 0x33, 0x33, 0x31, 0x39, 0x18, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x80, 0xC0, 0x60, 0xE0, 0xD0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xFC, 0x1F, 0xF1, 0x0F, 0xCE, 0xF7, 0x6F, 0xFD, 0xEF, 0x1F, 0xFF, 0x00, 0x03, 0x0D, 0x18, 0x11, 0x33, 0x32, 0x33, 0x38, 0x1C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xF0, 0x10, 0xF0, 0xE0, 0x60, 0x70, 0xF0, 0x70, 0x60, 0xE0, 0xD0, 0xF0, 0xF0, 0xE0, 0x0F, 0x18, 0x1F, 0x1E, 0x1F, 0xF3, 0x8F, 0x7F, 0x8B, 0xF5, 0xFF, 0x1E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x30, 0x31, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0xC0, 0x27, 0x1F, 0xD8, 0xF7, 0x4F, 0x5A, 0x6D, 0xE7, 0xF3, 0x1C, 0xFF, 0x8F, 0x03, 0x0C, 0x18, 0x11, 0x13, 0x32, 0x32, 0x32, 0x39, 0x39, 0x1E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0x40, 0xE0, 0x70, 0xB0, 0xF0, 0xF0, 0xE0, 0xA0, 0x40, 0xC0, 0x00, 0x00, 0x87, 0x9F, 0x7F, 0xF0, 0xE7, 0xEF, 0xF7, 0x1F, 0xF1, 0x0E, 0x83, 0xFF, 0xF8, 0x07, 0x0C, 0x18, 0x16, 0x37, 0x36, 0x31, 0x3A, 0x39, 0x1C, 0x1F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xC4, 0xF8, 0x70, 0x0E, 0x11, 0x31, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xC4, 0xF8, 0x60, 0x6E, 0xD1, 0xD1, 0xE2, 0xFE, 0x00, 0x00, 0x40, 0x40, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF0, 0xF0, 0x98, 0x98, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x98, 0x98, 0xF0, 0xF0, 0x60, 0x0C, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x80, 0xC0, 0x60, 0xD0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0x40, 0x80, 0x07, 0x0B, 0x1F, 0x7F, 0xE9, 0x9F, 0xEE, 0xF5, 0x7B, 0x1C, 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x11, 0x31, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x1C, 0x06, 0xC3, 0xE1, 0x31, 0x10, 0x08, 0xC8, 0xF8, 0x79, 0x01, 0x03, 0x0E, 0xF8, 0x03, 0x0F, 0x1C, 0x30, 0x27, 0x67, 0x42, 0x42, 0x41, 0x47, 0x47, 0x24, 0x14, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0xF0, 0xF0, 0xB0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3C, 0x03, 0x8E, 0x9F, 0x9F, 0x3B, 0xED, 0x1F, 0xFF, 0xE0, 0x00, 0x1C, 0x12, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x37, 0x32, 0x31, 0x30, 0x31, 0x33, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xEF, 0xEF, 0x6D, 0xCF, 0x35, 0xE3, 0x18, 0xFF, 0x1E, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x37, 0x36, 0x31, 0x31, 0x38, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0xC0, 0xA0, 0xE0, 0xB0, 0xF0, 0xF0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0xFF, 0x07, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x01, 0xDE, 0x77, 0x77, 0xFF, 0x3F, 0x00, 0x03, 0x0C, 0x18, 0x11, 0x33, 0x32, 0x33, 0x39, 0x38, 0x1E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x81, 0x7F, 0x8F, 0x73, 0x8D, 0xFF, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x33, 0x33, 0x31, 0x38, 0x39, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x30, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xB0, 0xF0, 0x10, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xFF, 0xFF, 0xFF, 0x35, 0x4C, 0xCF, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x33, 0x33, 0x31, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x10, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xEF, 0xEF, 0x78, 0x67, 0x05, 0x0C, 0x0F, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x33, 0x37, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0xC0, 0xA0, 0xE0, 0xB0, 0xF0, 0xF0, 0xE0, 0xE0, 0xF0, 0x10, 0xF0, 0xC0, 0xFF, 0x07, 0xF8, 0x07, 0xFF, 0xFF, 0x70, 0x51, 0x9E, 0x1F, 0x18, 0x9F, 0xFF, 0x00, 0x03, 0x0D, 0x18, 0x11, 0x13, 0x32, 0x32, 0x39, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xB0, 0xB0, 0xF0, 0xF0, 0xB0, 0x90, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xCF, 0xCF, 0xC9, 0xCF, 0xFD, 0x2D, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x34, 0x33, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x20, 0x20, 0x40, 0x80, 0xFF, 0x95, 0x6F, 0x00, 0xFF, 0xFF, 0x03, 0x0C, 0x18, 0x13, 0x33, 0x31, 0x31, 0x38, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0x70, 0xB0, 0xD0, 0xF0, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xD7, 0xAB, 0xC7, 0x1D, 0x7E, 0xEF, 0x83, 0x01, 0x01, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x36, 0x31, 0x30, 0x30, 0x33, 0x36, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xC0, 0x40, 0x40, 0xC0, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x31, 0x33, 0x32, 0x31, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x70, 0xB0, 0xF0, 0x70, 0xF0, 0x90, 0x60, 0xC0, 0xB0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0xFF, 0x0F, 0xFF, 0xCC, 0x17, 0xE8, 0x0F, 0x8F, 0xFC, 0xFB, 0x3B, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x33, 0x37, 0x3C, 0x31, 0x30, 0x3F, 0x33, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x70, 0xB0, 0xF0, 0xF0, 0xF0, 0xB0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x00, 0xFF, 0x0F, 0xFF, 0xF6, 0xC9, 0x36, 0xEB, 0x1F, 0x0F, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x37, 0x3F, 0x39, 0x37, 0x09, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x00, 0xFF, 0x0B, 0xF8, 0x2F, 0xFF, 0xFF, 0x00, 0xFF, 0x0F, 0xF3, 0x0C, 0xFF, 0xFE, 0x01, 0x06, 0x09, 0x18, 0x13, 0x37, 0x34, 0x33, 0x39, 0x38, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xCF, 0xCF, 0xCD, 0xCF, 0xEF, 0xE3, 0x70, 0x7F, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xF8, 0x6F, 0x3F, 0x3F, 0x20, 0x7F, 0x0F, 0xF3, 0x0C, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x18, 0x17, 0x17, 0x35, 0x32, 0x31, 0x20, 0x20, 0x63, 0x71, 0x7F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xE0, 0x40, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xCF, 0xCF, 0x4D, 0xB7, 0xE9, 0x37, 0xF8, 0xFF, 0x5E, 0x80, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x33, 0x37, 0x38, 0x07, 0x19, 0x10, 0x31, 0x30, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x80, 0x40, 0xE0, 0xF0, 0xF0, 0x70, 0x70, 0x70, 0xD0, 0xF0, 0xF0, 0xC0, 0xCF, 0x57, 0xAF, 0x6D, 0x4B, 0xCA, 0x9C, 0xAD, 0xC6, 0x0B, 0x1F, 0xF7, 0x1F, 0x30, 0x38, 0x39, 0x12, 0x12, 0x32, 0x31, 0x38, 0x3C, 0x1E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0xF0, 0xF0, 0xF0, 0xF0, 0xB0, 0xF0, 0xF0, 0x70, 0xB0, 0x70, 0xF0, 0xF0, 0x0F, 0x1B, 0x1F, 0x1F, 0xFF, 0x9B, 0x6F, 0x00, 0xFF, 0xF8, 0x0B, 0x1F, 0x00, 0x00, 0x1C, 0x34, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0xF0, 0xB0, 0x90, 0xF0, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x06, 0x09, 0x10, 0x13, 0x37, 0x34, 0x3B, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xB0, 0xF0, 0x30, 0xD0, 0xF0, 0x00, 0x00, 0x1F, 0x33, 0xEC, 0x03, 0xFF, 0x19, 0x8F, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x09, 0x10, 0x30, 0x38, 0x3F, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0xF0, 0xF0, 0x60, 0xF0, 0xB0, 0xF0, 0xB0, 0xD0, 0xF0, 0x00, 0x00, 0x07, 0x3B, 0xEC, 0x03, 0x3F, 0x0C, 0xFF, 0x3B, 0xEC, 0x3F, 0x0F, 0xC0, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x10, 0x30, 0x3F, 0x3F, 0x1F, 0x11, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x01, 0x85, 0x76, 0x29, 0x92, 0x6F, 0x94, 0x3F, 0xDE, 0x87, 0x03, 0x01, 0x1C, 0x36, 0x31, 0x30, 0x36, 0x3F, 0x36, 0x30, 0x31, 0x30, 0x33, 0x36, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x0E, 0xFB, 0xB4, 0x6B, 0xF4, 0xFB, 0xFE, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0xF0, 0xF0, 0xF0, 0xB0, 0xB0, 0xB0, 0x30, 0xF0, 0xF0, 0x70, 0x90, 0xF0, 0x07, 0x0D, 0xEF, 0x9F, 0x6F, 0xD7, 0xED, 0xFB, 0xFD, 0x5F, 0x8F, 0x03, 0x1E, 0x13, 0x31, 0x30, 0x33, 0x33, 0x33, 0x32, 0x31, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x68, 0x78, 0xFF, 0xFB, 0x2B, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x61, 0x60, 0x6F, 0x6F, 0x68, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0x30, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x38, 0x78, 0xF8, 0xF8, 0xF8, 0x18, 0xF8, 0xF0, 0x00, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x38, 0x68, 0x6F, 0x60, 0x61, 0x60, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x20, 0x38, 0x1E, 0x03, 0x00, 0x00, 0x07, 0x1E, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x06, 0x0B, 0x0E, 0x0E, 0x0C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0xF0, 0xF0, 0xB0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x3C, 0x03, 0x8E, 0x9F, 0x9F, 0x3B, 0xED, 0x1F, 0xFF, 0xE0, 0x00, 0x1C, 0x12, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x37, 0x32, 0x31, 0x30, 0x31, 0x33, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xEF, 0xEF, 0x6D, 0xCF, 0x35, 0xE3, 0x18, 0xFF, 0x1E, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x37, 0x36, 0x31, 0x31, 0x38, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0xC0, 0xA0, 0xE0, 0xB0, 0xF0, 0xF0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0xFF, 0x07, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x01, 0xDE, 0x77, 0x77, 0xFF, 0x3F, 0x00, 0x03, 0x0C, 0x18, 0x11, 0x33, 0x32, 0x33, 0x39, 0x38, 0x1E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x81, 0x7F, 0x8F, 0x73, 0x8D, 0xFF, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x33, 0x33, 0x31, 0x38, 0x39, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x30, 0xF0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xB0, 0xF0, 0x10, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xFF, 0xFF, 0xFF, 0x35, 0x4C, 0xCF, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x33, 0x33, 0x31, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x10, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xEF, 0xEF, 0x78, 0x67, 0x05, 0x0C, 0x0F, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x33, 0x37, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0xC0, 0xA0, 0xE0, 0xB0, 0xF0, 0xF0, 0xE0, 0xE0, 0xF0, 0x10, 0xF0, 0xC0, 0xFF, 0x07, 0xF8, 0x07, 0xFF, 0xFF, 0x70, 0x51, 0x9E, 0x1F, 0x18, 0x9F, 0xFF, 0x00, 0x03, 0x0D, 0x18, 0x11, 0x13, 0x32, 0x32, 0x39, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xB0, 0xB0, 0xF0, 0xF0, 0xB0, 0x90, 0xF0, 0x00, 0xFF, 0x0D, 0xFF, 0x08, 0xCF, 0xCF, 0xC9, 0xCF, 0xFD, 0x2D, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x34, 0x33, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x00, 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x20, 0x20, 0x40, 0x80, 0xFF, 0x95, 0x6F, 0x00, 0xFF, 0xFF, 0x03, 0x0C, 0x18, 0x13, 0x33, 0x31, 0x31, 0x38, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0x70, 0xB0, 0xD0, 0xF0, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xD7, 0xAB, 0xC7, 0x1D, 0x7E, 0xEF, 0x83, 0x01, 0x01, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x36, 0x31, 0x30, 0x30, 0x33, 0x36, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x70, 0xB0, 0xF0, 0xF0, 0x70, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xC0, 0x40, 0x40, 0xC0, 0x1C, 0x33, 0x30, 0x31, 0x30, 0x31, 0x33, 0x32, 0x31, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x70, 0xB0, 0xF0, 0x70, 0xF0, 0x90, 0x60, 0xC0, 0xB0, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0xFF, 0x0F, 0xFF, 0xCC, 0x17, 0xE8, 0x0F, 0x8F, 0xFC, 0xFB, 0x3B, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x33, 0x37, 0x3C, 0x31, 0x30, 0x3F, 0x33, 0x31, 0x30, 0x37, 0x3F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x70, 0xB0, 0xF0, 0xF0, 0xF0, 0xB0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xD0, 0xF0, 0x00, 0xFF, 0x0F, 0xFF, 0xF6, 0xC9, 0x36, 0xEB, 0x1F, 0x0F, 0xFF, 0xFF, 0x01, 0x1C, 0x33, 0x30, 0x37, 0x3F, 0x39, 0x37, 0x09, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xA0, 0xC0, 0x80, 0x00, 0xFF, 0x0B, 0xF8, 0x2F, 0xFF, 0xFF, 0x00, 0xFF, 0x0F, 0xF3, 0x0C, 0xFF, 0xFE, 0x01, 0x06, 0x09, 0x18, 0x13, 0x37, 0x34, 0x33, 0x39, 0x38, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xA0, 0x40, 0x80, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xCF, 0xCF, 0xCD, 0xCF, 0xEF, 0xE3, 0x70, 0x7F, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x0B, 0xF8, 0x6F, 0x3F, 0x3F, 0x20, 0x7F, 0x0F, 0xF3, 0x0C, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x03, 0x0D, 0x18, 0x17, 0x17, 0x35, 0x32, 0x31, 0x20, 0x20, 0x63, 0x71, 0x7F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xB0, 0xB0, 0x70, 0xE0, 0xE0, 0x40, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x8D, 0x7F, 0x08, 0xCF, 0xCF, 0x4D, 0xB7, 0xE9, 0x37, 0xF8, 0xFF, 0x5E, 0x80, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x33, 0x37, 0x38, 0x07, 0x19, 0x10, 0x31, 0x30, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x80, 0x40, 0xE0, 0xF0, 0xF0, 0x70, 0x70, 0x70, 0xD0, 0xF0, 0xF0, 0xC0, 0xCF, 0x57, 0xAF, 0x6D, 0x4B, 0xCA, 0x9C, 0xAD, 0xC6, 0x0B, 0x1F, 0xF7, 0x1F, 0x30, 0x38, 0x39, 0x12, 0x12, 0x32, 0x31, 0x38, 0x3C, 0x1E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0xF0, 0xF0, 0xF0, 0xF0, 0xB0, 0xF0, 0xF0, 0x70, 0xB0, 0x70, 0xF0, 0xF0, 0x0F, 0x1B, 0x1F, 0x1F, 0xFF, 0x9B, 0x6F, 0x00, 0xFF, 0xF8, 0x0B, 0x1F, 0x00, 0x00, 0x1C, 0x34, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x70, 0xB0, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0xF0, 0xB0, 0x90, 0xF0, 0x00, 0xFF, 0x1B, 0xEF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x06, 0x09, 0x10, 0x13, 0x37, 0x34, 0x3B, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xB0, 0xF0, 0x30, 0xD0, 0xF0, 0x00, 0x00, 0x1F, 0x33, 0xEC, 0x03, 0xFF, 0x19, 0x8F, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x09, 0x10, 0x30, 0x38, 0x3F, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x70, 0x70, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0xF0, 0xF0, 0x60, 0xF0, 0xB0, 0xF0, 0xB0, 0xD0, 0xF0, 0x00, 0x00, 0x07, 0x3B, 0xEC, 0x03, 0x3F, 0x0C, 0xFF, 0x3B, 0xEC, 0x3F, 0x0F, 0xC0, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x10, 0x30, 0x3F, 0x3F, 0x1F, 0x11, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xB0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x01, 0x85, 0x76, 0x29, 0x92, 0x6F, 0x94, 0x3F, 0xDE, 0x87, 0x03, 0x01, 0x1C, 0x36, 0x31, 0x30, 0x36, 0x3F, 0x36, 0x30, 0x31, 0x30, 0x33, 0x36, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x30, 0x30, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x0E, 0xFB, 0xB4, 0x6B, 0xF4, 0xFB, 0xFE, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x33, 0x31, 0x30, 0x30, 0x37, 0x3F, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0xF0, 0xF0, 0xF0, 0xB0, 0xB0, 0xB0, 0x30, 0xF0, 0xF0, 0x70, 0x90, 0xF0, 0x07, 0x0D, 0xEF, 0x9F, 0x6F, 0xD7, 0xED, 0xFB, 0xFD, 0x5F, 0x8F, 0x03, 0x1E, 0x13, 0x31, 0x30, 0x33, 0x33, 0x33, 0x32, 0x31, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0xC0, 0xB0, 0xF0, 0xB8, 0xF8, 0xF8, 0x78, 0xEF, 0xF9, 0x17, 0xFF, 0x1F, 0x00, 0x00, 0x0F, 0x13, 0x60, 0x47, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 + 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, // 124 + 0x38, 0x78, 0xF0, 0xE0, 0x20, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x87, 0x78, 0xDF, 0xFF, 0x70, 0xD8, 0xC7, 0xE3, 0xF8, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x30, 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xF8, 0x38, 0x68, 0x88, 0x08, 0x08, 0x08, 0x08, 0x88, 0x68, 0x38, 0xF8, 0xFF, 0x00, 0x00, 0xC1, 0x63, 0x1C, 0x1C, 0x63, 0xC1, 0x00, 0x00, 0xFF, 0x0F, 0x0E, 0x0B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0B, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Stang5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Stang5x7.h new file mode 100644 index 0000000..1ec3886 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Stang5x7.h @@ -0,0 +1,124 @@ +/*! \file Stang5x7.h \brief Graphic LCD Font (Ascii Characters). */ +//***************************************************************************** +// +// File Name : 'Stang5x7.h' +// Title : Graphic LCD Font (Ascii Charaters) +// Author : Pascal Stang +// Date : 10/19/2001 +// Revised : 10/19/2001 +// Version : 0.1 +// Target MCU : Atmel AVR +// Editor Tabs : 4 +// +//***************************************************************************** + +#ifndef Stang5x7_h +#define Stang5x7_h + +// standard ascii 5x7 font +// defines ascii characters 0x20-0x7F (32-127) +GLCDFONTDECL(Stang5x7) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 0x05, // width + 0x07, // height + 0x20, // first char + 0x60, // char count + 0x00, 0x00, 0x00, 0x00, 0x00,// (space) + 0x00, 0x00, 0x5F, 0x00, 0x00,// ! + 0x00, 0x07, 0x00, 0x07, 0x00,// " + 0x14, 0x7F, 0x14, 0x7F, 0x14,// # + 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ + 0x23, 0x13, 0x08, 0x64, 0x62,// % + 0x36, 0x49, 0x55, 0x22, 0x50,// & + 0x00, 0x05, 0x03, 0x00, 0x00,// ' + 0x00, 0x1C, 0x22, 0x41, 0x00,// ( + 0x00, 0x41, 0x22, 0x1C, 0x00,// ) + 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * + 0x08, 0x08, 0x3E, 0x08, 0x08,// + + 0x00, 0x50, 0x30, 0x00, 0x00,// , + 0x08, 0x08, 0x08, 0x08, 0x08,// - + 0x00, 0x60, 0x60, 0x00, 0x00,// . + 0x20, 0x10, 0x08, 0x04, 0x02,// / + 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 + 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 + 0x42, 0x61, 0x51, 0x49, 0x46,// 2 + 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 + 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 + 0x27, 0x45, 0x45, 0x45, 0x39,// 5 + 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 + 0x01, 0x71, 0x09, 0x05, 0x03,// 7 + 0x36, 0x49, 0x49, 0x49, 0x36,// 8 + 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 + 0x00, 0x36, 0x36, 0x00, 0x00,// : + 0x00, 0x56, 0x36, 0x00, 0x00,// ; + 0x00, 0x08, 0x14, 0x22, 0x41,// < + 0x14, 0x14, 0x14, 0x14, 0x14,// = + 0x41, 0x22, 0x14, 0x08, 0x00,// > + 0x02, 0x01, 0x51, 0x09, 0x06,// ? + 0x32, 0x49, 0x79, 0x41, 0x3E,// @ + 0x7E, 0x11, 0x11, 0x11, 0x7E,// A + 0x7F, 0x49, 0x49, 0x49, 0x36,// B + 0x3E, 0x41, 0x41, 0x41, 0x22,// C + 0x7F, 0x41, 0x41, 0x22, 0x1C,// D + 0x7F, 0x49, 0x49, 0x49, 0x41,// E + 0x7F, 0x09, 0x09, 0x01, 0x01,// F + 0x3E, 0x41, 0x41, 0x51, 0x32,// G + 0x7F, 0x08, 0x08, 0x08, 0x7F,// H + 0x00, 0x41, 0x7F, 0x41, 0x00,// I + 0x20, 0x40, 0x41, 0x3F, 0x01,// J + 0x7F, 0x08, 0x14, 0x22, 0x41,// K + 0x7F, 0x40, 0x40, 0x40, 0x40,// L + 0x7F, 0x02, 0x04, 0x02, 0x7F,// M + 0x7F, 0x04, 0x08, 0x10, 0x7F,// N + 0x3E, 0x41, 0x41, 0x41, 0x3E,// O + 0x7F, 0x09, 0x09, 0x09, 0x06,// P + 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q + 0x7F, 0x09, 0x19, 0x29, 0x46,// R + 0x46, 0x49, 0x49, 0x49, 0x31,// S + 0x01, 0x01, 0x7F, 0x01, 0x01,// T + 0x3F, 0x40, 0x40, 0x40, 0x3F,// U + 0x1F, 0x20, 0x40, 0x20, 0x1F,// V + 0x7F, 0x20, 0x18, 0x20, 0x7F,// W + 0x63, 0x14, 0x08, 0x14, 0x63,// X + 0x03, 0x04, 0x78, 0x04, 0x03,// Y + 0x61, 0x51, 0x49, 0x45, 0x43,// Z + 0x00, 0x00, 0x7F, 0x41, 0x41,// [ + 0x02, 0x04, 0x08, 0x10, 0x20,// "\" + 0x41, 0x41, 0x7F, 0x00, 0x00,// ] + 0x04, 0x02, 0x01, 0x02, 0x04,// ^ + 0x40, 0x40, 0x40, 0x40, 0x40,// _ + 0x00, 0x01, 0x02, 0x04, 0x00,// ` + 0x20, 0x54, 0x54, 0x54, 0x78,// a + 0x7F, 0x48, 0x44, 0x44, 0x38,// b + 0x38, 0x44, 0x44, 0x44, 0x20,// c + 0x38, 0x44, 0x44, 0x48, 0x7F,// d + 0x38, 0x54, 0x54, 0x54, 0x18,// e + 0x08, 0x7E, 0x09, 0x01, 0x02,// f + 0x08, 0x14, 0x54, 0x54, 0x3C,// g + 0x7F, 0x08, 0x04, 0x04, 0x78,// h + 0x00, 0x44, 0x7D, 0x40, 0x00,// i + 0x20, 0x40, 0x44, 0x3D, 0x00,// j + 0x00, 0x7F, 0x10, 0x28, 0x44,// k + 0x00, 0x41, 0x7F, 0x40, 0x00,// l + 0x7C, 0x04, 0x18, 0x04, 0x78,// m + 0x7C, 0x08, 0x04, 0x04, 0x78,// n + 0x38, 0x44, 0x44, 0x44, 0x38,// o + 0x7C, 0x14, 0x14, 0x14, 0x08,// p + 0x08, 0x14, 0x14, 0x18, 0x7C,// q + 0x7C, 0x08, 0x04, 0x04, 0x08,// r + 0x48, 0x54, 0x54, 0x54, 0x20,// s + 0x04, 0x3F, 0x44, 0x40, 0x20,// t + 0x3C, 0x40, 0x40, 0x20, 0x7C,// u + 0x1C, 0x20, 0x40, 0x20, 0x1C,// v + 0x3C, 0x40, 0x30, 0x40, 0x3C,// w + 0x44, 0x28, 0x10, 0x28, 0x44,// x + 0x0C, 0x50, 0x50, 0x50, 0x3C,// y + 0x44, 0x64, 0x54, 0x4C, 0x44,// z + 0x00, 0x08, 0x36, 0x41, 0x00,// { + 0x00, 0x00, 0x7F, 0x00, 0x00,// | + 0x00, 0x41, 0x36, 0x08, 0x00,// } + 0x0C, 0x02, 0x0C, 0x10, 0x0C,// ~ + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F // del +}; + +#endif // Stang5x7_H \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/System5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/System5x7.h new file mode 100644 index 0000000..bb14510 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/System5x7.h @@ -0,0 +1,148 @@ +/* + * + * System5x7 + * + * + * File Name : System5x7.h + * Date : 28 Oct 2008 + * Font size in bytes : 470 + * Font width : 5 + * Font height : 7 + * Font first char : 32 + * Font last char : 127 + * Font used chars : 94 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef SYSTEM5x7_H +#define SYSTEM5x7_H + +#define SYSTEM5x7_WIDTH 5 +#define SYSTEM5x7_HEIGHT 7 + +GLCDFONTDECL(System5x7) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 0x05, // width + 0x07, // height + 0x20, // first char + 0x61, // char count + + // Fixed width; char width table not used !!!! + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00,// (space) + 0x00, 0x00, 0x5F, 0x00, 0x00,// ! + 0x00, 0x07, 0x00, 0x07, 0x00,// " + 0x14, 0x7F, 0x14, 0x7F, 0x14,// # + 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ + 0x23, 0x13, 0x08, 0x64, 0x62,// % + 0x36, 0x49, 0x55, 0x22, 0x50,// & + 0x00, 0x05, 0x03, 0x00, 0x00,// ' + 0x00, 0x1C, 0x22, 0x41, 0x00,// ( + 0x00, 0x41, 0x22, 0x1C, 0x00,// ) + 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * + 0x08, 0x08, 0x3E, 0x08, 0x08,// + + 0x00, 0x50, 0x30, 0x00, 0x00,// , + 0x08, 0x08, 0x08, 0x08, 0x08,// - + 0x00, 0x60, 0x60, 0x00, 0x00,// . + 0x20, 0x10, 0x08, 0x04, 0x02,// / + 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 + 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 + 0x42, 0x61, 0x51, 0x49, 0x46,// 2 + 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 + 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 + 0x27, 0x45, 0x45, 0x45, 0x39,// 5 + 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 + 0x01, 0x71, 0x09, 0x05, 0x03,// 7 + 0x36, 0x49, 0x49, 0x49, 0x36,// 8 + 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 + 0x00, 0x36, 0x36, 0x00, 0x00,// : + 0x00, 0x56, 0x36, 0x00, 0x00,// ; + 0x00, 0x08, 0x14, 0x22, 0x41,// < + 0x14, 0x14, 0x14, 0x14, 0x14,// = + 0x41, 0x22, 0x14, 0x08, 0x00,// > + 0x02, 0x01, 0x51, 0x09, 0x06,// ? + 0x32, 0x49, 0x79, 0x41, 0x3E,// @ + 0x7E, 0x11, 0x11, 0x11, 0x7E,// A + 0x7F, 0x49, 0x49, 0x49, 0x36,// B + 0x3E, 0x41, 0x41, 0x41, 0x22,// C + 0x7F, 0x41, 0x41, 0x22, 0x1C,// D + 0x7F, 0x49, 0x49, 0x49, 0x41,// E + 0x7F, 0x09, 0x09, 0x01, 0x01,// F + 0x3E, 0x41, 0x41, 0x51, 0x32,// G + 0x7F, 0x08, 0x08, 0x08, 0x7F,// H + 0x00, 0x41, 0x7F, 0x41, 0x00,// I + 0x20, 0x40, 0x41, 0x3F, 0x01,// J + 0x7F, 0x08, 0x14, 0x22, 0x41,// K + 0x7F, 0x40, 0x40, 0x40, 0x40,// L + 0x7F, 0x02, 0x04, 0x02, 0x7F,// M + 0x7F, 0x04, 0x08, 0x10, 0x7F,// N + 0x3E, 0x41, 0x41, 0x41, 0x3E,// O + 0x7F, 0x09, 0x09, 0x09, 0x06,// P + 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q + 0x7F, 0x09, 0x19, 0x29, 0x46,// R + 0x46, 0x49, 0x49, 0x49, 0x31,// S + 0x01, 0x01, 0x7F, 0x01, 0x01,// T + 0x3F, 0x40, 0x40, 0x40, 0x3F,// U + 0x1F, 0x20, 0x40, 0x20, 0x1F,// V + 0x7F, 0x20, 0x18, 0x20, 0x7F,// W + 0x63, 0x14, 0x08, 0x14, 0x63,// X + 0x03, 0x04, 0x78, 0x04, 0x03,// Y + 0x61, 0x51, 0x49, 0x45, 0x43,// Z + 0x00, 0x00, 0x7F, 0x41, 0x41,// [ + 0x02, 0x04, 0x08, 0x10, 0x20,// "\" + 0x41, 0x41, 0x7F, 0x00, 0x00,// ] + 0x04, 0x02, 0x01, 0x02, 0x04,// ^ + 0x40, 0x40, 0x40, 0x40, 0x40,// _ + 0x00, 0x01, 0x02, 0x04, 0x00,// ` + 0x20, 0x54, 0x54, 0x54, 0x78,// a + 0x7F, 0x48, 0x44, 0x44, 0x38,// b + 0x38, 0x44, 0x44, 0x44, 0x20,// c + 0x38, 0x44, 0x44, 0x48, 0x7F,// d + 0x38, 0x54, 0x54, 0x54, 0x18,// e + 0x08, 0x7E, 0x09, 0x01, 0x02,// f + 0x08, 0x14, 0x54, 0x54, 0x3C,// g + 0x7F, 0x08, 0x04, 0x04, 0x78,// h + 0x00, 0x44, 0x7D, 0x40, 0x00,// i + 0x20, 0x40, 0x44, 0x3D, 0x00,// j + 0x00, 0x7F, 0x10, 0x28, 0x44,// k + 0x00, 0x41, 0x7F, 0x40, 0x00,// l + 0x7C, 0x04, 0x18, 0x04, 0x78,// m + 0x7C, 0x08, 0x04, 0x04, 0x78,// n + 0x38, 0x44, 0x44, 0x44, 0x38,// o + 0x7C, 0x14, 0x14, 0x14, 0x08,// p + 0x08, 0x14, 0x14, 0x18, 0x7C,// q + 0x7C, 0x08, 0x04, 0x04, 0x08,// r + 0x48, 0x54, 0x54, 0x54, 0x20,// s + 0x04, 0x3F, 0x44, 0x40, 0x20,// t + 0x3C, 0x40, 0x40, 0x20, 0x7C,// u + 0x1C, 0x20, 0x40, 0x20, 0x1C,// v + 0x3C, 0x40, 0x30, 0x40, 0x3C,// w + 0x44, 0x28, 0x10, 0x28, 0x44,// x + 0x0C, 0x50, 0x50, 0x50, 0x3C,// y + 0x44, 0x64, 0x54, 0x4C, 0x44,// z + 0x00, 0x08, 0x36, 0x41, 0x00,// { + 0x00, 0x00, 0x7F, 0x00, 0x00,// | + 0x00, 0x41, 0x36, 0x08, 0x00,// } + 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> + 0x08, 0x1C, 0x2A, 0x08, 0x08, // <- + 0x00, 0x06, 0x09, 0x09, 0x06 // degree symbol + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/SystemFont5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/SystemFont5x7.h new file mode 100644 index 0000000..1c65eec --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/SystemFont5x7.h @@ -0,0 +1,16 @@ +#ifndef SYSTEM5FONTx7_H +#define SYSTEMFONT5x7_H + +/* + * added to allow fontname to match header file name. + * as well as keep the old header filename for backward compability + */ + +#define SYSTEMFONT5x7_WIDTH 5 +#define SYSTEMFONT5x7_HEIGHT 7 + +#define SystemFont5x7 System5x7 + +#include "System5x7.h" + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13.h new file mode 100644 index 0000000..002dcb9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13.h @@ -0,0 +1,162 @@ +/* + * + * TimesNewRoman13 + * times_new_roman_size12 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : TimesNewRoman13.h + * Date : 10.11.2012 + * Font size in bytes : 6732 + * Font width : 10 + * Font height : 13 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _TimesNewRoman13_H +#define _TimesNewRoman13_H + +#define TimesNewRoman13_WIDTH 10 +#define TimesNewRoman13_HEIGHT 13 + +GLCDFONTDECL(TimesNewRoman13) = { + 0x1A, 0x4C, // size + 0x0A, // width + 0x0D, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x03, 0x06, 0x05, 0x09, 0x09, 0x01, 0x03, 0x03, + 0x05, 0x07, 0x02, 0x03, 0x01, 0x03, 0x05, 0x03, 0x05, 0x05, + 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x01, 0x02, 0x06, 0x06, + 0x06, 0x04, 0x0A, 0x08, 0x07, 0x07, 0x08, 0x07, 0x06, 0x08, + 0x08, 0x03, 0x04, 0x08, 0x07, 0x0B, 0x08, 0x08, 0x06, 0x08, + 0x08, 0x05, 0x07, 0x08, 0x07, 0x0B, 0x08, 0x08, 0x07, 0x03, + 0x03, 0x02, 0x06, 0x06, 0x02, 0x05, 0x05, 0x04, 0x06, 0x04, + 0x04, 0x05, 0x06, 0x03, 0x02, 0x06, 0x03, 0x09, 0x06, 0x05, + 0x06, 0x06, 0x04, 0x04, 0x03, 0x06, 0x06, 0x09, 0x05, 0x07, + 0x05, 0x03, 0x01, 0x03, 0x05, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x10, // 33 + 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, // 34 + 0xD0, 0x78, 0x56, 0x50, 0xF8, 0x56, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, // 35 + 0x1C, 0x12, 0xFF, 0x22, 0xC4, 0x08, 0x10, 0x38, 0x10, 0x08, // 36 + 0x0C, 0x12, 0x8C, 0x40, 0x30, 0x08, 0x86, 0x40, 0x80, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x08, 0x10, 0x08, // 37 + 0xC0, 0x20, 0x3C, 0xD2, 0x8A, 0x46, 0x30, 0x10, 0x00, 0x08, 0x10, 0x10, 0x10, 0x08, 0x10, 0x10, 0x10, 0x08, // 38 + 0x0E, 0x00, // 39 + 0xF0, 0x0C, 0x02, 0x08, 0x30, 0x40, // 40 + 0x02, 0x0C, 0xF0, 0x40, 0x30, 0x08, // 41 + 0x14, 0x08, 0x3E, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x50, 0x30, // 44 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, // 45 + 0x00, 0x10, // 46 + 0x00, 0xF8, 0x06, 0x18, 0x00, 0x00, // 47 + 0xFC, 0x02, 0x02, 0x02, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x08, // 48 + 0x04, 0xFE, 0x00, 0x10, 0x18, 0x10, // 49 + 0x04, 0x02, 0x82, 0x42, 0x3C, 0x10, 0x18, 0x10, 0x10, 0x18, // 50 + 0x04, 0x02, 0x22, 0x32, 0xCC, 0x10, 0x10, 0x10, 0x10, 0x08, // 51 + 0xC0, 0xA0, 0x98, 0x84, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, // 52 + 0x00, 0x0C, 0x0A, 0x12, 0xE2, 0x10, 0x10, 0x10, 0x08, 0x00, // 53 + 0xF0, 0x28, 0x14, 0x12, 0xE2, 0x08, 0x10, 0x10, 0x10, 0x08, // 54 + 0x04, 0x02, 0x02, 0xF2, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, // 55 + 0x8C, 0x52, 0x22, 0x52, 0x8C, 0x08, 0x10, 0x10, 0x10, 0x08, // 56 + 0x3C, 0x42, 0x42, 0xC2, 0x7C, 0x10, 0x10, 0x08, 0x00, 0x00, // 57 + 0x10, 0x10, // 58 + 0x10, 0x00, 0x50, 0x30, // 59 + 0x20, 0x50, 0x50, 0x50, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x0C, 0xC2, 0x22, 0x1C, 0x00, 0x10, 0x00, 0x00, // 63 + 0xF0, 0x08, 0xE4, 0x12, 0x0A, 0x0A, 0x92, 0x7A, 0x04, 0xF8, 0x18, 0x20, 0x48, 0x90, 0x90, 0x88, 0x88, 0x90, 0x48, 0x20, // 64 + 0x00, 0x80, 0x78, 0x46, 0x58, 0x60, 0x80, 0x00, 0x10, 0x18, 0x10, 0x00, 0x00, 0x10, 0x18, 0x10, // 65 + 0x02, 0xFE, 0x22, 0x22, 0x22, 0x3C, 0xC0, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, // 66 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x04, 0x8E, 0x00, 0x08, 0x10, 0x10, 0x10, 0x08, 0x00, // 67 + 0x02, 0xFE, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 68 + 0x02, 0xFE, 0x22, 0x22, 0x72, 0x06, 0x00, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, // 69 + 0x02, 0xFE, 0x22, 0x22, 0x72, 0x06, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, // 70 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x24, 0xEE, 0x20, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 71 + 0x02, 0xFE, 0x22, 0x20, 0x20, 0x22, 0xFE, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x10, 0x18, 0x10, // 72 + 0x02, 0xFE, 0x02, 0x10, 0x18, 0x10, // 73 + 0x00, 0x02, 0xFE, 0x02, 0x18, 0x10, 0x08, 0x00, // 74 + 0x02, 0xFE, 0x22, 0x50, 0x88, 0x06, 0x02, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x18, 0x10, 0x10, // 75 + 0x02, 0xFE, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, // 76 + 0x02, 0xFE, 0x06, 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x06, 0xFE, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x18, 0x10, // 77 + 0x02, 0xFE, 0x08, 0x10, 0x60, 0x82, 0xFE, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, // 78 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 79 + 0x02, 0xFE, 0x22, 0x22, 0x22, 0x1C, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, // 80 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x08, 0x10, 0x10, 0x30, 0x50, 0x48, 0x40, // 81 + 0x02, 0xFE, 0x22, 0x22, 0xE2, 0x1C, 0x00, 0x00, 0x10, 0x18, 0x10, 0x00, 0x00, 0x08, 0x10, 0x10, // 82 + 0x0C, 0x12, 0x22, 0x22, 0xC6, 0x18, 0x10, 0x10, 0x10, 0x08, // 83 + 0x06, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x06, 0x00, 0x00, 0x10, 0x18, 0x10, 0x00, 0x00, // 84 + 0x02, 0xFE, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x02, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 85 + 0x02, 0x1E, 0xE2, 0x00, 0xE2, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, // 86 + 0x02, 0x1E, 0xE2, 0x80, 0x62, 0x1E, 0xE2, 0x80, 0x72, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, // 87 + 0x02, 0x06, 0x8A, 0x70, 0x70, 0x8A, 0x06, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x10, 0x18, 0x10, // 88 + 0x02, 0x06, 0x3A, 0xC0, 0x30, 0x0A, 0x06, 0x02, 0x00, 0x00, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, // 89 + 0x00, 0x86, 0x42, 0x32, 0x0A, 0x06, 0x82, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, // 90 + 0xFE, 0x02, 0x02, 0x78, 0x40, 0x40, // 91 + 0x06, 0xF8, 0x00, 0x00, 0x00, 0x18, // 92 + 0x02, 0xFE, 0x40, 0x78, // 93 + 0x10, 0x0C, 0x02, 0x02, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x04, 0x08, 0x00, 0x00, // 96 + 0xA0, 0x50, 0x50, 0xE0, 0x00, 0x08, 0x10, 0x10, 0x18, 0x10, // 97 + 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x08, 0x10, 0x10, 0x10, 0x08, // 98 + 0xE0, 0x10, 0x10, 0x30, 0x08, 0x10, 0x10, 0x08, // 99 + 0xE0, 0x10, 0x10, 0x22, 0xFE, 0x00, 0x08, 0x10, 0x10, 0x08, 0x18, 0x10, // 100 + 0xE0, 0x50, 0x50, 0x60, 0x08, 0x10, 0x10, 0x08, // 101 + 0x10, 0xFC, 0x12, 0x02, 0x10, 0x18, 0x10, 0x00, // 102 + 0x60, 0x90, 0x90, 0x70, 0x10, 0x68, 0x90, 0x90, 0x90, 0x60, // 103 + 0x02, 0xFE, 0x20, 0x10, 0xE0, 0x00, 0x10, 0x18, 0x10, 0x00, 0x18, 0x10, // 104 + 0x10, 0xF2, 0x00, 0x10, 0x18, 0x10, // 105 + 0x10, 0xF2, 0x80, 0x78, // 106 + 0x02, 0xFE, 0x40, 0xB0, 0x10, 0x00, 0x10, 0x18, 0x10, 0x00, 0x18, 0x10, // 107 + 0x02, 0xFE, 0x00, 0x10, 0x18, 0x10, // 108 + 0x10, 0xF0, 0x20, 0x10, 0xE0, 0x20, 0x10, 0xE0, 0x00, 0x10, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, // 109 + 0x10, 0xF0, 0x20, 0x10, 0xE0, 0x00, 0x10, 0x18, 0x10, 0x00, 0x18, 0x10, // 110 + 0xE0, 0x10, 0x10, 0x10, 0xE0, 0x08, 0x10, 0x10, 0x10, 0x08, // 111 + 0x10, 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x80, 0xF8, 0x88, 0x10, 0x10, 0x08, // 112 + 0xE0, 0x10, 0x10, 0x20, 0xF0, 0x00, 0x08, 0x10, 0x10, 0x88, 0xF8, 0x80, // 113 + 0x10, 0xF0, 0x20, 0x10, 0x10, 0x18, 0x10, 0x00, // 114 + 0x60, 0x50, 0x90, 0xB0, 0x18, 0x10, 0x10, 0x08, // 115 + 0x10, 0xFC, 0x10, 0x00, 0x18, 0x10, // 116 + 0x10, 0xF0, 0x00, 0x10, 0xF0, 0x00, 0x00, 0x08, 0x10, 0x10, 0x18, 0x10, // 117 + 0x30, 0xD0, 0x00, 0xC0, 0x30, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, // 118 + 0x10, 0xF0, 0x00, 0x90, 0xF0, 0x10, 0xC0, 0x30, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, // 119 + 0x10, 0x30, 0xC0, 0x30, 0x10, 0x10, 0x18, 0x00, 0x18, 0x10, // 120 + 0x10, 0x70, 0x90, 0x00, 0xD0, 0x30, 0x10, 0x80, 0x80, 0x48, 0x30, 0x08, 0x00, 0x00, // 121 + 0x30, 0x10, 0xD0, 0x30, 0x10, 0x10, 0x18, 0x10, 0x10, 0x18, // 122 + 0x40, 0xBC, 0x02, 0x00, 0x38, 0x40, // 123 + 0xFE, 0x78, // 124 + 0x02, 0xBC, 0x40, 0x40, 0x38, 0x00, // 125 + 0x80, 0x40, 0xC0, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13_italic.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13_italic.h new file mode 100644 index 0000000..ca6f2c3 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman13_italic.h @@ -0,0 +1,162 @@ +/* + * + * TimesNewRoman13_italic + * times_new_roman_size12_italic.h + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : TimesNewRoman13_italic.h + * Date : 10.11.2012 + * Font size in bytes : 6680 + * Font width : 10 + * Font height : 13 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _TimesNewRoman13_italic_H +#define _TimesNewRoman13_italic_H + +#define TimesNewRoman13_italic_WIDTH 10 +#define TimesNewRoman13_italic_HEIGHT 13 + +GLCDFONTDECL(TimesNewRoman13_italic) = { + 0x1A, 0x18, // size + 0x0A, // width + 0x0D, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x03, 0x03, 0x05, 0x06, 0x06, 0x0A, 0x09, 0x01, 0x03, 0x03, + 0x04, 0x07, 0x01, 0x03, 0x01, 0x03, 0x05, 0x04, 0x05, 0x05, + 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x02, 0x03, 0x06, 0x06, + 0x06, 0x05, 0x0A, 0x07, 0x07, 0x07, 0x09, 0x07, 0x07, 0x08, + 0x09, 0x04, 0x05, 0x08, 0x06, 0x0A, 0x08, 0x08, 0x07, 0x09, + 0x07, 0x06, 0x06, 0x07, 0x06, 0x09, 0x07, 0x05, 0x07, 0x04, + 0x01, 0x05, 0x05, 0x06, 0x02, 0x05, 0x05, 0x04, 0x06, 0x04, + 0x03, 0x06, 0x05, 0x02, 0x03, 0x06, 0x03, 0x08, 0x05, 0x05, + 0x05, 0x05, 0x04, 0x04, 0x03, 0x05, 0x05, 0x07, 0x05, 0x04, + 0x04, 0x04, 0x01, 0x04, 0x06, 0x06, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x00, 0xE0, 0x1E, 0x10, 0x00, 0x00, // 33 + 0x0E, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x50, 0xF0, 0x5E, 0x50, 0xF0, 0x5E, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // 35 + 0x80, 0x0C, 0xD2, 0x3E, 0xC3, 0x04, 0x08, 0x30, 0x18, 0x10, 0x08, 0x00, // 36 + 0x1C, 0x12, 0x12, 0x8E, 0x60, 0x30, 0x88, 0x44, 0x42, 0xC0, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x08, // 37 + 0xC0, 0x20, 0x20, 0xFC, 0x12, 0x8A, 0x66, 0x20, 0x20, 0x08, 0x10, 0x10, 0x10, 0x08, 0x10, 0x10, 0x10, 0x00, // 38 + 0x0E, 0x00, // 39 + 0xE0, 0x38, 0x04, 0x38, 0x40, 0x00, // 40 + 0x00, 0x82, 0xFC, 0x30, 0x08, 0x00, // 41 + 0x14, 0x18, 0x3E, 0x18, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // 43 + 0x00, 0x30, // 44 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, // 45 + 0x00, 0x10, // 46 + 0x80, 0x70, 0x0C, 0x08, 0x00, 0x00, // 47 + 0xF0, 0x0C, 0x02, 0x82, 0x7C, 0x08, 0x10, 0x10, 0x08, 0x00, // 48 + 0x00, 0x00, 0xFA, 0x06, 0x10, 0x18, 0x10, 0x00, // 49 + 0x00, 0x84, 0x42, 0x22, 0x1C, 0x18, 0x10, 0x10, 0x18, 0x00, // 50 + 0x00, 0x24, 0x22, 0xD2, 0x0E, 0x10, 0x10, 0x10, 0x08, 0x00, // 51 + 0xC0, 0xA0, 0x98, 0xF4, 0x8E, 0x00, 0x00, 0x18, 0x00, 0x00, // 52 + 0x00, 0x00, 0x0C, 0x0A, 0xF2, 0x02, 0x18, 0x10, 0x10, 0x08, 0x00, 0x00, // 53 + 0xE0, 0x18, 0x14, 0x12, 0xE2, 0x08, 0x10, 0x10, 0x08, 0x00, // 54 + 0x04, 0x82, 0x62, 0x1A, 0x06, 0x10, 0x08, 0x00, 0x00, 0x00, // 55 + 0x80, 0x40, 0x2C, 0x32, 0xD2, 0x0C, 0x08, 0x10, 0x10, 0x10, 0x08, 0x00, // 56 + 0x00, 0x38, 0x44, 0x42, 0xE2, 0x3C, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, // 57 + 0x00, 0x10, 0x10, 0x00, // 58 + 0x00, 0x00, 0x10, 0x40, 0x30, 0x00, // 59 + 0x40, 0xA0, 0xA0, 0xA0, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x10, 0x10, 0xA0, 0xA0, 0xA0, 0x40, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 62 + 0x0C, 0xC2, 0x22, 0x12, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x18, 0xC4, 0x36, 0x0A, 0x8A, 0x72, 0x0A, 0x84, 0xF8, 0x18, 0x20, 0x58, 0x90, 0x88, 0x98, 0x90, 0x50, 0x28, 0x20, // 64 + 0x00, 0xC0, 0x60, 0x58, 0x44, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x00, 0x10, 0x18, 0x10, // 65 + 0x80, 0x7A, 0x26, 0x22, 0x22, 0xD2, 0x0C, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, // 66 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x0C, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, // 67 + 0x00, 0x00, 0xFA, 0x06, 0x02, 0x02, 0x02, 0x84, 0x78, 0x10, 0x18, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, // 68 + 0x00, 0x00, 0xFA, 0x26, 0x62, 0x32, 0x06, 0x10, 0x18, 0x10, 0x10, 0x10, 0x08, 0x00, // 69 + 0x00, 0x00, 0xFA, 0x26, 0x62, 0x32, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x0C, 0x04, 0x02, 0x22, 0xA2, 0x6C, 0x26, 0x00, 0x08, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00, // 71 + 0x00, 0x00, 0xFA, 0x26, 0x22, 0x20, 0x20, 0xFA, 0x06, 0x10, 0x18, 0x10, 0x00, 0x00, 0x10, 0x18, 0x10, 0x00, // 72 + 0x00, 0x00, 0xFA, 0x06, 0x10, 0x18, 0x10, 0x00, // 73 + 0x00, 0x00, 0x80, 0x7A, 0x06, 0x10, 0x10, 0x08, 0x00, 0x00, // 74 + 0x00, 0x00, 0xFA, 0x66, 0x92, 0x08, 0x06, 0x02, 0x10, 0x18, 0x10, 0x00, 0x10, 0x18, 0x10, 0x10, // 75 + 0x00, 0x00, 0xFA, 0x06, 0x02, 0x00, 0x10, 0x18, 0x10, 0x10, 0x10, 0x18, // 76 + 0x00, 0x00, 0xFA, 0x0E, 0xF0, 0x80, 0x60, 0x18, 0xFC, 0x06, 0x10, 0x18, 0x10, 0x00, 0x18, 0x00, 0x10, 0x18, 0x10, 0x00, // 77 + 0x00, 0x02, 0xF2, 0x0E, 0x38, 0xC0, 0x00, 0xFA, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, // 78 + 0xE0, 0x18, 0x04, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, // 79 + 0x00, 0x00, 0xFA, 0x26, 0x22, 0x22, 0x1C, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0xE0, 0x18, 0x04, 0x02, 0x02, 0x02, 0xC2, 0x3C, 0x80, 0xC8, 0xB8, 0x90, 0x90, 0x90, 0x88, 0x40, 0x00, // 81 + 0x00, 0x00, 0xFA, 0x26, 0xE2, 0x22, 0x1C, 0x10, 0x18, 0x10, 0x00, 0x00, 0x18, 0x10, // 82 + 0x00, 0x80, 0x1C, 0x22, 0xC2, 0x0C, 0x18, 0x08, 0x10, 0x10, 0x08, 0x00, // 83 + 0x06, 0x02, 0xF2, 0x0E, 0x02, 0x02, 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, // 84 + 0xFA, 0x06, 0x02, 0x00, 0x00, 0xFA, 0x06, 0x08, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, // 85 + 0xC2, 0x3E, 0x82, 0x60, 0x10, 0x0A, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, // 86 + 0xE2, 0x1E, 0xC2, 0x30, 0xEA, 0x1E, 0xC2, 0x30, 0x0A, 0x18, 0x08, 0x00, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, // 87 + 0x00, 0x80, 0x42, 0x3E, 0xD2, 0x0A, 0x06, 0x18, 0x10, 0x00, 0x10, 0x18, 0x10, 0x00, // 88 + 0x02, 0xDE, 0x22, 0x18, 0x06, 0x10, 0x18, 0x10, 0x00, 0x00, // 89 + 0x00, 0x04, 0xC2, 0x22, 0x12, 0x0E, 0x02, 0x10, 0x18, 0x10, 0x10, 0x10, 0x18, 0x00, // 90 + 0x00, 0xE0, 0x1E, 0x02, 0x60, 0x58, 0x40, 0x00, // 91 + 0xFE, 0x18, // 92 + 0x00, 0x00, 0x82, 0x7A, 0x06, 0x40, 0x40, 0x38, 0x00, 0x00, // 93 + 0x20, 0x18, 0x04, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x04, 0x00, 0x00, // 96 + 0xC0, 0x20, 0x10, 0x90, 0x70, 0x18, 0x10, 0x08, 0x18, 0x10, // 97 + 0x80, 0x7A, 0x26, 0x10, 0xF0, 0x08, 0x10, 0x10, 0x08, 0x00, // 98 + 0xC0, 0x20, 0x10, 0x30, 0x08, 0x10, 0x10, 0x08, // 99 + 0xC0, 0x20, 0x10, 0x90, 0xFA, 0x06, 0x18, 0x10, 0x08, 0x18, 0x10, 0x00, // 100 + 0xC0, 0xA0, 0x90, 0x70, 0x18, 0x10, 0x10, 0x08, // 101 + 0x10, 0xF8, 0x14, 0x38, 0x00, 0x00, // 102 + 0x00, 0xE0, 0x90, 0x90, 0x70, 0x10, 0xE0, 0x98, 0x90, 0xA0, 0x60, 0x00, // 103 + 0x00, 0xFA, 0x26, 0x10, 0xF0, 0x18, 0x00, 0x00, 0x18, 0x10, // 104 + 0xF0, 0x04, 0x10, 0x00, // 105 + 0x90, 0x70, 0x04, 0x38, 0x00, 0x00, // 106 + 0x00, 0xFA, 0xC6, 0x30, 0x10, 0x10, 0x18, 0x00, 0x08, 0x10, 0x08, 0x00, // 107 + 0x80, 0x7A, 0x06, 0x18, 0x10, 0x00, // 108 + 0x10, 0xF0, 0x20, 0x10, 0xF0, 0x20, 0x10, 0xF0, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x10, // 109 + 0x10, 0xF0, 0x20, 0x10, 0xF0, 0x18, 0x00, 0x00, 0x18, 0x10, // 110 + 0xC0, 0x20, 0x10, 0x10, 0xE0, 0x08, 0x10, 0x10, 0x08, 0x00, // 111 + 0x10, 0xF0, 0x20, 0x10, 0xF0, 0xF8, 0x90, 0x10, 0x08, 0x00, // 112 + 0xC0, 0x20, 0x10, 0x10, 0xF0, 0x18, 0x90, 0xC8, 0xB8, 0x00, // 113 + 0x10, 0xF0, 0x20, 0x30, 0x18, 0x00, 0x00, 0x00, // 114 + 0x00, 0x20, 0x50, 0x90, 0x18, 0x10, 0x10, 0x08, // 115 + 0x90, 0x78, 0x14, 0x18, 0x10, 0x00, // 116 + 0x90, 0x70, 0x00, 0x80, 0x70, 0x18, 0x10, 0x10, 0x18, 0x10, // 117 + 0x10, 0xE0, 0x00, 0x80, 0x70, 0x00, 0x18, 0x08, 0x00, 0x00, // 118 + 0x10, 0xF0, 0x80, 0x40, 0xF0, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x00, 0x18, 0x08, 0x00, // 119 + 0x00, 0x10, 0xF0, 0x20, 0x10, 0x10, 0x08, 0x00, 0x18, 0x00, // 120 + 0x10, 0xF0, 0x00, 0xF0, 0x60, 0x18, 0x08, 0x00, // 121 + 0x00, 0xB0, 0x50, 0x30, 0x18, 0x10, 0x10, 0x18, // 122 + 0x40, 0xA0, 0x1C, 0x02, 0x70, 0x98, 0x00, 0x00, // 123 + 0xFE, 0x78, // 124 + 0x00, 0x00, 0x72, 0x9C, 0x80, 0x70, 0x08, 0x00, // 125 + 0xC0, 0x40, 0x40, 0x80, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16.h new file mode 100644 index 0000000..9018bfb --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16.h @@ -0,0 +1,162 @@ +/* + * + * TimesNewRoman16 + * times_news_roman_size16.h + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : TimesNewRoman16.h + * Date : 10.11.2012 + * Font size in bytes : 10534 + * Font width : 10 + * Font height : 16 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _TimesNewRoman16_H +#define _TimesNewRoman16_H + +#define TimesNewRoman16_WIDTH 10 +#define TimesNewRoman16_HEIGHT 16 + +GLCDFONTDECL(TimesNewRoman16) = { + 0x29, 0x26, // size + 0x0A, // width + 0x10, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x03, 0x08, 0x06, 0x0C, 0x0B, 0x01, 0x04, 0x04, + 0x07, 0x09, 0x02, 0x04, 0x01, 0x04, 0x06, 0x04, 0x06, 0x06, + 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x01, 0x02, 0x07, 0x09, + 0x07, 0x05, 0x0E, 0x0B, 0x09, 0x09, 0x0A, 0x09, 0x08, 0x0A, + 0x0B, 0x05, 0x06, 0x0B, 0x09, 0x0E, 0x0C, 0x0A, 0x08, 0x0A, + 0x0A, 0x07, 0x09, 0x0B, 0x0B, 0x0F, 0x0B, 0x0A, 0x09, 0x03, + 0x04, 0x03, 0x08, 0x08, 0x02, 0x06, 0x07, 0x05, 0x07, 0x05, + 0x04, 0x07, 0x07, 0x03, 0x03, 0x08, 0x03, 0x0B, 0x07, 0x06, + 0x07, 0x07, 0x05, 0x04, 0x04, 0x07, 0x07, 0x0B, 0x07, 0x07, + 0x06, 0x04, 0x01, 0x04, 0x09, 0x08, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x0B, // 33 + 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, // 34 + 0x20, 0x20, 0xF0, 0x2E, 0x20, 0xF0, 0x2E, 0x20, 0x01, 0x0F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x01, // 35 + 0x1C, 0x22, 0xFF, 0x42, 0x82, 0x0C, 0x06, 0x08, 0x1F, 0x08, 0x08, 0x07, // 36 + 0x3C, 0x42, 0x42, 0x3C, 0x00, 0xC0, 0x20, 0x10, 0x8C, 0x42, 0x40, 0x80, 0x00, 0x00, 0x0C, 0x02, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x08, 0x07, // 37 + 0x00, 0x80, 0x5C, 0x62, 0xE2, 0x12, 0x1C, 0xA0, 0x60, 0x20, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x07, 0x06, 0x09, 0x08, 0x08, 0x04, // 38 + 0x1E, 0x00, // 39 + 0xE0, 0x18, 0x04, 0x02, 0x07, 0x18, 0x20, 0x40, // 40 + 0x02, 0x04, 0x18, 0xE0, 0x40, 0x20, 0x18, 0x07, // 41 + 0x24, 0x24, 0x18, 0x7E, 0x18, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x28, 0x18, // 44 + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, // 45 + 0x00, 0x08, // 46 + 0x00, 0xC0, 0x38, 0x06, 0x0C, 0x03, 0x00, 0x00, // 47 + 0xF8, 0x04, 0x02, 0x02, 0x04, 0xF8, 0x03, 0x04, 0x08, 0x08, 0x04, 0x03, // 48 + 0x04, 0x04, 0xFE, 0x00, 0x00, 0x08, 0x0F, 0x08, // 49 + 0x0C, 0x02, 0x02, 0x82, 0x44, 0x38, 0x0C, 0x0A, 0x09, 0x08, 0x08, 0x0C, // 50 + 0x04, 0x02, 0x42, 0x62, 0x52, 0x8C, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, // 51 + 0x80, 0x40, 0x20, 0x18, 0x04, 0xFE, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x01, // 52 + 0x10, 0x1C, 0x12, 0x12, 0x22, 0xC2, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, // 53 + 0xE0, 0x58, 0x24, 0x22, 0x62, 0x82, 0x03, 0x04, 0x08, 0x08, 0x04, 0x03, // 54 + 0x04, 0x02, 0x02, 0x02, 0x82, 0x72, 0x0E, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, // 55 + 0x1C, 0xA2, 0x42, 0x42, 0xA2, 0x1C, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, // 56 + 0x38, 0x44, 0x82, 0x82, 0x44, 0xF8, 0x08, 0x08, 0x04, 0x04, 0x03, 0x00, // 57 + 0x20, 0x08, // 58 + 0x20, 0x00, 0x28, 0x18, // 59 + 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, // 60 + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 61 + 0x08, 0x10, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, // 62 + 0x0C, 0x02, 0x82, 0x62, 0x1C, 0x00, 0x00, 0x0B, 0x00, 0x00, // 63 + 0xC0, 0x30, 0x08, 0x04, 0xC4, 0x22, 0x12, 0x12, 0xE2, 0x32, 0x04, 0x08, 0xF0, 0x00, 0x0F, 0x10, 0x20, 0x4F, 0x88, 0x88, 0x84, 0x8F, 0x89, 0x88, 0x44, 0x26, 0x11, 0x08, // 64 + 0x00, 0x00, 0x00, 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0E, 0x09, 0x01, 0x01, 0x01, 0x09, 0x0E, 0x08, 0x08, // 65 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0x42, 0x64, 0x98, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, // 66 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x1E, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, // 67 + 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0xF0, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, 0x01, // 68 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0x42, 0xE2, 0x06, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x02, // 69 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0x42, 0xE2, 0x06, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x42, 0x44, 0xCE, 0x40, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, // 71 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0x40, 0x42, 0x42, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, // 72 + 0x02, 0x02, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, // 73 + 0x00, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x0C, 0x08, 0x08, 0x07, 0x00, 0x00, // 74 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0xA0, 0x12, 0x0A, 0x06, 0x02, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x01, 0x0A, 0x0C, 0x08, 0x08, // 75 + 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x02, // 76 + 0x02, 0x02, 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x80, 0x70, 0x0C, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x01, 0x02, 0x0E, 0x01, 0x08, 0x08, 0x0F, 0x08, 0x08, // 77 + 0x02, 0x02, 0xFE, 0x08, 0x10, 0x20, 0xC0, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x0F, 0x00, 0x00, // 78 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0xF0, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, 0x01, // 79 + 0x02, 0x02, 0xFE, 0x82, 0x82, 0x82, 0x44, 0x38, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x00, // 80 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0xF0, 0x01, 0x02, 0x04, 0x08, 0x08, 0x18, 0x28, 0x24, 0x42, 0x41, // 81 + 0x02, 0x02, 0xFE, 0x42, 0x42, 0xC2, 0x24, 0x18, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x03, 0x04, 0x08, 0x08, // 82 + 0x18, 0x24, 0x22, 0x42, 0x42, 0x84, 0x0E, 0x0E, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03, // 83 + 0x0E, 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x0E, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, // 84 + 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, // 85 + 0x02, 0x02, 0x1E, 0xE2, 0x00, 0x00, 0x00, 0xE2, 0x1E, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, // 86 + 0x02, 0x06, 0x0E, 0x72, 0x80, 0x02, 0x82, 0x5E, 0xE2, 0x00, 0x00, 0xE2, 0x1E, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x03, 0x00, 0x00, 0x03, 0x0C, 0x03, 0x00, 0x00, 0x00, // 87 + 0x02, 0x02, 0x06, 0x0A, 0xB2, 0x40, 0xB0, 0x0A, 0x06, 0x02, 0x02, 0x08, 0x08, 0x0C, 0x0A, 0x01, 0x00, 0x01, 0x0A, 0x0C, 0x08, 0x08, // 88 + 0x02, 0x02, 0x0E, 0x32, 0xC0, 0x20, 0x1A, 0x06, 0x02, 0x02, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x00, // 89 + 0x00, 0x0E, 0x02, 0x82, 0x62, 0x12, 0x0E, 0x02, 0x00, 0x08, 0x0E, 0x09, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x02, // 90 + 0xFE, 0x02, 0x02, 0x7F, 0x40, 0x40, // 91 + 0x06, 0x78, 0x80, 0x00, 0x00, 0x00, 0x03, 0x0C, // 92 + 0x02, 0x02, 0xFE, 0x40, 0x40, 0x7F, // 93 + 0x40, 0x30, 0x0C, 0x02, 0x02, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 95 + 0x02, 0x0C, 0x00, 0x00, // 96 + 0x40, 0x20, 0x20, 0xA0, 0xC0, 0x00, 0x06, 0x09, 0x09, 0x04, 0x0F, 0x08, // 97 + 0x04, 0xFE, 0x40, 0x20, 0x20, 0x40, 0x80, 0x00, 0x07, 0x08, 0x08, 0x08, 0x04, 0x03, // 98 + 0xC0, 0x20, 0x20, 0x20, 0x40, 0x07, 0x08, 0x08, 0x08, 0x04, // 99 + 0x80, 0x40, 0x20, 0x20, 0x44, 0xFE, 0x00, 0x03, 0x04, 0x08, 0x08, 0x04, 0x0F, 0x04, // 100 + 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, 0x07, 0x08, 0x08, 0x08, 0x04, // 101 + 0x20, 0xFC, 0x22, 0x22, 0x08, 0x0F, 0x08, 0x08, // 102 + 0x00, 0xC0, 0x20, 0x20, 0x20, 0xE0, 0x20, 0x30, 0x4D, 0x4A, 0x4A, 0x4A, 0x49, 0x30, // 103 + 0x04, 0xFE, 0x40, 0x20, 0x20, 0xC0, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x08, 0x0F, 0x08, // 104 + 0x40, 0xE2, 0x00, 0x08, 0x0F, 0x08, // 105 + 0x00, 0x40, 0xE2, 0x40, 0x40, 0x3F, // 106 + 0x04, 0xFE, 0x00, 0x80, 0x60, 0x20, 0x20, 0x00, 0x08, 0x0F, 0x09, 0x01, 0x02, 0x0C, 0x08, 0x08, // 107 + 0x04, 0xFE, 0x00, 0x08, 0x0F, 0x08, // 108 + 0x40, 0xE0, 0x40, 0x20, 0x20, 0xC0, 0x40, 0x20, 0x20, 0xC0, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x08, 0x0F, 0x08, // 109 + 0x40, 0xE0, 0x40, 0x20, 0x20, 0xC0, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x08, 0x0F, 0x08, // 110 + 0x80, 0x40, 0x20, 0x20, 0x40, 0x80, 0x03, 0x04, 0x08, 0x08, 0x04, 0x03, // 111 + 0x40, 0xE0, 0x40, 0x20, 0x20, 0x40, 0x80, 0x40, 0x7F, 0x44, 0x08, 0x08, 0x04, 0x03, // 112 + 0x80, 0x40, 0x20, 0x20, 0x40, 0xE0, 0x00, 0x07, 0x0C, 0x08, 0x08, 0x44, 0x7F, 0x40, // 113 + 0x40, 0xE0, 0x40, 0x20, 0x20, 0x08, 0x0F, 0x08, 0x00, 0x00, // 114 + 0xC0, 0x20, 0x20, 0x60, 0x0C, 0x09, 0x09, 0x06, // 115 + 0x20, 0xF8, 0x20, 0x20, 0x00, 0x0F, 0x08, 0x04, // 116 + 0x20, 0xE0, 0x00, 0x00, 0x20, 0xE0, 0x00, 0x00, 0x07, 0x08, 0x08, 0x04, 0x0F, 0x04, // 117 + 0x20, 0xE0, 0x20, 0x00, 0x20, 0xE0, 0x20, 0x00, 0x00, 0x07, 0x08, 0x07, 0x00, 0x00, // 118 + 0x20, 0xE0, 0x20, 0x00, 0x20, 0xE0, 0x20, 0x00, 0x20, 0xE0, 0x20, 0x00, 0x00, 0x07, 0x0C, 0x03, 0x00, 0x07, 0x0C, 0x03, 0x00, 0x00, // 119 + 0x20, 0x60, 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x08, 0x0C, 0x0A, 0x01, 0x0A, 0x0C, 0x08, // 120 + 0x20, 0xE0, 0x20, 0x00, 0x20, 0xE0, 0x20, 0x40, 0x40, 0x23, 0x1C, 0x07, 0x00, 0x00, // 121 + 0x00, 0x60, 0x20, 0xA0, 0x60, 0x20, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x0C, // 122 + 0x80, 0x78, 0x04, 0x02, 0x00, 0x1F, 0x20, 0x40, // 123 + 0xFE, 0xFF, // 124 + 0x02, 0x04, 0x78, 0x80, 0x40, 0x20, 0x1F, 0x00, // 125 + 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_bold.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_bold.h new file mode 100644 index 0000000..e791644 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_bold.h @@ -0,0 +1,161 @@ +/* + * + * TimesNewRoman16_bold + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : TimesNewRoman16_bold.h + * Date : 10.11.2012 + * Font size in bytes : 11270 + * Font width : 10 + * Font height : 16 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef TimesNewRoman16_bold_H +#define TimesNewRoman16_bold_H + +#define TimesNewRoman16_bold_WIDTH 10 +#define TimesNewRoman16_bold_HEIGHT 16 + +GLCDFONTDECL(TimesNewRoman16_bold) = { + 0x2C, 0x06, // size + 0x0A, // width + 0x10, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x02, 0x06, 0x08, 0x07, 0x0E, 0x0C, 0x02, 0x04, 0x04, + 0x05, 0x09, 0x02, 0x04, 0x02, 0x04, 0x07, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x02, 0x08, 0x08, + 0x08, 0x06, 0x0E, 0x0B, 0x0A, 0x09, 0x0B, 0x09, 0x09, 0x0A, + 0x0C, 0x06, 0x08, 0x0C, 0x09, 0x10, 0x0C, 0x0A, 0x09, 0x0A, + 0x0C, 0x07, 0x08, 0x0B, 0x0B, 0x0F, 0x0B, 0x0A, 0x09, 0x03, + 0x04, 0x03, 0x07, 0x08, 0x02, 0x07, 0x07, 0x05, 0x07, 0x06, + 0x05, 0x07, 0x08, 0x04, 0x03, 0x09, 0x04, 0x0C, 0x08, 0x06, + 0x07, 0x07, 0x06, 0x05, 0x05, 0x08, 0x08, 0x0A, 0x08, 0x08, + 0x06, 0x05, 0x01, 0x05, 0x07, 0x08, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x3E, 0xFE, 0x0C, 0x0D, // 33 + 0x1E, 0x1E, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x20, 0x20, 0xF0, 0x2E, 0x20, 0xF0, 0x2E, 0x20, 0x01, 0x0F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x01, // 35 + 0x1C, 0x3E, 0x62, 0xFF, 0xC2, 0x86, 0x0C, 0x06, 0x0C, 0x08, 0x1F, 0x09, 0x0F, 0x07, // 36 + 0x3C, 0x7E, 0x42, 0x7E, 0x3C, 0x00, 0xC0, 0x20, 0x18, 0x84, 0xC2, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x0F, 0x07, // 37 + 0x00, 0x80, 0x40, 0x3C, 0xFE, 0xE2, 0x22, 0x1E, 0xAC, 0x60, 0x20, 0x00, 0x07, 0x0F, 0x0C, 0x08, 0x08, 0x0B, 0x07, 0x06, 0x0D, 0x0C, 0x04, 0x02, // 38 + 0x1E, 0x1E, 0x00, 0x00, // 39 + 0xE0, 0xF8, 0x0C, 0x02, 0x07, 0x1F, 0x30, 0x40, // 40 + 0x02, 0x0C, 0xF8, 0xE0, 0x40, 0x30, 0x1F, 0x07, // 41 + 0x28, 0x38, 0x1E, 0x38, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x4C, 0x3C, // 44 + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, // 45 + 0x00, 0x00, 0x0C, 0x0C, // 46 + 0x00, 0xC0, 0x38, 0x06, 0x0C, 0x03, 0x00, 0x00, // 47 + 0xF8, 0xFC, 0x06, 0x02, 0x06, 0xFC, 0xF8, 0x03, 0x07, 0x0C, 0x08, 0x0C, 0x07, 0x03, // 48 + 0x02, 0x02, 0xFE, 0xFE, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, // 49 + 0x08, 0x0C, 0x06, 0x86, 0xFE, 0x3C, 0x00, 0x08, 0x0C, 0x0E, 0x0D, 0x0C, 0x0C, 0x02, // 50 + 0x08, 0x04, 0x46, 0x66, 0xFE, 0xDC, 0x80, 0x0C, 0x0C, 0x08, 0x08, 0x08, 0x07, 0x03, // 51 + 0x80, 0x40, 0x20, 0x18, 0xFC, 0xFE, 0x00, 0x03, 0x03, 0x03, 0x03, 0x0F, 0x0F, 0x03, // 52 + 0x20, 0x3C, 0x36, 0x36, 0x66, 0xE6, 0xC2, 0x0C, 0x0C, 0x0C, 0x08, 0x08, 0x04, 0x03, // 53 + 0xE0, 0xF8, 0x3C, 0x24, 0x66, 0xC2, 0x82, 0x03, 0x07, 0x0C, 0x08, 0x0C, 0x07, 0x03, // 54 + 0x0C, 0x06, 0x06, 0x06, 0xE6, 0x1E, 0x02, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, // 55 + 0x1C, 0xBE, 0x72, 0x62, 0xE2, 0xFE, 0x9C, 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, // 56 + 0x38, 0x7C, 0xC6, 0x82, 0x86, 0xFC, 0xF8, 0x08, 0x08, 0x0C, 0x04, 0x07, 0x03, 0x00, // 57 + 0x60, 0x60, 0x0C, 0x0C, // 58 + 0x60, 0x60, 0x4C, 0x3C, // 59 + 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, // 60 + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // 61 + 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, // 62 + 0x1C, 0x1E, 0x02, 0xC2, 0x7E, 0x3C, 0x00, 0x00, 0x0C, 0x0D, 0x00, 0x00, // 63 + 0xE0, 0x10, 0x08, 0x84, 0xC2, 0x62, 0x22, 0x22, 0xC2, 0xE2, 0x04, 0x08, 0xF0, 0x00, 0x0F, 0x10, 0x20, 0x47, 0x8F, 0x88, 0x84, 0x86, 0x8F, 0x88, 0x44, 0x22, 0x11, 0x08, // 64 + 0x00, 0x00, 0x80, 0x70, 0x0C, 0x1E, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x08, 0x0C, 0x0B, 0x09, 0x01, 0x01, 0x01, 0x0B, 0x0F, 0x0E, 0x08, // 65 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x42, 0x42, 0xE2, 0xBE, 0x1C, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x07, // 66 + 0xF0, 0xFC, 0x0C, 0x02, 0x02, 0x02, 0x04, 0x0C, 0x1E, 0x01, 0x07, 0x06, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, // 67 + 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x02, 0x06, 0x0C, 0xF8, 0xF0, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x0C, 0x06, 0x03, 0x01, // 68 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x42, 0xF2, 0x02, 0x0E, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x09, 0x08, 0x0E, // 69 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x42, 0xF2, 0x02, 0x0E, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x01, 0x00, 0x00, // 70 + 0xF0, 0xFC, 0x0C, 0x02, 0x02, 0x02, 0x84, 0x8C, 0x9E, 0x80, 0x01, 0x07, 0x06, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00, // 71 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x40, 0x40, 0x42, 0xFE, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x08, // 72 + 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, // 73 + 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x07, 0x0F, 0x08, 0x08, 0x08, 0x0F, 0x07, 0x00, // 74 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0xE2, 0x90, 0x10, 0x0A, 0x06, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x01, 0x0B, 0x0E, 0x0C, 0x08, 0x08, // 75 + 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x0E, // 76 + 0x02, 0x02, 0xFE, 0x06, 0x3E, 0xF8, 0xC0, 0x00, 0x00, 0xC0, 0x38, 0x06, 0xFE, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x01, 0x07, 0x0E, 0x03, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, // 77 + 0x02, 0x02, 0xFE, 0x06, 0x0E, 0x38, 0x70, 0xC2, 0x82, 0xFE, 0x02, 0x02, 0x08, 0x08, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x00, 0x00, // 78 + 0xF0, 0xFC, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x0C, 0xFC, 0xF0, 0x01, 0x07, 0x06, 0x08, 0x08, 0x08, 0x08, 0x06, 0x07, 0x01, // 79 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x42, 0x42, 0x7E, 0x3C, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x00, // 80 + 0xF0, 0xFC, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x0C, 0xFC, 0xF0, 0x01, 0x07, 0x06, 0x08, 0x18, 0x38, 0x68, 0x46, 0x47, 0x01, // 81 + 0x02, 0x02, 0xFE, 0xFE, 0x42, 0x42, 0xC2, 0xC2, 0x7E, 0x3C, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00, 0x03, 0x0F, 0x0C, 0x08, 0x08, // 82 + 0x1C, 0x3E, 0x72, 0xE2, 0xC2, 0x84, 0x1E, 0x0F, 0x04, 0x08, 0x08, 0x09, 0x0F, 0x07, // 83 + 0x0E, 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x0E, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00, // 84 + 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, // 85 + 0x02, 0x02, 0x0E, 0x7E, 0xF2, 0x80, 0x00, 0xC0, 0x32, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x01, 0x00, 0x00, 0x00, // 86 + 0x02, 0x0E, 0x7E, 0xF2, 0x80, 0x00, 0xE2, 0x1E, 0x7E, 0xF2, 0x80, 0x00, 0xE2, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x01, 0x00, 0x00, // 87 + 0x02, 0x02, 0x06, 0x1E, 0xFA, 0xE0, 0xA0, 0x1A, 0x06, 0x02, 0x02, 0x08, 0x0C, 0x0C, 0x0B, 0x00, 0x01, 0x0B, 0x0F, 0x0C, 0x08, 0x08, // 88 + 0x02, 0x06, 0x1E, 0x7A, 0xE2, 0x80, 0x60, 0x1A, 0x06, 0x02, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x00, 0x00, // 89 + 0x00, 0x1E, 0x06, 0xC2, 0xE2, 0x7A, 0x1E, 0x06, 0x02, 0x08, 0x0C, 0x0F, 0x0B, 0x08, 0x08, 0x08, 0x0C, 0x0F, // 90 + 0xFE, 0xFE, 0x02, 0x7F, 0x7F, 0x40, // 91 + 0x06, 0x78, 0x80, 0x00, 0x00, 0x00, 0x03, 0x0C, // 92 + 0x02, 0xFE, 0xFE, 0x40, 0x7F, 0x7F, // 93 + 0x40, 0x30, 0x0C, 0x02, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 95 + 0x02, 0x04, 0x00, 0x00, // 96 + 0x40, 0x60, 0x20, 0x20, 0xE0, 0xC0, 0x00, 0x06, 0x0F, 0x09, 0x09, 0x0F, 0x0F, 0x08, // 97 + 0x02, 0xFE, 0xFE, 0x20, 0x20, 0xE0, 0xC0, 0x00, 0x0F, 0x07, 0x08, 0x08, 0x0F, 0x07, // 98 + 0xC0, 0xE0, 0x20, 0x60, 0x60, 0x07, 0x0F, 0x08, 0x08, 0x04, // 99 + 0xC0, 0xE0, 0x20, 0x22, 0xFE, 0xFE, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x08, // 100 + 0xC0, 0xE0, 0x20, 0x20, 0xE0, 0xC0, 0x07, 0x0F, 0x09, 0x09, 0x09, 0x05, // 101 + 0x20, 0xFC, 0xFE, 0x22, 0x06, 0x08, 0x0F, 0x0F, 0x08, 0x00, // 102 + 0xC0, 0xE0, 0x20, 0x20, 0xE0, 0xE0, 0x20, 0x3D, 0x5B, 0x5A, 0x5A, 0x5B, 0x59, 0x30, // 103 + 0x02, 0xFE, 0xFE, 0x40, 0x20, 0xE0, 0xC0, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x0F, 0x0F, 0x08, // 104 + 0x20, 0xE6, 0xE6, 0x00, 0x08, 0x0F, 0x0F, 0x08, // 105 + 0x20, 0xE6, 0xE6, 0x40, 0x7F, 0x3F, // 106 + 0x02, 0xFE, 0xFE, 0x00, 0x80, 0x60, 0x20, 0x20, 0x00, 0x08, 0x0F, 0x0F, 0x09, 0x03, 0x0E, 0x0C, 0x08, 0x08, // 107 + 0x02, 0xFE, 0xFE, 0x00, 0x08, 0x0F, 0x0F, 0x08, // 108 + 0x20, 0xE0, 0xE0, 0x40, 0x20, 0xE0, 0xC0, 0x40, 0x20, 0xE0, 0xC0, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x0F, 0x0F, 0x08, 0x00, 0x0F, 0x0F, 0x08, // 109 + 0x20, 0xE0, 0xE0, 0x40, 0x20, 0xE0, 0xC0, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x0F, 0x0F, 0x08, // 110 + 0xC0, 0xE0, 0x20, 0x20, 0xE0, 0xC0, 0x07, 0x0F, 0x08, 0x08, 0x0F, 0x07, // 111 + 0x20, 0xE0, 0xE0, 0x20, 0x20, 0xE0, 0xC0, 0x40, 0x7F, 0x7F, 0x48, 0x08, 0x0F, 0x07, // 112 + 0xC0, 0xE0, 0x20, 0x20, 0xC0, 0xE0, 0x00, 0x07, 0x0F, 0x08, 0x48, 0x7F, 0x7F, 0x40, // 113 + 0x20, 0xE0, 0xE0, 0x40, 0x20, 0x60, 0x08, 0x0F, 0x0F, 0x08, 0x00, 0x00, // 114 + 0xC0, 0xE0, 0xA0, 0x20, 0x60, 0x0C, 0x09, 0x0B, 0x0F, 0x06, // 115 + 0x20, 0xF0, 0xFC, 0x20, 0x20, 0x00, 0x07, 0x0F, 0x08, 0x04, // 116 + 0x20, 0xE0, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x00, 0x00, 0x07, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x08, // 117 + 0x20, 0x60, 0xE0, 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x03, 0x00, 0x00, // 118 + 0x60, 0xE0, 0xA0, 0x00, 0xA0, 0xE0, 0xA0, 0x00, 0xA0, 0x60, 0x00, 0x01, 0x0F, 0x0E, 0x01, 0x01, 0x0F, 0x0E, 0x01, 0x00, // 119 + 0x20, 0x20, 0xE0, 0xE0, 0x80, 0x60, 0x20, 0x20, 0x08, 0x08, 0x0C, 0x03, 0x0F, 0x0E, 0x08, 0x08, // 120 + 0x20, 0xE0, 0xE0, 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x60, 0x60, 0x43, 0x3F, 0x0E, 0x01, 0x00, 0x00, // 121 + 0x60, 0x20, 0xA0, 0xE0, 0xE0, 0x20, 0x08, 0x0E, 0x0F, 0x0B, 0x08, 0x0C, // 122 + 0x80, 0x7C, 0x3E, 0x02, 0x02, 0x00, 0x3F, 0x7E, 0x40, 0x40, // 123 + 0xFE, 0x7F, // 124 + 0x02, 0x02, 0x3E, 0x7C, 0x80, 0x40, 0x40, 0x7E, 0x3F, 0x00, // 125 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_italic.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_italic.h new file mode 100644 index 0000000..04a5f62 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/TimesNewRoman16_italic.h @@ -0,0 +1,161 @@ +/* + * + * TimesNewRoman16_italic + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : TimesNewRoman16_italic.h + * Date : 10.11.2012 + * Font size in bytes : 10998 + * Font width : 10 + * Font height : 16 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _TimesNewRoman16_italic_H +#define _TimesNewRoman16_italic_H + +#define TimesNewRoman16_italic_WIDTH 10 +#define TimesNewRoman16_italic_HEIGHT 16 + +GLCDFONTDECL(TimesNewRoman16_italic) = { + 0x2A, 0xF6, // size + 0x0A, // width + 0x10, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x03, 0x03, 0x05, 0x07, 0x07, 0x0C, 0x0B, 0x01, 0x04, 0x04, + 0x06, 0x09, 0x02, 0x04, 0x02, 0x04, 0x07, 0x05, 0x07, 0x06, + 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x04, 0x05, 0x09, 0x09, + 0x09, 0x06, 0x0E, 0x09, 0x09, 0x0A, 0x0B, 0x0A, 0x0A, 0x0B, + 0x0B, 0x05, 0x07, 0x0B, 0x08, 0x0D, 0x0B, 0x0A, 0x0A, 0x0A, + 0x09, 0x08, 0x08, 0x0A, 0x08, 0x0B, 0x0A, 0x07, 0x09, 0x07, + 0x02, 0x07, 0x07, 0x08, 0x02, 0x07, 0x07, 0x06, 0x08, 0x06, + 0x05, 0x08, 0x07, 0x03, 0x04, 0x08, 0x04, 0x0B, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x06, 0x04, 0x07, 0x07, 0x0A, 0x07, 0x07, + 0x06, 0x05, 0x01, 0x05, 0x08, 0x08, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x00, 0xC0, 0x3E, 0x08, 0x03, 0x00, // 33 + 0x3C, 0x06, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x20, 0xE0, 0x38, 0x26, 0x20, 0xE0, 0x38, 0x0D, 0x03, 0x01, 0x01, 0x0D, 0x03, 0x01, // 35 + 0x00, 0x1C, 0x32, 0xE2, 0x5E, 0x83, 0x0C, 0x06, 0x08, 0x1E, 0x09, 0x0C, 0x07, 0x00, // 36 + 0x38, 0x44, 0x42, 0x22, 0x1C, 0xC0, 0x60, 0x10, 0x88, 0x44, 0x42, 0x80, 0x00, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x07, 0x08, 0x08, 0x04, 0x03, // 37 + 0x80, 0x80, 0x40, 0x40, 0xFC, 0xA2, 0x12, 0x0E, 0x40, 0xC0, 0x40, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x0B, 0x06, 0x0D, 0x09, 0x08, 0x04, // 38 + 0x3C, 0x00, // 39 + 0x80, 0xE0, 0x30, 0x08, 0x3F, 0x40, 0x00, 0x00, // 40 + 0x00, 0x00, 0x06, 0xF8, 0x10, 0x08, 0x07, 0x01, // 41 + 0x24, 0x24, 0x18, 0x7E, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x14, 0x0C, // 44 + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, // 45 + 0x00, 0x00, 0x0C, 0x0C, // 46 + 0x00, 0x80, 0x70, 0x0C, 0x06, 0x01, 0x00, 0x00, // 47 + 0xE0, 0x18, 0x04, 0x02, 0x02, 0x02, 0xFC, 0x07, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, // 48 + 0x00, 0x00, 0x80, 0x72, 0x0E, 0x08, 0x0C, 0x0B, 0x08, 0x00, // 49 + 0x00, 0x00, 0x04, 0x02, 0x82, 0x62, 0x1C, 0x08, 0x0C, 0x0A, 0x09, 0x08, 0x04, 0x00, // 50 + 0x00, 0x00, 0x44, 0x62, 0x92, 0x0C, 0x0C, 0x08, 0x08, 0x04, 0x03, 0x00, // 51 + 0x80, 0x40, 0x30, 0x08, 0xE4, 0x1E, 0x01, 0x01, 0x01, 0x0D, 0x03, 0x01, // 52 + 0x00, 0x00, 0x10, 0x1E, 0x22, 0xC2, 0x02, 0x0C, 0x08, 0x08, 0x08, 0x06, 0x01, 0x00, // 53 + 0xC0, 0x70, 0x18, 0x14, 0x14, 0xE2, 0x02, 0x07, 0x08, 0x08, 0x08, 0x06, 0x01, 0x00, // 54 + 0x04, 0x02, 0x02, 0xC2, 0x32, 0x0E, 0x02, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x80, 0x5C, 0x22, 0x42, 0xA2, 0x1C, 0x07, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, // 56 + 0x00, 0xF0, 0x0C, 0x02, 0x02, 0x82, 0x7C, 0x08, 0x08, 0x09, 0x05, 0x03, 0x01, 0x00, // 57 + 0x00, 0x00, 0x60, 0x60, 0x0C, 0x0C, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x60, 0x60, 0x20, 0x14, 0x0C, 0x00, 0x00, // 59 + 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, // 60 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, // 62 + 0x00, 0x0C, 0x82, 0x42, 0x22, 0x1C, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, // 63 + 0xC0, 0x30, 0x08, 0x04, 0xC4, 0x22, 0x12, 0x12, 0xE2, 0x32, 0x04, 0x08, 0xF0, 0x00, 0x0F, 0x10, 0x20, 0x4F, 0x88, 0x88, 0x84, 0x8F, 0x89, 0x88, 0x44, 0x26, 0x11, 0x08, // 64 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0x98, 0x84, 0xFE, 0x00, 0x08, 0x0C, 0x0B, 0x00, 0x00, 0x08, 0x08, 0x0F, 0x08, // 65 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0x42, 0x42, 0xA2, 0x1C, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, // 66 + 0xE0, 0x18, 0x04, 0x04, 0x02, 0x02, 0x02, 0x04, 0x1C, 0x06, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, 0x00, 0x00, // 67 + 0x00, 0x00, 0x80, 0x72, 0x0E, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x03, 0x00, // 68 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0x42, 0xC2, 0x72, 0x02, 0x0E, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x08, 0x09, 0x0C, 0x02, 0x00, // 69 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0x42, 0xC2, 0x72, 0x02, 0x0E, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // 70 + 0xE0, 0x18, 0x04, 0x04, 0x02, 0x02, 0x02, 0x42, 0xC4, 0x5C, 0x46, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0C, 0x03, 0x00, 0x00, // 71 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0x42, 0x40, 0x40, 0xC0, 0x72, 0x0E, 0x08, 0x0C, 0x0B, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0B, 0x08, 0x00, // 72 + 0x00, 0x00, 0x80, 0x72, 0x0E, 0x08, 0x0C, 0x0B, 0x08, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0xC2, 0x3A, 0x06, 0x0E, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, // 74 + 0x00, 0x00, 0x80, 0x72, 0xCE, 0x22, 0x10, 0x08, 0x0A, 0x06, 0x02, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x01, 0x0A, 0x0C, 0x08, 0x08, 0x00, // 75 + 0x00, 0x00, 0x80, 0x72, 0x0E, 0x02, 0x02, 0x00, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x08, 0x08, 0x0E, // 76 + 0x00, 0x00, 0x80, 0x72, 0x0E, 0xFC, 0x00, 0x00, 0xC0, 0x20, 0x90, 0x7C, 0x0E, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x0F, 0x06, 0x01, 0x08, 0x0C, 0x0B, 0x08, 0x00, // 77 + 0x00, 0x00, 0x82, 0x72, 0x0E, 0x38, 0xC0, 0x00, 0x00, 0xE2, 0x1E, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x00, 0x03, 0x0C, 0x07, 0x00, 0x00, // 78 + 0xC0, 0x30, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x84, 0x78, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, // 79 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0x42, 0x42, 0x42, 0x22, 0x1C, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xC0, 0x30, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x84, 0x78, 0x47, 0x3C, 0x28, 0x28, 0x48, 0x44, 0x44, 0x22, 0x21, 0x00, // 81 + 0x00, 0x00, 0x80, 0x72, 0x4E, 0xC2, 0x42, 0x22, 0x1C, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x00, 0x03, 0x0C, 0x08, // 82 + 0x00, 0x00, 0x1C, 0x22, 0x42, 0x82, 0x04, 0x1C, 0x0C, 0x07, 0x04, 0x08, 0x08, 0x08, 0x07, 0x00, // 83 + 0x08, 0x06, 0x02, 0x82, 0x72, 0x0E, 0x02, 0x02, 0x00, 0x08, 0x0C, 0x0B, 0x08, 0x00, 0x00, 0x00, // 84 + 0x82, 0x72, 0x0E, 0x02, 0x02, 0x00, 0x00, 0x80, 0x72, 0x0E, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, // 85 + 0xC2, 0x3E, 0x02, 0x82, 0x40, 0x30, 0x0E, 0x06, 0x0F, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x82, 0x7E, 0x02, 0xC0, 0x32, 0x8A, 0x7E, 0x82, 0x42, 0x30, 0x0A, 0x0F, 0x06, 0x01, 0x00, 0x00, 0x0F, 0x06, 0x01, 0x00, 0x00, 0x00, // 87 + 0x00, 0x00, 0x02, 0x02, 0x9E, 0xE2, 0x20, 0x10, 0x0A, 0x06, 0x08, 0x0C, 0x0A, 0x01, 0x00, 0x08, 0x0F, 0x08, 0x08, 0x00, // 88 + 0x00, 0x02, 0x1E, 0xE2, 0x20, 0x10, 0x0A, 0x08, 0x08, 0x0F, 0x08, 0x00, 0x00, 0x00, // 89 + 0x00, 0x00, 0x0E, 0x82, 0x42, 0x22, 0x1A, 0x06, 0x02, 0x08, 0x0C, 0x0B, 0x08, 0x08, 0x08, 0x0C, 0x02, 0x00, // 90 + 0x00, 0x00, 0x80, 0x78, 0x06, 0x02, 0x02, 0x60, 0x5C, 0x43, 0x40, 0x00, 0x00, 0x00, // 91 + 0x7E, 0xC0, 0x00, 0x0F, // 92 + 0x00, 0x00, 0x00, 0x02, 0xC2, 0x3A, 0x06, 0x40, 0x40, 0x60, 0x1C, 0x03, 0x00, 0x00, // 93 + 0x40, 0x30, 0x0C, 0x02, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 95 + 0x02, 0x0C, 0x00, 0x00, // 96 + 0x00, 0x80, 0x40, 0x20, 0x20, 0xC0, 0x60, 0x0F, 0x08, 0x08, 0x04, 0x0E, 0x0B, 0x04, // 97 + 0x00, 0x80, 0x72, 0x4E, 0x20, 0x20, 0xC0, 0x04, 0x0B, 0x08, 0x08, 0x04, 0x06, 0x01, // 98 + 0x00, 0xC0, 0x40, 0x20, 0x20, 0x60, 0x07, 0x08, 0x08, 0x08, 0x04, 0x00, // 99 + 0x00, 0x80, 0x40, 0x20, 0x20, 0xC0, 0x72, 0x0E, 0x0F, 0x08, 0x08, 0x04, 0x0E, 0x0B, 0x04, 0x00, // 100 + 0x00, 0xC0, 0x40, 0x20, 0x20, 0xE0, 0x07, 0x0A, 0x0A, 0x09, 0x05, 0x00, // 101 + 0x00, 0x20, 0xA0, 0x70, 0x2C, 0x20, 0x1C, 0x03, 0x00, 0x00, // 102 + 0x00, 0xC0, 0x40, 0x20, 0x20, 0x20, 0xE0, 0x20, 0x30, 0x4D, 0x4A, 0x4A, 0x4A, 0x51, 0x30, 0x00, // 103 + 0x00, 0x80, 0x72, 0x8E, 0x40, 0x20, 0xE0, 0x0C, 0x03, 0x01, 0x00, 0x0C, 0x0B, 0x04, // 104 + 0x20, 0xA0, 0x64, 0x0C, 0x0B, 0x04, // 105 + 0x00, 0x00, 0xA0, 0x64, 0x20, 0x1C, 0x03, 0x00, // 106 + 0x00, 0x80, 0x72, 0x8E, 0x60, 0x20, 0x20, 0x20, 0x0C, 0x03, 0x01, 0x03, 0x0C, 0x08, 0x04, 0x00, // 107 + 0x00, 0x80, 0x72, 0x0E, 0x0C, 0x0B, 0x04, 0x00, // 108 + 0x00, 0xA0, 0x60, 0x80, 0x40, 0x20, 0xE0, 0x80, 0x40, 0x20, 0xE0, 0x0C, 0x03, 0x01, 0x00, 0x0C, 0x03, 0x01, 0x00, 0x0C, 0x0B, 0x04, // 109 + 0x00, 0x20, 0xE0, 0x80, 0x40, 0x20, 0xE0, 0x0C, 0x03, 0x01, 0x00, 0x0C, 0x0B, 0x04, // 110 + 0x00, 0xC0, 0x40, 0x20, 0x20, 0x20, 0xC0, 0x07, 0x08, 0x08, 0x08, 0x04, 0x06, 0x01, // 111 + 0x20, 0xA0, 0xE0, 0x40, 0x20, 0x20, 0xC0, 0x5C, 0x0B, 0x08, 0x08, 0x04, 0x02, 0x01, // 112 + 0x00, 0x80, 0x40, 0x20, 0x20, 0xC0, 0x60, 0x07, 0x08, 0x48, 0x64, 0x5E, 0x03, 0x00, // 113 + 0x00, 0xA0, 0xE0, 0x40, 0x20, 0x60, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0xC0, 0x20, 0x20, 0x20, 0x60, 0x0E, 0x08, 0x09, 0x09, 0x06, 0x00, // 115 + 0x00, 0xA0, 0x70, 0x28, 0x0C, 0x0B, 0x08, 0x04, // 116 + 0x40, 0xA0, 0x60, 0x00, 0x00, 0x80, 0x60, 0x0C, 0x0B, 0x08, 0x04, 0x0E, 0x0B, 0x04, // 117 + 0x20, 0x60, 0xC0, 0x00, 0x00, 0x20, 0xE0, 0x00, 0x00, 0x0F, 0x04, 0x02, 0x01, 0x00, // 118 + 0x20, 0x60, 0xC0, 0x00, 0x00, 0x80, 0xE0, 0x00, 0x20, 0xE0, 0x00, 0x00, 0x0F, 0x02, 0x01, 0x00, 0x0F, 0x04, 0x03, 0x00, // 119 + 0x00, 0x20, 0x20, 0xE0, 0x40, 0x20, 0x20, 0x08, 0x0C, 0x02, 0x01, 0x0E, 0x08, 0x00, // 120 + 0x20, 0x60, 0xC0, 0x00, 0x00, 0xA0, 0x60, 0x20, 0x10, 0x0F, 0x04, 0x02, 0x01, 0x00, // 121 + 0x40, 0x20, 0x20, 0xA0, 0x60, 0x20, 0x0C, 0x0A, 0x09, 0x08, 0x04, 0x00, // 122 + 0x80, 0x40, 0x38, 0x0C, 0x02, 0x38, 0x47, 0x00, 0x00, 0x00, // 123 + 0xFE, 0xFF, // 124 + 0x00, 0x00, 0x00, 0xE2, 0x1C, 0x40, 0x30, 0x1C, 0x02, 0x01, // 125 + 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12.h new file mode 100644 index 0000000..9f788b0 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12.h @@ -0,0 +1,161 @@ +/* + * + * Verdana12 + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Verdana12.h + * Date : 10.11.2012 + * Font size in bytes : 6546 + * Font width : 10 + * Font height : 12 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Verdana12_H +#define _Verdana12_H + +#define _Verdana12_WIDTH 10 +#define _Verdana12_HEIGHT 12 + +GLCDFONTDECL(Verdana12) = { + 0x19, 0x92, // size + 0x0A, // width + 0x0C, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x01, 0x04, 0x08, 0x06, 0x0B, 0x08, 0x01, 0x03, 0x03, + 0x05, 0x07, 0x02, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x06, + 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x02, 0x07, 0x07, + 0x07, 0x05, 0x0A, 0x08, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, + 0x07, 0x03, 0x04, 0x06, 0x06, 0x08, 0x07, 0x08, 0x06, 0x08, + 0x07, 0x06, 0x07, 0x07, 0x08, 0x0B, 0x06, 0x07, 0x06, 0x03, + 0x05, 0x03, 0x08, 0x08, 0x02, 0x06, 0x06, 0x05, 0x06, 0x06, + 0x04, 0x06, 0x06, 0x01, 0x03, 0x05, 0x01, 0x09, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x05, 0x05, 0x06, 0x05, 0x09, 0x05, 0x05, + 0x05, 0x05, 0x01, 0x05, 0x08, 0x09, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xFE, 0x20, // 33 + 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, // 34 + 0x80, 0x90, 0xF8, 0x96, 0x90, 0xF8, 0x96, 0x10, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 35 + 0x18, 0x24, 0xFF, 0x44, 0x44, 0x84, 0x20, 0x20, 0xF0, 0x20, 0x20, 0x10, // 36 + 0x1C, 0x22, 0x22, 0x1C, 0x80, 0x70, 0x0C, 0xC2, 0x20, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x20, 0x20, 0x10, // 37 + 0xDC, 0x22, 0x22, 0x22, 0x5C, 0x80, 0x60, 0x00, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x20, // 38 + 0x07, 0x00, // 39 + 0xF8, 0x06, 0x01, 0x10, 0x60, 0x80, // 40 + 0x01, 0x06, 0xF8, 0x80, 0x60, 0x10, // 41 + 0x0A, 0x04, 0x1F, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0xF8, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x80, 0x70, // 44 + 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x30, // 46 + 0x00, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x00, 0x00, 0x00, // 47 + 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 48 + 0x04, 0x04, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x30, 0x20, 0x20, // 49 + 0x0C, 0x82, 0x42, 0x42, 0x22, 0x1C, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 50 + 0x04, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 51 + 0x60, 0x50, 0x48, 0x44, 0xFE, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 52 + 0x1E, 0x12, 0x12, 0x12, 0x12, 0xE2, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 53 + 0xF8, 0x14, 0x12, 0x12, 0x12, 0xE0, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 54 + 0x02, 0x02, 0x82, 0x62, 0x1A, 0x06, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, // 55 + 0xDC, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 56 + 0x3C, 0x42, 0x42, 0x42, 0x42, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x10, 0x00, // 57 + 0x18, 0x30, // 58 + 0x00, 0x18, 0x80, 0x70, // 59 + 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x08, 0x08, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x20, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, // 62 + 0x04, 0x02, 0xE2, 0x22, 0x1C, 0x00, 0x00, 0x20, 0x00, 0x00, // 63 + 0xF0, 0x0C, 0x04, 0xF2, 0x0A, 0x0A, 0xFA, 0x04, 0x0C, 0xF0, 0x00, 0x30, 0x20, 0x40, 0x50, 0x50, 0x50, 0x10, 0x10, 0x00, // 64 + 0x00, 0xE0, 0x98, 0x86, 0x86, 0x98, 0xE0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // 65 + 0xFE, 0x22, 0x22, 0x22, 0x3C, 0xC0, 0x30, 0x20, 0x20, 0x20, 0x20, 0x10, // 66 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x00, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 67 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x30, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, // 68 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 69 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF8, 0x04, 0x02, 0x02, 0x22, 0x22, 0xE4, 0x00, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 71 + 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // 72 + 0x02, 0xFE, 0x02, 0x20, 0x30, 0x20, // 73 + 0x00, 0x02, 0x02, 0xFE, 0x20, 0x20, 0x20, 0x10, // 74 + 0xFE, 0x20, 0x50, 0x88, 0x04, 0x02, 0x30, 0x00, 0x00, 0x00, 0x10, 0x20, // 75 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 76 + 0xFE, 0x06, 0x38, 0xC0, 0xC0, 0x38, 0x06, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // 77 + 0xFE, 0x06, 0x18, 0x20, 0xC0, 0x00, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, // 78 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, // 79 + 0xFE, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x10, 0x20, 0x20, 0x20, 0x60, 0x90, 0x80, // 81 + 0xFE, 0x22, 0x22, 0x62, 0xA2, 0x1C, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, // 82 + 0x1C, 0x22, 0x22, 0x22, 0x22, 0xC4, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 83 + 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 84 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 85 + 0x06, 0x38, 0xC0, 0x00, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // 86 + 0x1E, 0xE0, 0x00, 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 87 + 0x06, 0x88, 0x70, 0x70, 0x88, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, // 88 + 0x02, 0x0C, 0x10, 0xE0, 0x10, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 89 + 0x02, 0x82, 0x62, 0x12, 0x0A, 0x06, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 90 + 0xFF, 0x01, 0x01, 0xF0, 0x80, 0x80, // 91 + 0x03, 0x1C, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, // 92 + 0x01, 0x01, 0xFF, 0x80, 0x80, 0xF0, // 93 + 0x10, 0x08, 0x04, 0x02, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0x80, 0x48, 0x48, 0x48, 0x48, 0xF0, 0x10, 0x20, 0x20, 0x20, 0x20, 0x30, // 97 + 0xFF, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x30, 0x20, 0x20, 0x20, 0x20, 0x10, // 98 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, // 99 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xFF, 0x10, 0x20, 0x20, 0x20, 0x10, 0x30, // 100 + 0xF0, 0x48, 0x48, 0x48, 0x48, 0x70, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 101 + 0x08, 0xFE, 0x09, 0x09, 0x00, 0x30, 0x00, 0x00, // 102 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF8, 0x10, 0xA0, 0xA0, 0xA0, 0x90, 0x70, // 103 + 0xFF, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, // 104 + 0xF9, 0x30, // 105 + 0x00, 0x08, 0xF9, 0x80, 0x80, 0x70, // 106 + 0xFF, 0x40, 0xA0, 0x10, 0x08, 0x30, 0x00, 0x00, 0x10, 0x20, // 107 + 0xFF, 0x30, // 108 + 0xF8, 0x08, 0x08, 0x08, 0xF0, 0x08, 0x08, 0x08, 0xF0, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, // 109 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, // 110 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, // 111 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x10, // 112 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF8, 0x10, 0x20, 0x20, 0x20, 0x10, 0xF0, // 113 + 0xF8, 0x10, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, // 114 + 0x30, 0x48, 0x48, 0x48, 0x88, 0x20, 0x20, 0x20, 0x20, 0x10, // 115 + 0x08, 0xFE, 0x08, 0x08, 0x08, 0x00, 0x10, 0x20, 0x20, 0x20, // 116 + 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x10, 0x20, 0x20, 0x20, 0x10, 0x30, // 117 + 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, // 118 + 0x18, 0xE0, 0x00, 0xE0, 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 119 + 0x18, 0xA0, 0x40, 0xA0, 0x18, 0x30, 0x00, 0x00, 0x00, 0x30, // 120 + 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x80, 0x70, 0x00, 0x00, // 121 + 0x08, 0x88, 0x48, 0x28, 0x18, 0x30, 0x20, 0x20, 0x20, 0x20, // 122 + 0x20, 0x20, 0xDE, 0x01, 0x01, 0x00, 0x00, 0x70, 0x80, 0x80, // 123 + 0xFF, 0xF0, // 124 + 0x01, 0x01, 0xDE, 0x20, 0x20, 0x80, 0x80, 0x70, 0x00, 0x00, // 125 + 0xC0, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_bold.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_bold.h new file mode 100644 index 0000000..aa58c2c --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_bold.h @@ -0,0 +1,161 @@ +/* + * + * Verdana12_bold + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Verdana12_bold.h + * Date : 10.11.2012 + * Font size in bytes : 7266 + * Font width : 10 + * Font height : 12 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Verdana12_bold_H +#define _Verdana12_bold_H + +#define Verdana12_bold_WIDTH 10 +#define Verdana12_bold_HEIGHT 12 + +GLCDFONTDECL(Verdana12_bold) = { + 0x1C, 0x62, // size + 0x0A, // width + 0x0C, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x02, 0x02, 0x05, 0x08, 0x07, 0x0D, 0x08, 0x02, 0x04, 0x04, + 0x05, 0x07, 0x02, 0x04, 0x02, 0x06, 0x07, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x02, 0x07, 0x07, + 0x07, 0x05, 0x0A, 0x07, 0x07, 0x07, 0x08, 0x06, 0x06, 0x08, + 0x08, 0x04, 0x06, 0x07, 0x07, 0x09, 0x08, 0x09, 0x07, 0x09, + 0x08, 0x07, 0x08, 0x08, 0x07, 0x0C, 0x07, 0x08, 0x06, 0x04, + 0x06, 0x04, 0x08, 0x09, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x05, 0x06, 0x06, 0x02, 0x04, 0x07, 0x02, 0x0A, 0x06, 0x06, + 0x06, 0x06, 0x05, 0x05, 0x05, 0x06, 0x06, 0x0A, 0x06, 0x06, + 0x05, 0x06, 0x02, 0x06, 0x08, 0x09, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x7E, 0x7E, 0x30, 0x30, // 33 + 0x07, 0x07, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0xC0, 0xD8, 0xF8, 0xDE, 0xD8, 0xF8, 0xDE, 0x18, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 35 + 0x38, 0x7C, 0x64, 0xFF, 0x64, 0xE4, 0xC8, 0x10, 0x20, 0x20, 0xF0, 0x20, 0x30, 0x10, // 36 + 0x3C, 0x7E, 0x42, 0x7E, 0x3C, 0xC0, 0x20, 0x18, 0xE6, 0xF0, 0x10, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x30, 0x20, 0x30, 0x10, // 37 + 0xDC, 0xFE, 0x22, 0x7E, 0xDC, 0x80, 0x60, 0x20, 0x10, 0x30, 0x20, 0x20, 0x20, 0x10, 0x30, 0x20, // 38 + 0x07, 0x07, 0x00, 0x00, // 39 + 0xF8, 0xFE, 0x07, 0x01, 0x10, 0x70, 0xE0, 0x80, // 40 + 0x01, 0x07, 0xFE, 0xF8, 0x80, 0xE0, 0x70, 0x10, // 41 + 0x12, 0x0C, 0x3F, 0x0C, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x20, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0xF0, 0x70, // 44 + 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x30, 0x30, // 46 + 0x00, 0x80, 0xE0, 0x7C, 0x1F, 0x03, 0xC0, 0xF0, 0x30, 0x00, 0x00, 0x00, // 47 + 0xFC, 0xFE, 0x02, 0x02, 0x02, 0xFE, 0xFC, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 48 + 0x04, 0x04, 0xFE, 0xFE, 0x00, 0x00, 0x20, 0x20, 0x30, 0x30, 0x20, 0x20, // 49 + 0x04, 0x06, 0x82, 0xC2, 0x62, 0x3E, 0x1C, 0x20, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, // 50 + 0x04, 0x06, 0x22, 0x22, 0x22, 0xFE, 0xDC, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 51 + 0xC0, 0xA0, 0x98, 0x84, 0xFE, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, // 52 + 0x00, 0x1E, 0x1E, 0x12, 0x12, 0xF2, 0xE2, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 53 + 0xF8, 0xFC, 0x16, 0x12, 0x12, 0xF2, 0xE0, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 54 + 0x02, 0x02, 0x82, 0xE2, 0x7A, 0x1E, 0x06, 0x00, 0x20, 0x30, 0x10, 0x00, 0x00, 0x00, // 55 + 0xDC, 0xFE, 0x22, 0x22, 0x22, 0xFE, 0xDC, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 56 + 0x3C, 0x7E, 0x42, 0x42, 0x42, 0xFE, 0xFC, 0x00, 0x20, 0x20, 0x20, 0x30, 0x10, 0x00, // 57 + 0x18, 0x18, 0x30, 0x30, // 58 + 0x18, 0x18, 0xF0, 0x70, // 59 + 0x60, 0x60, 0x90, 0x90, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, // 60 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x04, 0x08, 0x08, 0x90, 0x90, 0x60, 0x60, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // 62 + 0x04, 0x62, 0x72, 0x1E, 0x0C, 0x00, 0x30, 0x30, 0x00, 0x00, // 63 + 0xF0, 0x0C, 0xF4, 0xFA, 0x0A, 0xFA, 0xFA, 0x04, 0x0C, 0xF0, 0x00, 0x30, 0x20, 0x50, 0x50, 0x50, 0x50, 0x10, 0x10, 0x00, // 64 + 0x80, 0xF8, 0xFE, 0x86, 0xFE, 0xF8, 0x80, 0x30, 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, // 65 + 0xFE, 0xFE, 0x22, 0x22, 0x3E, 0xFC, 0xC0, 0x30, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, // 66 + 0xF8, 0xFC, 0x06, 0x02, 0x02, 0x02, 0x04, 0x00, 0x10, 0x30, 0x20, 0x20, 0x20, 0x10, // 67 + 0xFE, 0xFE, 0x02, 0x02, 0x02, 0x06, 0xFC, 0xF8, 0x30, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, 0x00, // 68 + 0xFE, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, // 69 + 0xFE, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF8, 0xFC, 0x06, 0x02, 0x42, 0x42, 0xC2, 0xC4, 0x00, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x30, // 71 + 0xFE, 0xFE, 0x20, 0x20, 0x20, 0x20, 0xFE, 0xFE, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, // 72 + 0x02, 0xFE, 0xFE, 0x02, 0x20, 0x30, 0x30, 0x20, // 73 + 0x00, 0x02, 0x02, 0x02, 0xFE, 0xFE, 0x20, 0x20, 0x20, 0x20, 0x30, 0x10, // 74 + 0xFE, 0xFE, 0x70, 0xD8, 0x8C, 0x06, 0x02, 0x30, 0x30, 0x00, 0x00, 0x10, 0x30, 0x20, // 75 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 76 + 0xFE, 0x0E, 0x3C, 0xF0, 0xC0, 0x30, 0x0C, 0xFE, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, // 77 + 0xFE, 0x06, 0x1C, 0x38, 0xE0, 0xC0, 0x00, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, // 78 + 0xF8, 0xFC, 0x06, 0x02, 0x02, 0x02, 0x06, 0xFC, 0xF8, 0x00, 0x10, 0x30, 0x20, 0x20, 0x20, 0x30, 0x10, 0x00, // 79 + 0xFE, 0xFE, 0x42, 0x42, 0x42, 0x7E, 0x3C, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF8, 0xFC, 0x06, 0x02, 0x02, 0x02, 0x06, 0xFC, 0xF8, 0x00, 0x10, 0x30, 0x20, 0x60, 0xE0, 0xB0, 0x90, 0x80, // 81 + 0xFE, 0xFE, 0x22, 0x62, 0xE2, 0xBE, 0x1C, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x10, 0x30, 0x20, // 82 + 0x1C, 0x3E, 0x32, 0x22, 0x62, 0xE2, 0xC4, 0x10, 0x20, 0x20, 0x20, 0x20, 0x30, 0x10, // 83 + 0x02, 0x02, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // 84 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x10, 0x30, 0x20, 0x20, 0x20, 0x20, 0x30, 0x10, // 85 + 0x0E, 0x7E, 0xF0, 0x80, 0xF0, 0x7E, 0x0E, 0x00, 0x00, 0x30, 0x30, 0x30, 0x00, 0x00, // 86 + 0x0E, 0x7E, 0xF0, 0x80, 0xE0, 0x3E, 0x3E, 0xE0, 0x80, 0xF0, 0x7E, 0x0E, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, // 87 + 0x06, 0x8E, 0xF8, 0x70, 0xF8, 0x8E, 0x06, 0x30, 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, // 88 + 0x06, 0x0E, 0x18, 0xF0, 0xF0, 0x18, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // 89 + 0x02, 0xC2, 0xF2, 0x3E, 0x0E, 0x02, 0x30, 0x30, 0x20, 0x20, 0x20, 0x20, // 90 + 0xFF, 0xFF, 0x01, 0x01, 0xF0, 0xF0, 0x80, 0x80, // 91 + 0x03, 0x1F, 0x7C, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0xF0, 0xC0, // 92 + 0x01, 0x01, 0xFF, 0xFF, 0x80, 0x80, 0xF0, 0xF0, // 93 + 0x10, 0x18, 0x0C, 0x06, 0x06, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, // 96 + 0xC0, 0xE8, 0x28, 0x28, 0xF8, 0xF0, 0x10, 0x30, 0x20, 0x20, 0x30, 0x30, // 97 + 0xFF, 0xFF, 0x08, 0x08, 0xF8, 0xF0, 0x30, 0x30, 0x20, 0x20, 0x30, 0x10, // 98 + 0xF0, 0xF8, 0x08, 0x08, 0x08, 0x10, 0x10, 0x30, 0x20, 0x20, 0x20, 0x10, // 99 + 0xF0, 0xF8, 0x08, 0x08, 0xFF, 0xFF, 0x10, 0x30, 0x20, 0x20, 0x30, 0x30, // 100 + 0xF0, 0xF8, 0x48, 0x48, 0x78, 0x70, 0x10, 0x30, 0x20, 0x20, 0x20, 0x10, // 101 + 0x08, 0xFE, 0xFF, 0x09, 0x09, 0x00, 0x30, 0x30, 0x00, 0x00, // 102 + 0xF0, 0xF8, 0x08, 0x08, 0xF8, 0xF8, 0x10, 0xB0, 0xA0, 0xA0, 0xF0, 0x70, // 103 + 0xFF, 0xFF, 0x08, 0x08, 0xF8, 0xF0, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, // 104 + 0xFB, 0xFB, 0x30, 0x30, // 105 + 0x00, 0x08, 0xFB, 0xFB, 0x80, 0x80, 0xF0, 0x70, // 106 + 0xFF, 0xFF, 0x60, 0xF0, 0x98, 0x08, 0x00, 0x30, 0x30, 0x00, 0x00, 0x10, 0x30, 0x20, // 107 + 0xFF, 0xFF, 0x30, 0x30, // 108 + 0xF8, 0xF8, 0x10, 0x08, 0xF8, 0xF0, 0x10, 0x08, 0xF8, 0xF0, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, // 109 + 0xF8, 0xF8, 0x08, 0x08, 0xF8, 0xF0, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, // 110 + 0xF0, 0xF8, 0x08, 0x08, 0xF8, 0xF0, 0x10, 0x30, 0x20, 0x20, 0x30, 0x10, // 111 + 0xF8, 0xF8, 0x08, 0x08, 0xF8, 0xF0, 0xF0, 0xF0, 0x20, 0x20, 0x30, 0x10, // 112 + 0xF0, 0xF8, 0x08, 0x08, 0xF8, 0xF8, 0x10, 0x30, 0x20, 0x20, 0xF0, 0xF0, // 113 + 0xF8, 0xF8, 0x10, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, // 114 + 0x30, 0x78, 0x48, 0xC8, 0x88, 0x20, 0x20, 0x20, 0x30, 0x10, // 115 + 0x08, 0xFE, 0xFE, 0x08, 0x08, 0x00, 0x10, 0x30, 0x20, 0x20, // 116 + 0xF8, 0xF8, 0x00, 0x00, 0xF8, 0xF8, 0x10, 0x30, 0x20, 0x20, 0x30, 0x30, // 117 + 0x38, 0xF8, 0xC0, 0xC0, 0xF8, 0x38, 0x00, 0x10, 0x30, 0x30, 0x10, 0x00, // 118 + 0x78, 0xF8, 0x80, 0xC0, 0x38, 0x38, 0xC0, 0x80, 0xF8, 0x78, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, // 119 + 0x18, 0xB8, 0xE0, 0xE0, 0xB8, 0x18, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, // 120 + 0x38, 0xF8, 0xC0, 0xC0, 0xF8, 0x38, 0x00, 0x90, 0xF0, 0x70, 0x10, 0x00, // 121 + 0x08, 0xC8, 0xE8, 0x78, 0x18, 0x30, 0x30, 0x20, 0x20, 0x20, // 122 + 0x20, 0x20, 0xFE, 0xDF, 0x01, 0x01, 0x00, 0x00, 0x70, 0xF0, 0x80, 0x80, // 123 + 0xFF, 0xFF, 0xF0, 0xF0, // 124 + 0x01, 0x01, 0xDF, 0xFE, 0x20, 0x20, 0x80, 0x80, 0xF0, 0x70, 0x00, 0x00, // 125 + 0xE0, 0x10, 0x10, 0x20, 0x40, 0x80, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_italic.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_italic.h new file mode 100644 index 0000000..673998a --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana12_italic.h @@ -0,0 +1,161 @@ +/* + * + * Verdana12_italic + * + * created with GLCDFontCreator + * original framework by F. Maximilian Thiele + * Modified By Siddharth Kaul + * + * + * File Name : Verdana12_italic.h + * Date : 10.11.2012 + * Font size in bytes : 7122 + * Font width : 10 + * Font height : 12 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef _Verdana12_italic_H +#define _Verdana12_italic_H + +#define Verdana12_italic_WIDTH 10 +#define Verdana12_italic_HEIGHT 12 + +GLCDFONTDECL(Verdana12_italic) = { + 0x1B, 0xD2, // size + 0x0A, // width + 0x0C, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x03, 0x03, 0x04, 0x07, 0x07, 0x0B, 0x08, 0x02, 0x04, 0x04, + 0x05, 0x07, 0x02, 0x03, 0x01, 0x05, 0x07, 0x05, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x02, 0x03, 0x07, 0x07, + 0x07, 0x05, 0x0A, 0x07, 0x07, 0x07, 0x08, 0x08, 0x07, 0x08, + 0x09, 0x05, 0x05, 0x08, 0x06, 0x0A, 0x09, 0x07, 0x07, 0x07, + 0x07, 0x08, 0x06, 0x08, 0x07, 0x0B, 0x08, 0x06, 0x08, 0x05, + 0x03, 0x05, 0x07, 0x07, 0x02, 0x06, 0x06, 0x06, 0x07, 0x06, + 0x04, 0x06, 0x07, 0x03, 0x03, 0x06, 0x03, 0x0B, 0x07, 0x06, + 0x06, 0x06, 0x05, 0x06, 0x04, 0x07, 0x05, 0x08, 0x07, 0x05, + 0x06, 0x06, 0x01, 0x06, 0x07, 0x09, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 + 0x00, 0xF0, 0x0E, 0x20, 0x00, 0x00, // 33 + 0x06, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, // 34 + 0x40, 0xC8, 0x78, 0xCE, 0x78, 0x4E, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, // 35 + 0x00, 0x18, 0x24, 0xFC, 0x47, 0x84, 0x08, 0x10, 0x20, 0xE0, 0x30, 0x20, 0x10, 0x00, // 36 + 0x18, 0x24, 0x22, 0x92, 0x4C, 0x20, 0x90, 0x48, 0x24, 0x22, 0xC0, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x10, 0x00, // 37 + 0xC0, 0x3C, 0x22, 0x22, 0x52, 0x8C, 0x40, 0x20, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, 0x10, 0x20, // 38 + 0x06, 0x01, 0x00, 0x00, // 39 + 0xE0, 0x18, 0x06, 0x01, 0x70, 0x80, 0x00, 0x00, // 40 + 0x00, 0x00, 0x81, 0x7E, 0x80, 0x60, 0x10, 0x00, // 41 + 0x0A, 0x04, 0x1F, 0x04, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0xF8, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x80, 0x70, // 44 + 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // 45 + 0x00, 0x30, // 46 + 0x00, 0x80, 0x60, 0x18, 0x04, 0x20, 0x10, 0x00, 0x00, 0x00, // 47 + 0xE0, 0x18, 0x04, 0x02, 0x02, 0xC2, 0x3C, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 48 + 0x00, 0x00, 0x84, 0x74, 0x0E, 0x20, 0x20, 0x30, 0x20, 0x20, // 49 + 0x00, 0x84, 0x42, 0x42, 0x22, 0x22, 0x1C, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 50 + 0x00, 0x00, 0x04, 0x22, 0x22, 0xD2, 0x0C, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, // 51 + 0x40, 0x60, 0x50, 0x48, 0xC4, 0x72, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 52 + 0x00, 0x18, 0x16, 0x12, 0x12, 0xE2, 0x02, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 53 + 0xF0, 0x28, 0x14, 0x14, 0x12, 0x12, 0xE2, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, // 54 + 0x02, 0x82, 0x42, 0x32, 0x0A, 0x06, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, // 55 + 0x80, 0x58, 0x24, 0x22, 0x22, 0xD2, 0x0C, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 56 + 0x38, 0x44, 0x42, 0x42, 0x42, 0xA2, 0x7C, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 57 + 0x00, 0x18, 0x30, 0x00, // 58 + 0x00, 0x00, 0x18, 0x80, 0x70, 0x00, // 59 + 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, // 60 + 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x08, 0x08, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x20, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, // 62 + 0x04, 0xC2, 0x22, 0x22, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x18, 0xE4, 0x14, 0x0A, 0x0A, 0xCA, 0x3A, 0x84, 0x78, 0x10, 0x20, 0x40, 0x50, 0x50, 0x50, 0x10, 0x10, 0x00, 0x00, // 64 + 0x00, 0xC0, 0x60, 0x58, 0x44, 0x42, 0xFE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // 65 + 0x80, 0x70, 0x2E, 0x22, 0x22, 0x32, 0xCC, 0x30, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, // 66 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 67 + 0x80, 0x70, 0x0E, 0x02, 0x02, 0x02, 0x84, 0x78, 0x30, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 68 + 0x80, 0x70, 0x2E, 0x22, 0x22, 0x22, 0x22, 0x02, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 69 + 0x80, 0x70, 0x2E, 0x22, 0x22, 0x22, 0x22, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF0, 0x08, 0x04, 0x02, 0x42, 0x42, 0xC2, 0x04, 0x00, 0x10, 0x20, 0x20, 0x20, 0x30, 0x00, 0x00, // 71 + 0x80, 0x70, 0x2E, 0x20, 0x20, 0x20, 0xA0, 0x70, 0x0E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 72 + 0x00, 0x80, 0x72, 0x0E, 0x02, 0x20, 0x30, 0x20, 0x00, 0x00, // 73 + 0x00, 0x00, 0x82, 0x72, 0x0E, 0x20, 0x20, 0x10, 0x00, 0x00, // 74 + 0x80, 0x70, 0x2E, 0x60, 0x90, 0x08, 0x04, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, // 75 + 0x80, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, // 76 + 0x80, 0x70, 0x0E, 0x18, 0xE0, 0x40, 0x30, 0x88, 0x74, 0x0E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 77 + 0x80, 0x70, 0x0E, 0x18, 0x20, 0xC0, 0x80, 0x70, 0x0E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 78 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x84, 0x78, 0x00, 0x10, 0x20, 0x20, 0x10, 0x00, 0x00, // 79 + 0x80, 0x70, 0x4E, 0x42, 0x42, 0x22, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF0, 0x08, 0x04, 0x02, 0x02, 0x84, 0x78, 0x00, 0x10, 0x20, 0x20, 0x50, 0x80, 0x80, // 81 + 0x80, 0x70, 0x4E, 0x42, 0xC2, 0x22, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, // 82 + 0x00, 0x18, 0x24, 0x22, 0x22, 0x22, 0xC2, 0x04, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 83 + 0x02, 0x82, 0x72, 0x0E, 0x02, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, // 84 + 0xE0, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0E, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, // 85 + 0xFE, 0x00, 0x80, 0x40, 0x30, 0x08, 0x06, 0x30, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, // 86 + 0xFE, 0x00, 0xC0, 0x30, 0x0C, 0xFE, 0x00, 0xC0, 0x30, 0x0C, 0x02, 0x30, 0x10, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x02, 0x8C, 0x70, 0x70, 0x88, 0x04, 0x02, 0x20, 0x10, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, // 88 + 0x02, 0x9C, 0x60, 0x10, 0x08, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x80, 0x42, 0x22, 0x12, 0x0A, 0x06, 0x02, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, // 90 + 0x00, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x90, 0x80, 0x00, 0x00, // 91 + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xF0, // 92 + 0x00, 0x00, 0xC1, 0x39, 0x07, 0x80, 0xE0, 0x10, 0x00, 0x00, // 93 + 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x01, 0x02, 0x00, 0x00, // 96 + 0x80, 0x48, 0x48, 0x48, 0xC8, 0x70, 0x10, 0x20, 0x20, 0x20, 0x30, 0x00, // 97 + 0x80, 0x78, 0x0F, 0x08, 0x08, 0xF0, 0x30, 0x20, 0x20, 0x20, 0x10, 0x00, // 98 + 0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 99 + 0xE0, 0x10, 0x08, 0x08, 0x88, 0x78, 0x07, 0x10, 0x20, 0x20, 0x20, 0x30, 0x00, 0x00, // 100 + 0xE0, 0x50, 0x48, 0x48, 0x48, 0x70, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 101 + 0x88, 0x78, 0x0E, 0x09, 0x30, 0x00, 0x00, 0x00, // 102 + 0xE0, 0x10, 0x08, 0x08, 0x88, 0x78, 0x90, 0xA0, 0xA0, 0xA0, 0x70, 0x00, // 103 + 0x80, 0x78, 0x17, 0x08, 0x08, 0x88, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, // 104 + 0x80, 0x78, 0x02, 0x30, 0x00, 0x00, // 105 + 0x00, 0x88, 0x7A, 0x80, 0x70, 0x00, // 106 + 0x80, 0x78, 0x47, 0xA0, 0x10, 0x08, 0x30, 0x00, 0x00, 0x10, 0x20, 0x00, // 107 + 0x80, 0x78, 0x07, 0x30, 0x00, 0x00, // 108 + 0x80, 0x78, 0x10, 0x08, 0x08, 0xC8, 0x30, 0x08, 0x08, 0x88, 0x70, 0x30, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, // 109 + 0x80, 0x78, 0x10, 0x08, 0x08, 0x88, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, // 110 + 0xE0, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 111 + 0x80, 0x78, 0x08, 0x08, 0x08, 0xF0, 0x30, 0x20, 0x20, 0x20, 0x10, 0x00, // 112 + 0xE0, 0x10, 0x08, 0x08, 0x88, 0x78, 0x10, 0x20, 0x20, 0xE0, 0x30, 0x00, // 113 + 0x80, 0x78, 0x10, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x30, 0x48, 0x48, 0x88, 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x00, // 115 + 0xC8, 0x38, 0x0E, 0x08, 0x10, 0x20, 0x20, 0x00, // 116 + 0xC0, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x38, 0x10, 0x20, 0x20, 0x20, 0x10, 0x30, 0x00, // 117 + 0x78, 0x80, 0x80, 0x60, 0x18, 0x00, 0x30, 0x10, 0x00, 0x00, // 118 + 0xF8, 0x00, 0xC0, 0x20, 0xF8, 0x00, 0xE0, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // 119 + 0x00, 0x08, 0xB0, 0x40, 0xA0, 0x10, 0x08, 0x20, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, // 120 + 0x78, 0x80, 0x80, 0x60, 0x18, 0x80, 0x70, 0x10, 0x00, 0x00, // 121 + 0x00, 0x88, 0x48, 0x28, 0x18, 0x08, 0x30, 0x20, 0x20, 0x20, 0x20, 0x00, // 122 + 0x20, 0x20, 0xDC, 0x03, 0x01, 0x01, 0x00, 0x70, 0x80, 0x80, 0x00, 0x00, // 123 + 0xFF, 0xF0, // 124 + 0x00, 0x00, 0x01, 0xD9, 0x26, 0x20, 0x80, 0x80, 0x60, 0x10, 0x00, 0x00, // 125 + 0xC0, 0x20, 0x20, 0x40, 0x80, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana_digits_24.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana_digits_24.h new file mode 100644 index 0000000..a8f1da8 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Verdana_digits_24.h @@ -0,0 +1,116 @@ +/* + * + * Verdana_digits_24 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Verdana_digits_24 + * Date : 01.05.2008 + * Font size in bytes : 3833 + * Font width : 10 + * Font height : 24 + * Font first char : 48 + * Font last char : 59 + * Font used chars : 11 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty +row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef VERDANA24_H +#define VERDANA24_H + +#define VERDANA24_WIDTH 17 +#define VERDANA24_HEIGHT 24 + +/* + * define for backward compatiblity + */ +#define Verdana24 Verdana_digits_24 + +GLCDFONTDECL(Verdana_digits_24) = { + 0x0E, 0xF9, // size + 0x11, // width + 0x18, // height + 0x30, // first char + 0x0B, // char count + + // char widths + 0x10, 0x0D, 0x0F, 0x0F, 0x11, 0x0F, 0x10, 0x10, 0x10, 0x10, + 0x04, + + // font data + 0x80, 0xF0, 0xFC, 0x7E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, +0x7E, 0xFC, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x0F, 0x3F, 0x7E, +0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x7E, 0x3F, 0x0F, 0x01, //48 '0' + + 0x38, 0x38, 0x38, 0x38, 0x3C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, // 49 '1' + + 0x00, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, 0xFE, +0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, +0x78, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0xEF, 0xE7, +0xE3, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 50 '2' + + 0x00, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, +0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, +0x1E, 0x36, 0x77, 0xF3, 0xE1, 0xC0, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x3F, 0x1F, 0x0F, // 51 '3' + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x7C, 0x1E, 0xFF, +0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xFC, 0xFE, 0xDF, 0xC7, 0xC3, +0xC1, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, +0x01, 0x01, 0x01, // 52 '4' + + 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x07, 0x07, 0x07, 0x00, 0x1F, 0x1F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, +0x1E, 0x1C, 0x3C, 0xF8, 0xF8, 0xE0, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x7C, 0x3F, 0x1F, 0x07, // 53 '5' + + 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x1E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, +0x07, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, +0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xF8, 0xF8, 0xE0, 0x03, 0x0F, 0x3F, 0x7C, +0x78, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x07, //54 '6' + + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, +0xE7, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, +0xF0, 0xFC, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, +0xF8, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //55 '7' + + 0x00, 0xF0, 0xFC, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, +0xFE, 0xFC, 0xF8, 0x00, 0x80, 0xE0, 0xF3, 0x77, 0x1F, 0x0E, 0x0E, 0x0C, +0x1C, 0x1C, 0x1C, 0x3E, 0x77, 0xF3, 0xE0, 0x80, 0x0F, 0x1F, 0x3F, 0x78, +0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x0F, //56 '8' + + 0xE0, 0xF8, 0xFC, 0x1E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x1E, +0x3E, 0xFC, 0xF0, 0xC0, 0x07, 0x1F, 0x1F, 0x3C, 0x78, 0x70, 0x70, 0x70, +0x70, 0x70, 0x70, 0x38, 0x38, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xF0, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x70, 0x78, 0x3C, 0x1F, 0x0F, 0x03, 0x00, //57 '9' + + 0xC0, 0xC0, 0xC0, 0xC0, 0x03, 0x03, 0x03, 0x03, 0xF0, 0xF0, 0xF0, 0xF0 // 58 ':' + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/Wendy3x5.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Wendy3x5.h new file mode 100644 index 0000000..a17678a --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/Wendy3x5.h @@ -0,0 +1,146 @@ +/* + * + * Wendy3x5 + * + * + * File Name : Wendy3x5.h + * Date : 2012 / 04 / 05 + * Creator : AustinSaintAubin + * Notes : Based on"Wendy" from DAFont.com + * Font width : 3 + * Font height : 5 + * Font first char : 32 + * Font last char : 127 + * Font used chars : 94 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ +#ifndef Wendy3x5_H +#define Wendy3x5_H + +#define Wendy3x5_WIDTH 3 +#define Wendy3x5_HEIGHT 5 + +GLCDFONTDECL(Wendy3x5) = { + 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height + 0x03, // width + 0x05, // height + 0x20, // first char + 0x60, // char count + + // Fixed width; char width table not used !!!! + + // font data + 0x00, 0x00, 0x00, // (space) + 0x17, 0x00, 0x00, // ! + 0x03, 0x00, 0x03, // " + 0x0A, 0x1F, 0x0A, // # + 0x16, 0x13, 0x1A, // 0x + 0x09, 0x04, 0x0A, // % + 0x0A, 0x15, 0x1A, // & + 0x03, 0x00, 0x00, // ' + 0x00, 0x0E, 0x11, // ( + 0x11, 0x0E, 0x00, // ) + 0x06, 0x06, 0x00, // * + 0x04, 0x0E, 0x04, // + + 0x0C, 0x1C, 0x00, // , + 0x04, 0x04, 0x04, // - + 0x10, 0x00, 0x00, // . + 0x18, 0x04, 0x03, // / + 0x1F, 0x11, 0x1F, // 0 + 0x02, 0x1F, 0x00, // 1 + 0x1D, 0x15, 0x17, // 2 + 0x15, 0x15, 0x1F, // 3 + 0x0F, 0x08, 0x1E, // 4 + 0x17, 0x15, 0x1D, // 5 + 0x1F, 0x15, 0x1D, // 6 + 0x01, 0x01, 0x1F, // 7 + 0x1F, 0x15, 0x1F, // 8 + 0x17, 0x15, 0x1F, // 9 + 0x00, 0x0A, 0x00, // : + 0x00, 0x1A, 0x00, // ; + 0x04, 0x0A, 0x11, // < + 0x0A, 0x0A, 0x0A, // = + 0x11, 0x0A, 0x04, // > + 0x00, 0x15, 0x07, // ? + 0x1F, 0x15, 0x17, // @ + 0x1F, 0x05, 0x1F, // A + 0x1F, 0x15, 0x1B, // B + 0x1F, 0x11, 0x11, // C + 0x1F, 0x11, 0x0E, // D + 0x1F, 0x15, 0x15, // E + 0x1F, 0x05, 0x01, // F + 0x1F, 0x11, 0x1D, // G + 0x1F, 0x04, 0x1F, // H + 0x11, 0x1F, 0x11, // I + 0x08, 0x10, 0x0F, // J + 0x1F, 0x04, 0x1B, // K + 0x1F, 0x10, 0x10, // L + 0x1F, 0x06, 0x1F, // M + 0x1C, 0x04, 0x1C, // N + 0x1F, 0x11, 0x1F, // O + 0x1F, 0x05, 0x07, // P + 0x0E, 0x19, 0x1E, // Q + 0x1F, 0x05, 0x1B, // R + 0x17, 0x15, 0x1D, // S + 0x01, 0x1F, 0x01, // T + 0x1F, 0x10, 0x1F, // U + 0x0F, 0x10, 0x0F, // V + 0x1F, 0x0C, 0x1F, // W + 0x1B, 0x04, 0x1B, // X + 0x17, 0x14, 0x1F, // Y + 0x19, 0x15, 0x13, // Z + 0x00, 0x1F, 0x11, // [ + 0x03, 0x04, 0x18, // BackSlash + 0x11, 0x1F, 0x00, // ] + 0x06, 0x01, 0x06, // ^ + 0x10, 0x10, 0x10, // _ + 0x01, 0x01, 0x02, // ` + 0x18, 0x14, 0x1C, // a + 0x1F, 0x14, 0x1C, // b + 0x1C, 0x14, 0x14, // c + 0x1C, 0x14, 0x1F, // d + 0x0C, 0x1A, 0x14, // e + 0x04, 0x1E, 0x05, // f + 0x17, 0x15, 0x1E, // g + 0x1F, 0x04, 0x1C, // h + 0x00, 0x1D, 0x00, // i + 0x08, 0x10, 0x0D, // j + 0x1F, 0x0C, 0x1A, // k + 0x00, 0x1F, 0x00, // l + 0x18, 0x0C, 0x18, // m + 0x18, 0x04, 0x18, // n + 0x1E, 0x12, 0x1E, // o + 0x1F, 0x05, 0x07, // p + 0x07, 0x05, 0x1F, // q + 0x1E, 0x04, 0x04, // r + 0x12, 0x15, 0x09, // s + 0x02, 0x1F, 0x02, // t + 0x1C, 0x10, 0x1C, // u + 0x0C, 0x10, 0x0C, // v + 0x0C, 0x18, 0x0C, // w + 0x14, 0x08, 0x14, // x + 0x16, 0x18, 0x06, // y + 0x04, 0x1C, 0x10, // z + 0x04, 0x0E, 0x11, // { + 0x00, 0x1F, 0x00, // | + 0x11, 0x0E, 0x04, // } + 0x02, 0x04, 0x02, // ~ + 0x1F, 0x1F, 0x1F //  +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14.h new file mode 100644 index 0000000..49f35dc --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14.h @@ -0,0 +1,114 @@ +// STARTFONT 2.1 +// COMMENT "$Id: 7x14.bdf,v 1.47 2006-01-05 20:24:11+00 mgk25 Rel $" +// COMMENT "Send bug reports to Markus Kuhn " +// FONT -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 +// +// Note: Pixels are only six columns wide. +// +#ifndef X11fixed7x14_h +#define X11fixed7x14_h + +GLCDFONTDECL(X11fixed7x14) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 6, // width + 14, // height + 0x20, // first char + 0x60, // char count + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // space + 0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X0D,0X00,0X00, // exclam + 0X00,0X00,0X1E,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotedbl + 0X00,0X20,0XFC,0X20,0XFC,0X20,0X00,0X01,0X0F,0X01,0X0F,0X01, // numbersign + 0X30,0X48,0X88,0XFC,0X88,0X30,0X06,0X08,0X08,0X1F,0X08,0X07, // dollar + 0X18,0X24,0XA4,0X78,0X10,0X0C,0X0C,0X02,0X07,0X09,0X09,0X06, // percent + 0X00,0XB8,0XC4,0X44,0X38,0X80,0X07,0X08,0X08,0X05,0X06,0X09, // ampersand + 0X00,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotesingle + 0X00,0X00,0XE0,0X18,0X04,0X02,0X00,0X00,0X03,0X0C,0X10,0X20, // parenleft + 0X00,0X02,0X04,0X18,0XE0,0X00,0X00,0X20,0X10,0X0C,0X03,0X00, // parenright + 0X00,0X20,0X40,0XF0,0X40,0X20,0X00,0X02,0X01,0X07,0X01,0X02, // asterisk + 0X00,0X80,0X80,0XF0,0X80,0X80,0X00,0X00,0X00,0X07,0X00,0X00, // plus + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X24,0X1C,0X00,0X00, // comma + 0X00,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00, // hyphen + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00, // period + 0X00,0X00,0X00,0XE0,0X18,0X06,0X30,0X0C,0X03,0X00,0X00,0X00, // slash + 0XF0,0X08,0X04,0X04,0X08,0XF0,0X03,0X04,0X08,0X08,0X04,0X03, // zero + 0X00,0X10,0X08,0XFC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // one + 0X18,0X04,0X04,0X04,0XC4,0X38,0X08,0X0C,0X0A,0X09,0X08,0X08, // two + 0X04,0X04,0X44,0X64,0X54,0X8C,0X06,0X08,0X08,0X08,0X08,0X07, // three + 0X00,0XC0,0X30,0X08,0XFC,0X00,0X03,0X02,0X02,0X02,0X0F,0X02, // four + 0X7C,0X24,0X24,0X24,0X24,0XC4,0X06,0X08,0X08,0X08,0X08,0X07, // five + 0XF0,0X88,0X44,0X44,0X44,0X80,0X07,0X08,0X08,0X08,0X08,0X07, // six + 0X04,0X04,0X04,0XC4,0X34,0X0C,0X00,0X0C,0X03,0X00,0X00,0X00, // seven + 0X18,0XA4,0X44,0X44,0XA4,0X18,0X07,0X08,0X08,0X08,0X08,0X07, // eight + 0X78,0X84,0X84,0X84,0X44,0XF8,0X06,0X08,0X08,0X08,0X04,0X03, // nine + 0X00,0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X04,0X0E,0X04,0X00, // colon + 0X00,0X00,0X60,0X60,0X00,0X00,0X00,0X00,0X12,0X0E,0X00,0X00, // semicolon + 0X00,0X80,0X40,0X20,0X10,0X08,0X00,0X00,0X01,0X02,0X04,0X08, // less + 0X20,0X20,0X20,0X20,0X20,0X20,0X01,0X01,0X01,0X01,0X01,0X01, // equal + 0X00,0X08,0X10,0X20,0X40,0X80,0X00,0X08,0X04,0X02,0X01,0X00, // greater + 0X18,0X04,0X04,0XC4,0X24,0X18,0X00,0X00,0X00,0X0D,0X00,0X00, // question + 0XF0,0X08,0XE4,0X14,0X14,0XF8,0X03,0X04,0X09,0X0A,0X0A,0X0B, // at + 0XF0,0X88,0X84,0X84,0X88,0XF0,0X0F,0X00,0X00,0X00,0X00,0X0F, // A + 0XFC,0X44,0X44,0X44,0XA8,0X10,0X0F,0X08,0X08,0X08,0X04,0X03, // B + 0XF8,0X04,0X04,0X04,0X04,0X18,0X07,0X08,0X08,0X08,0X08,0X06, // C + 0XFC,0X04,0X04,0X04,0X08,0XF0,0X0F,0X08,0X08,0X08,0X04,0X03, // D + 0XFC,0X44,0X44,0X44,0X04,0X04,0X0F,0X08,0X08,0X08,0X08,0X08, // E + 0XFC,0X44,0X44,0X44,0X04,0X04,0X0F,0X00,0X00,0X00,0X00,0X00, // F + 0XF8,0X04,0X04,0X84,0X84,0X98,0X07,0X08,0X08,0X08,0X04,0X0F, // G + 0XFC,0X40,0X40,0X40,0X40,0XFC,0X0F,0X00,0X00,0X00,0X00,0X0F, // H + 0X00,0X04,0X04,0XFC,0X04,0X04,0X00,0X08,0X08,0X0F,0X08,0X08, // I + 0X00,0X00,0X00,0X04,0XFC,0X04,0X06,0X08,0X08,0X08,0X07,0X00, // J + 0XFC,0X40,0XA0,0X10,0X08,0X04,0X0F,0X00,0X00,0X01,0X02,0X0C, // K + 0XFC,0X00,0X00,0X00,0X00,0X00,0X0F,0X08,0X08,0X08,0X08,0X08, // L + 0XFC,0X18,0X60,0X60,0X18,0XFC,0X0F,0X00,0X00,0X00,0X00,0X0F, // M + 0XFC,0X30,0X40,0X80,0X00,0XFC,0X0F,0X00,0X00,0X00,0X03,0X0F, // N + 0XF8,0X04,0X04,0X04,0X04,0XF8,0X07,0X08,0X08,0X08,0X08,0X07, // O + 0XFC,0X84,0X84,0X84,0X84,0X78,0X0F,0X00,0X00,0X00,0X00,0X00, // P + 0XF8,0X04,0X04,0X04,0X04,0XF8,0X07,0X09,0X09,0X0A,0X1C,0X27, // Q + 0XFC,0X84,0X84,0X84,0X84,0X78,0X0F,0X00,0X00,0X01,0X02,0X0C, // R + 0X38,0X44,0X44,0X84,0X84,0X18,0X06,0X08,0X08,0X08,0X08,0X07, // S + 0X04,0X04,0X04,0XFC,0X04,0X04,0X00,0X00,0X00,0X0F,0X00,0X00, // T + 0XFC,0X00,0X00,0X00,0X00,0XFC,0X07,0X08,0X08,0X08,0X08,0X07, // U + 0X3C,0XC0,0X00,0X00,0XC0,0X3C,0X00,0X01,0X0E,0X0E,0X01,0X00, // V + 0X00,0XFC,0X00,0X00,0X00,0XFC,0X00,0X07,0X08,0X07,0X08,0X07, // W + 0X0C,0X30,0XC0,0XC0,0X30,0X0C,0X0C,0X03,0X00,0X00,0X03,0X0C, // X + 0X00,0X1C,0X60,0X80,0X60,0X1C,0X00,0X00,0X00,0X0F,0X00,0X00, // Y + 0X04,0X04,0X84,0X64,0X14,0X0C,0X0C,0X0B,0X08,0X08,0X08,0X08, // Z + 0X00,0X00,0XFE,0X02,0X02,0X02,0X00,0X00,0X3F,0X20,0X20,0X20, // bracketleft + 0X06,0X18,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X0C,0X30, // backslash + 0X00,0X02,0X02,0X02,0XFE,0X00,0X00,0X20,0X20,0X20,0X3F,0X00, // bracketright + 0X08,0X04,0X02,0X02,0X04,0X08,0X00,0X00,0X00,0X00,0X00,0X00, // asciicircum + 0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X20,0X20,0X20,0X20,0X20, // underscore + 0X00,0X00,0X02,0X04,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // grave + 0X40,0X20,0X20,0X20,0X20,0XC0,0X06,0X09,0X09,0X09,0X09,0X0F, // a + 0XFC,0X40,0X20,0X20,0X20,0XC0,0X0F,0X04,0X08,0X08,0X08,0X07, // b + 0XC0,0X20,0X20,0X20,0X20,0X40,0X07,0X08,0X08,0X08,0X08,0X04, // c + 0XC0,0X20,0X20,0X20,0X40,0XFC,0X07,0X08,0X08,0X08,0X04,0X0F, // d + 0XC0,0X20,0X20,0X20,0X20,0XC0,0X07,0X09,0X09,0X09,0X09,0X05, // e + 0X40,0X40,0XF8,0X44,0X44,0X08,0X00,0X00,0X0F,0X00,0X00,0X00, // f + 0XC0,0X20,0X20,0X20,0XC0,0X20,0X19,0X26,0X2A,0X2A,0X29,0X10, // g + 0XFC,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X0F, // h + 0X00,0X00,0X20,0XEC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // i + 0X00,0X00,0X00,0X00,0X20,0XEC,0X00,0X18,0X20,0X20,0X20,0X1F, // j + 0XFC,0X00,0X80,0X40,0X20,0X00,0X0F,0X01,0X01,0X02,0X04,0X08, // k + 0X00,0X00,0X04,0XFC,0X00,0X00,0X00,0X08,0X08,0X0F,0X08,0X08, // l + 0X00,0XE0,0X20,0XC0,0X20,0XC0,0X00,0X0F,0X00,0X07,0X00,0X0F, // m + 0XE0,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X0F, // n + 0XC0,0X20,0X20,0X20,0X20,0XC0,0X07,0X08,0X08,0X08,0X08,0X07, // o + 0XE0,0X40,0X20,0X20,0X20,0XC0,0X3F,0X04,0X08,0X08,0X08,0X07, // p + 0XC0,0X20,0X20,0X20,0X40,0XE0,0X07,0X08,0X08,0X08,0X04,0X3F, // q + 0XE0,0X40,0X20,0X20,0X20,0XC0,0X0F,0X00,0X00,0X00,0X00,0X00, // r + 0X40,0XA0,0X20,0X20,0X20,0X40,0X04,0X08,0X09,0X09,0X0A,0X04, // s + 0X20,0X20,0XFC,0X20,0X20,0X00,0X00,0X00,0X07,0X08,0X08,0X04, // t + 0XE0,0X00,0X00,0X00,0X00,0XE0,0X07,0X08,0X08,0X08,0X04,0X0F, // u + 0X00,0XE0,0X00,0X00,0X00,0XE0,0X00,0X00,0X03,0X0C,0X03,0X00, // v + 0X00,0XE0,0X00,0X80,0X00,0XE0,0X00,0X07,0X08,0X07,0X08,0X07, // w + 0X60,0X80,0X00,0X00,0X80,0X60,0X0C,0X02,0X01,0X01,0X02,0X0C, // x + 0XE0,0X00,0X00,0X00,0X00,0XE0,0X13,0X24,0X24,0X24,0X22,0X1F, // y + 0X20,0X20,0X20,0XA0,0X60,0X20,0X08,0X0C,0X0B,0X08,0X08,0X08, // z + 0X00,0X00,0X80,0X7C,0X02,0X02,0X00,0X00,0X00,0X1F,0X20,0X20, // braceleft + 0X00,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X3F,0X00,0X00, // bar + 0X00,0X02,0X02,0X7C,0X80,0X00,0X00,0X20,0X20,0X1F,0X00,0X00, // braceright + 0X0C,0X02,0X04,0X08,0X10,0X0C,0X00,0X00,0X00,0X00,0X00,0X00, // asciitilde + 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F // del +}; +#endif // X11fixed7x14_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14B.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14B.h new file mode 100644 index 0000000..8e4f176 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/X11fixed7x14B.h @@ -0,0 +1,113 @@ +// STARTFONT 2.1 +// COMMENT "$Id: 7x14B.bdf,v 1.25 2003-07-26 14:55:51+01 mgk25 Rel $" +// COMMENT "Send bug reports to Markus Kuhn " +// FONT -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 +// +// Note: Pixels are only six columns wide. +// +#ifndef X11fixed7x14B_h +#define X11fixed7x14B_h +GLCDFONTDECL(X11fixed7x14B) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 6, // width + 14, // height + 0x20, // first char + 0x60, // char count + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // space + 0X00,0X00,0XFC,0XFC,0X00,0X00,0X00,0X00,0X0D,0X0D,0X00,0X00, // exclam + 0X00,0X1E,0X1E,0X00,0X1E,0X1E,0X00,0X00,0X00,0X00,0X00,0X00, // quotedbl + 0X20,0XFC,0XFC,0XFC,0XFC,0X20,0X01,0X0F,0X0F,0X0F,0X0F,0X01, // numbersign + 0X30,0X48,0XFC,0XFC,0X88,0X30,0X06,0X08,0X1F,0X1F,0X08,0X07, // dollar + 0X18,0X3C,0XA4,0X78,0X1C,0X0C,0X0C,0X0E,0X07,0X09,0X0F,0X06, // percent + 0X00,0XB8,0XFC,0X44,0XFC,0XB8,0X07,0X0F,0X08,0X07,0X0F,0X09, // ampersand + 0X00,0X00,0X1E,0X1E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // quotesingle + 0X00,0XE0,0XF8,0X1C,0X06,0X02,0X00,0X03,0X0F,0X1C,0X30,0X20, // parenleft + 0X00,0X02,0X06,0X1C,0XF8,0XE0,0X00,0X20,0X30,0X1C,0X0F,0X03, // parenright + 0X8C,0X50,0XFC,0XFC,0X50,0X8C,0X01,0X00,0X01,0X01,0X00,0X01, // asterisk + 0X80,0X80,0XF0,0XF0,0X80,0X80,0X00,0X00,0X07,0X07,0X00,0X00, // plus + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X24,0X3C,0X1C,0X00, // comma + 0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00, // hyphen + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X0C,0X00,0X00, // period + 0X00,0X00,0XC0,0XF0,0X3E,0X0E,0X38,0X3E,0X07,0X01,0X00,0X00, // slash + 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X08,0X08,0X0F,0X07, // zero + 0X10,0X18,0XFC,0XFC,0X00,0X00,0X08,0X08,0X0F,0X0F,0X08,0X08, // one + 0X18,0X1C,0X04,0XC4,0XFC,0X38,0X0C,0X0E,0X0B,0X09,0X08,0X08, // two + 0X18,0X1C,0X44,0X44,0XFC,0XB8,0X06,0X0E,0X08,0X08,0X0F,0X07, // three + 0X80,0XC0,0X60,0XF8,0XFC,0X00,0X03,0X03,0X02,0X0F,0X0F,0X02, // four + 0X7C,0X7C,0X24,0X24,0XE4,0XC4,0X06,0X0E,0X08,0X08,0X0F,0X07, // five + 0XF0,0XF8,0X4C,0X44,0XDC,0X98,0X07,0X0F,0X08,0X08,0X0F,0X07, // six + 0X1C,0X1C,0XC4,0XF4,0X3C,0X0C,0X00,0X00,0X0F,0X0F,0X00,0X00, // seven + 0X38,0XFC,0XC4,0XC4,0XFC,0X38,0X07,0X0F,0X08,0X08,0X0F,0X07, // eight + 0X78,0XFC,0X84,0X84,0XFC,0XF8,0X06,0X0E,0X08,0X0C,0X07,0X03, // nine + 0X00,0X00,0X30,0X30,0X00,0X00,0X00,0X00,0X06,0X06,0X00,0X00, // colon + 0X00,0X00,0X00,0X30,0X30,0X00,0X00,0X00,0X12,0X1E,0X0E,0X00, // semicolon + 0X80,0XC0,0X60,0X30,0X18,0X08,0X00,0X01,0X03,0X06,0X0C,0X08, // less + 0X40,0X40,0X40,0X40,0X40,0X40,0X02,0X02,0X02,0X02,0X02,0X02, // equal + 0X08,0X18,0X30,0X60,0XC0,0X80,0X08,0X0C,0X06,0X03,0X01,0X00, // greater + 0X18,0X1C,0XC4,0XE4,0X3C,0X18,0X00,0X00,0X0D,0X0D,0X00,0X00, // question + 0XF0,0XF8,0XEC,0XF4,0X1C,0XF8,0X03,0X07,0X0D,0X0B,0X0A,0X0B, // at + 0XF8,0XFC,0X0C,0X0C,0XFC,0XF8,0X0F,0X0F,0X01,0X01,0X0F,0X0F, // A + 0XFC,0XFC,0X44,0X44,0XFC,0X98,0X0F,0X0F,0X08,0X08,0X0F,0X07, // B + 0XF8,0XFC,0X04,0X04,0X1C,0X18,0X07,0X0F,0X08,0X08,0X0E,0X06, // C + 0XFC,0XFC,0X04,0X0C,0XF8,0XF0,0X0F,0X0F,0X08,0X0C,0X07,0X03, // D + 0XFC,0XFC,0X44,0X44,0X44,0X04,0X0F,0X0F,0X08,0X08,0X08,0X08, // E + 0XFC,0XFC,0X44,0X44,0X44,0X04,0X0F,0X0F,0X00,0X00,0X00,0X00, // F + 0XF8,0XFC,0X04,0X84,0X9C,0X98,0X07,0X0F,0X08,0X08,0X0F,0X07, // G + 0XFC,0XFC,0X40,0X40,0XFC,0XFC,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // H + 0X04,0X04,0XFC,0XFC,0X04,0X04,0X08,0X08,0X0F,0X0F,0X08,0X08, // I + 0X00,0X00,0X00,0X00,0XFC,0XFC,0X06,0X0E,0X08,0X0C,0X07,0X03, // J + 0XFC,0XFC,0XF0,0X98,0X0C,0X04,0X0F,0X0F,0X01,0X03,0X0E,0X0C, // K + 0XFC,0XFC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X08,0X08,0X08,0X08, // L + 0XFC,0XF8,0X60,0X60,0XF8,0XFC,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // M + 0XFC,0XFC,0X70,0X80,0XFC,0XFC,0X0F,0X0F,0X00,0X03,0X0F,0X0F, // N + 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X08,0X08,0X0F,0X07, // O + 0XFC,0XFC,0X84,0X84,0XFC,0X78,0X0F,0X0F,0X00,0X00,0X00,0X00, // P + 0XF8,0XFC,0X04,0X04,0XFC,0XF8,0X07,0X0F,0X09,0X0A,0X1F,0X37, // Q + 0XFC,0XFC,0X44,0XC4,0XFC,0X38,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // R + 0X18,0X3C,0XE4,0XC4,0X1C,0X18,0X06,0X0E,0X08,0X09,0X0F,0X06, // S + 0X04,0X04,0XFC,0XFC,0X04,0X04,0X00,0X00,0X0F,0X0F,0X00,0X00, // T + 0XFC,0XFC,0X00,0X00,0XFC,0XFC,0X07,0X0F,0X08,0X08,0X0F,0X07, // U + 0XFC,0XFC,0X00,0X00,0XFC,0XFC,0X01,0X07,0X0E,0X0E,0X07,0X01, // V + 0XFC,0XFC,0X80,0X80,0XFC,0XFC,0X07,0X0F,0X07,0X07,0X0F,0X07, // W + 0X0C,0X3C,0XF0,0XF0,0X3C,0X0C,0X0C,0X0F,0X03,0X03,0X0F,0X0C, // X + 0X1C,0X7C,0XE0,0XE0,0X7C,0X1C,0X00,0X00,0X0F,0X0F,0X00,0X00, // Y + 0X04,0X04,0XC4,0XF4,0X3C,0X0C,0X0C,0X0F,0X0B,0X08,0X08,0X08, // Z + 0X00,0XFE,0XFE,0X02,0X02,0X02,0X00,0X3F,0X3F,0X20,0X20,0X20, // bracketleft + 0X0E,0X3E,0XF0,0XC0,0X00,0X00,0X00,0X00,0X01,0X07,0X3E,0X38, // backslash + 0X00,0X02,0X02,0X02,0XFE,0XFE,0X00,0X20,0X20,0X20,0X3F,0X3F, // bracketright + 0X04,0X06,0X03,0X03,0X06,0X04,0X00,0X00,0X00,0X00,0X00,0X00, // asciicircum + 0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X30,0X30,0X30,0X30,0X30, // underscore + 0X00,0X02,0X06,0X0C,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // grave + 0X40,0X60,0X20,0XA0,0XE0,0XC0,0X06,0X0F,0X09,0X08,0X0F,0X0F, // a + 0XFC,0XFC,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X08,0X08,0X0F,0X07, // b + 0XC0,0XE0,0X20,0X20,0X60,0X40,0X07,0X0F,0X08,0X08,0X0C,0X04, // c + 0XC0,0XE0,0X20,0X20,0XFC,0XFC,0X07,0X0F,0X08,0X08,0X0F,0X0F, // d + 0XC0,0XE0,0X20,0X20,0XE0,0XC0,0X07,0X0F,0X09,0X09,0X0D,0X05, // e + 0X40,0X40,0XF8,0XFC,0X4C,0X48,0X00,0X00,0X0F,0X0F,0X00,0X00, // f + 0XC0,0XE0,0X20,0XE0,0XC0,0X60,0X19,0X3F,0X2A,0X2B,0X39,0X10, // g + 0XFC,0XFC,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // h + 0X00,0X00,0XEC,0XEC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X00,0X00, // i + 0X00,0X00,0X00,0X00,0XEC,0XEC,0X00,0X10,0X30,0X20,0X3F,0X1F, // j + 0XFC,0XFC,0X80,0XC0,0X60,0X00,0X0F,0X0F,0X01,0X03,0X06,0X0C, // k + 0X00,0X00,0XFC,0XFC,0X00,0X00,0X00,0X00,0X0F,0X0F,0X00,0X00, // l + 0XE0,0XE0,0XC0,0XE0,0XE0,0XC0,0X0F,0X0F,0X07,0X07,0X0F,0X0F, // m + 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X0F,0X0F, // n + 0XC0,0XE0,0X20,0X20,0XE0,0XC0,0X07,0X0F,0X08,0X08,0X0F,0X07, // o + 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X3F,0X3F,0X08,0X08,0X0F,0X07, // p + 0XC0,0XE0,0X20,0X20,0XE0,0XE0,0X07,0X0F,0X08,0X08,0X3F,0X3F, // q + 0XE0,0XE0,0X20,0X20,0XE0,0XC0,0X0F,0X0F,0X00,0X00,0X00,0X00, // r + 0X40,0XE0,0XA0,0X20,0X60,0X40,0X04,0X0C,0X09,0X0B,0X0E,0X04, // s + 0X20,0X20,0XFC,0XFC,0X20,0X20,0X00,0X00,0X07,0X0F,0X08,0X08, // t + 0XE0,0XE0,0X00,0X00,0XE0,0XE0,0X07,0X0F,0X08,0X08,0X0F,0X0F, // u + 0XE0,0XE0,0X00,0X00,0XE0,0XE0,0X00,0X03,0X0F,0X0F,0X03,0X00, // v + 0XE0,0XE0,0X80,0X80,0XE0,0XE0,0X07,0X0F,0X07,0X07,0X0F,0X07, // w + 0X60,0XE0,0X80,0X80,0XE0,0X60,0X0C,0X0E,0X03,0X03,0X0E,0X0C, // x + 0X60,0XE0,0X80,0X00,0XE0,0XE0,0X10,0X31,0X27,0X3E,0X1F,0X01, // y + 0X20,0X20,0X20,0XA0,0XE0,0X60,0X0C,0X0E,0X0B,0X09,0X08,0X08, // z + 0X00,0X80,0XFC,0X7E,0X02,0X02,0X00,0X00,0X1F,0X3F,0X20,0X20, // braceleft + 0X00,0X00,0XFE,0XFE,0X00,0X00,0X00,0X00,0X3F,0X3F,0X00,0X00, // bar + 0X00,0X02,0X02,0X7E,0XFC,0X80,0X00,0X20,0X20,0X3F,0X1F,0X00, // braceright + 0X1C,0X06,0X0C,0X0C,0X18,0X0E,0X00,0X00,0X00,0X00,0X00,0X00, // asciitilde + 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F // del +}; +#endif // X11fixed7x14B_h diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/ZevvPeep8x16.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/ZevvPeep8x16.h new file mode 100644 index 0000000..ddddd2b --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/ZevvPeep8x16.h @@ -0,0 +1,109 @@ +// STARTFONT 2.1 +// FONT -zevv-peep-Medium-R-Normal--16-140-75-75-C-80-ISO8859-1 +#ifndef font8x16_h +#define font8x16_h + +GLCDFONTDECL(ZevvPeep8x16) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 7, // width + 14, // height + 0x20, // first char + 0x60, // char count + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // ' ' + 0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0D,0X00,0X00,0X00,0X00, // '!' + 0X00,0X3C,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '"' + 0X20,0XF8,0X20,0X20,0XF8,0X20,0X00,0X01,0X07,0X01,0X01,0X07,0X01,0X00, // '#' + 0X60,0X90,0XF8,0X90,0X10,0X00,0X00,0X04,0X04,0X0F,0X04,0X03,0X00,0X00, // '$' + 0X18,0X24,0X98,0X60,0X10,0X0C,0X00,0X0C,0X02,0X01,0X06,0X09,0X06,0X00, // '%' + 0X30,0XC8,0XC8,0X30,0X00,0X00,0X00,0X07,0X08,0X08,0X09,0X06,0X09,0X00, // '&' + 0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // ''' + 0X00,0X00,0XE0,0X18,0X04,0X02,0X00,0X00,0X00,0X03,0X0C,0X10,0X20,0X00, // '(' + 0X02,0X04,0X18,0XE0,0X00,0X00,0X00,0X20,0X10,0X0C,0X03,0X00,0X00,0X00, // ')' + 0X80,0XA0,0XC0,0XC0,0XA0,0X80,0X00,0X00,0X02,0X01,0X01,0X02,0X00,0X00, // '*' + 0X80,0X80,0X80,0XF0,0X80,0X80,0X80,0X00,0X00,0X00,0X07,0X00,0X00,0X00, // '+' + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X18,0X0C,0X04,0X00,0X00,0X00, // ',' + 0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '-' + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00,0X00,0X00, // '.' + 0X00,0X00,0X80,0X60,0X18,0X06,0X00,0X18,0X06,0X01,0X00,0X00,0X00,0X00, // '/' + 0XF0,0X08,0X84,0X44,0X08,0XF0,0X00,0X03,0X04,0X08,0X08,0X04,0X03,0X00, // '0' + 0X20,0X10,0X08,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // '1' + 0X18,0X04,0X04,0X84,0X44,0X38,0X00,0X0C,0X0A,0X09,0X08,0X08,0X08,0X00, // '2' + 0X08,0X04,0X44,0X44,0X44,0XB8,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // '3' + 0X80,0X60,0X18,0X04,0XFC,0X00,0X00,0X01,0X01,0X01,0X01,0X0F,0X01,0X00, // '4' + 0X7C,0X24,0X24,0X24,0X24,0XC4,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // '5' + 0XF8,0X84,0X44,0X44,0X44,0X88,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // '6' + 0X04,0X04,0X04,0XC4,0X34,0X0C,0X00,0X00,0X0C,0X03,0X00,0X00,0X00,0X00, // '7' + 0XB8,0X44,0X44,0X44,0X44,0XB8,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // '8' + 0X78,0X84,0X84,0X84,0X44,0XF8,0X00,0X04,0X08,0X08,0X08,0X08,0X07,0X00, // '9' + 0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00,0X00,0X00, // ':' + 0X00,0X20,0X70,0X20,0X00,0X00,0X00,0X20,0X18,0X0C,0X04,0X00,0X00,0X00, // ';' + 0X80,0X40,0X20,0X10,0X08,0X00,0X00,0X00,0X01,0X02,0X04,0X08,0X00,0X00, // '<' + 0X40,0X40,0X40,0X40,0X40,0X40,0X00,0X02,0X02,0X02,0X02,0X02,0X02,0X00, // '=' + 0X00,0X08,0X10,0X20,0X40,0X80,0X00,0X00,0X08,0X04,0X02,0X01,0X00,0X00, // '>' + 0X04,0X84,0X44,0X24,0X18,0X00,0X00,0X00,0X0D,0X00,0X00,0X00,0X00,0X00, // '?' + 0XF0,0X08,0XC4,0X24,0X24,0XF8,0X00,0X03,0X04,0X09,0X0A,0X0A,0X03,0X00, // '@' + 0XF8,0X84,0X84,0X84,0X84,0XF8,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'A' + 0XFC,0X44,0X44,0X44,0X78,0X80,0X00,0X0F,0X08,0X08,0X08,0X08,0X07,0X00, // 'B' + 0XF8,0X04,0X04,0X04,0X04,0X18,0X00,0X07,0X08,0X08,0X08,0X08,0X06,0X00, // 'C' + 0XFC,0X04,0X04,0X04,0X08,0XF0,0X00,0X0F,0X08,0X08,0X08,0X04,0X03,0X00, // 'D' + 0XFC,0X44,0X44,0X44,0X44,0X04,0X00,0X0F,0X08,0X08,0X08,0X08,0X08,0X00, // 'E' + 0XFC,0X44,0X44,0X44,0X44,0X04,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'F' + 0XF8,0X04,0X04,0X84,0X84,0X98,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'G' + 0XFC,0X40,0X40,0X40,0X40,0XFC,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'H' + 0X04,0X04,0XFC,0X04,0X04,0X00,0X00,0X08,0X08,0X0F,0X08,0X08,0X00,0X00, // 'I' + 0X00,0X00,0X04,0X04,0X04,0XFC,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // 'J' + 0XFC,0X40,0X20,0XD0,0X08,0X04,0X00,0X0F,0X00,0X00,0X00,0X03,0X0C,0X00, // 'K' + 0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X08,0X08,0X08,0X08,0X08,0X00, // 'L' + 0XFC,0X18,0X60,0X80,0X60,0X18,0XFC,0X0F,0X00,0X00,0X01,0X00,0X00,0X0F, // 'M' + 0XFC,0X18,0X60,0X80,0X00,0XFC,0X00,0X0F,0X00,0X00,0X01,0X06,0X0F,0X00, // 'N' + 0XF8,0X04,0X04,0X04,0X04,0XF8,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'O' + 0XFC,0X84,0X84,0X84,0X84,0X78,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'P' + 0XF8,0X04,0X04,0X04,0X04,0XF8,0X00,0X07,0X08,0X08,0X0E,0X18,0X17,0X00, // 'Q' + 0XFC,0X84,0X84,0X84,0X84,0X78,0X00,0X0F,0X00,0X01,0X02,0X04,0X08,0X00, // 'R' + 0X38,0X44,0X44,0X84,0X84,0X08,0X00,0X04,0X08,0X08,0X08,0X08,0X07,0X00, // 'S' + 0X04,0X04,0X04,0XFC,0X04,0X04,0X04,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'T' + 0XFC,0X00,0X00,0X00,0X00,0XFC,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'U' + 0XFC,0X00,0X00,0X00,0X00,0XFC,0X00,0X00,0X03,0X0C,0X0C,0X03,0X00,0X00, // 'V' + 0XFC,0X00,0X00,0XC0,0X00,0X00,0XFC,0X03,0X0C,0X03,0X00,0X03,0X0C,0X03, // 'W' + 0X0C,0X30,0XC0,0XC0,0X30,0X0C,0X00,0X0C,0X03,0X00,0X00,0X03,0X0C,0X00, // 'X' + 0X3C,0X40,0X80,0X80,0X40,0X3C,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'Y' + 0X04,0X04,0X84,0X44,0X34,0X0C,0X00,0X0C,0X0A,0X09,0X08,0X08,0X08,0X00, // 'Z' + 0X00,0X00,0XFE,0X02,0X02,0X02,0X00,0X00,0X00,0X3F,0X20,0X20,0X20,0X00, // '[' + 0X06,0X18,0X60,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X06,0X18,0X00, // '\' + 0X02,0X02,0X02,0XFE,0X00,0X00,0X00,0X20,0X20,0X20,0X3F,0X00,0X00,0X00, // ']' + 0X10,0X08,0X04,0X04,0X08,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '^' + 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X20,0X20,0X20,0X20,0X20,0X00, // '_' + 0X00,0X04,0X0C,0X18,0X20,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '`' + 0X00,0XA0,0XA0,0XA0,0XA0,0XC0,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'a' + 0XFC,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X04,0X08,0X08,0X08,0X07,0X00, // 'b' + 0XC0,0X20,0X20,0X20,0X20,0X40,0X00,0X07,0X08,0X08,0X08,0X08,0X04,0X00, // 'c' + 0XC0,0X20,0X20,0X20,0X40,0XFC,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'd' + 0XC0,0X20,0X20,0X20,0X20,0XC0,0X00,0X07,0X09,0X09,0X09,0X09,0X09,0X00, // 'e' + 0X80,0XF8,0X84,0X84,0X84,0X08,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,0X00, // 'f' + 0XC0,0X20,0X20,0X20,0X40,0XE0,0X00,0X23,0X44,0X44,0X44,0X42,0X3F,0X00, // 'g' + 0XFC,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'h' + 0X00,0X20,0X20,0XEC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // 'i' + 0X00,0X00,0X20,0X20,0XEC,0X00,0X00,0X10,0X20,0X20,0X20,0X1F,0X00,0X00, // 'j' + 0XFC,0X00,0X80,0X40,0X20,0X00,0X00,0X0F,0X01,0X01,0X02,0X04,0X08,0X00, // 'k' + 0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0X08,0X08,0X08,0X00,0X00, // 'l' + 0XE0,0X20,0X20,0XC0,0X20,0X20,0XC0,0X0F,0X00,0X00,0X03,0X00,0X00,0X0F, // 'm' + 0XE0,0X40,0X20,0X20,0X20,0XC0,0X00,0X0F,0X00,0X00,0X00,0X00,0X0F,0X00, // 'n' + 0XC0,0X20,0X20,0X20,0X20,0XC0,0X00,0X07,0X08,0X08,0X08,0X08,0X07,0X00, // 'o' + 0XE0,0X40,0X20,0X20,0X20,0XC0,0X00,0X7F,0X02,0X04,0X04,0X04,0X03,0X00, // 'p' + 0XC0,0X20,0X20,0X20,0X40,0XE0,0X00,0X03,0X04,0X04,0X04,0X02,0X7F,0X00, // 'q' + 0XE0,0X40,0X20,0X20,0X20,0X40,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, // 'r' + 0XC0,0X20,0X20,0X20,0X20,0X40,0X00,0X04,0X09,0X09,0X09,0X09,0X06,0X00, // 's' + 0X20,0XF8,0X20,0X20,0X20,0X00,0X00,0X00,0X07,0X08,0X08,0X08,0X04,0X00, // 't' + 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X07,0X08,0X08,0X08,0X04,0X0F,0X00, // 'u' + 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X00,0X03,0X0C,0X0C,0X03,0X00,0X00, // 'v' + 0XE0,0X00,0X00,0X80,0X00,0X00,0XE0,0X07,0X08,0X04,0X03,0X04,0X08,0X07, // 'w' + 0X20,0X40,0X80,0X80,0X40,0X20,0X00,0X08,0X04,0X02,0X02,0X04,0X08,0X00, // 'x' + 0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X23,0X44,0X44,0X44,0X42,0X3F,0X00, // 'y' + 0X20,0X20,0X20,0X20,0XA0,0X60,0X00,0X08,0X0C,0X0A,0X09,0X08,0X08,0X00, // 'z' + 0X00,0X80,0X80,0X7C,0X02,0X02,0X00,0X00,0X00,0X00,0X1F,0X20,0X20,0X00, // '{' + 0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X00,0X00, // '|' + 0X02,0X02,0X7C,0X80,0X80,0X00,0X00,0X20,0X20,0X1F,0X00,0X00,0X00,0X00, // '}' + 0X30,0X08,0X08,0X10,0X20,0X20,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '~' + 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F // del +}; +#endif // font8x16_h \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/allFonts.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/allFonts.h new file mode 100644 index 0000000..7fc95cf --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/allFonts.h @@ -0,0 +1,105 @@ +/* + * allFonts.h font header for GLCD library + * The fonts listed below will be available in a sketch if this file is included + * + * If you create your own fonts you can add the header to this file + * + * Note that the build environment only holds a font in Flash if its selected + * so there is no penalty to including a font file here if its not used + */ + +#ifndef _allFonts_h_ +#define _allFonts_h_ + +#ifdef __AVR__ +#include +/** declare a font for AVR. */ +#define GLCDFONTDECL(_n) static const uint8_t __attribute__ ((progmem))_n[] +#define readFontByte(addr) pgm_read_byte(addr) +#else // __AVR__ +/** declare a font. */ +#define GLCDFONTDECL(_n) static const uint8_t _n[] +/** Fake read from flash. */ +#define readFontByte(addr) (*(const unsigned char *)(addr)) +#endif // __AVR__ +//------------------------------------------------------------------------------ +// Font Indices +#define FONT_LENGTH 0 +#define FONT_WIDTH 2 +#define FONT_HEIGHT 3 +#define FONT_FIRST_CHAR 4 +#define FONT_CHAR_COUNT 5 +#define FONT_WIDTH_TABLE 6 +// +// FONT_LENGTH is a 16 bit Big Endian length field. +// Unfortunately, FontCreator2 screwed up the value it put in the field +// so it is pretty much meaningless. However it still is used to indicate +// some special things. +// 00 00 (fixed width font with 1 padding pixel on right and below) +// 00 01 (fixed width font with no padding pixels) +// FONT_WIDTH it the max character width. +// any other value means variable width font in FontCreator2 (thiele) +// format with pixel padding + +#include "Adafruit5x7.h" // Font from Adafruit GFX library +#include "font5x7.h" +#include "lcd5x7.h" +#include "Stang5x7.h" +#include "X11fixed7x14.h" +#include "X11fixed7x14B.h" +#include "ZevvPeep8x16.h" + +#include "System5x7.h" // system font (fixed width) +#include "SystemFont5x7.h" // backward compability System5x7 header +#include "Iain5x7.h" // similar to system5x7 but proportional +#include "Arial14.h" // proportional font +#include "Arial_bold_14.h" // Bold proportional font +#include "Corsiva_12.h" +#include "Verdana_digits_24.h" // large proportional font contains [0-9] and : + +#include "Callibri10.h" +#include "Callibri11.h" +#include "Callibri11_bold.h" +#include "Callibri11_italic.h" +#include "Callibri14.h" +#include "Callibri15.h" +#include "Cooper19.h" +#include "Cooper21.h" +#include "Cooper26.h" +#include "TimesNewRoman13.h" +#include "TimesNewRoman13_italic.h" +#include "TimesNewRoman16.h" +#include "TimesNewRoman16_bold.h" +#include "TimesNewRoman16_italic.h" +#include "Verdana12.h" +#include "Verdana12_bold.h" +#include "Verdana12_italic.h" +#include "Roosewood22.h" +#include "Roosewood26.h" + +#include "fixednums7x15.h" // fixed width font - + , - . / [0-9] and : +#include "fixednums8x16.h" // fixed width font - + , - . / [0-9] and : +#include "fixednums15x31.h" // fixed width font - + , - . / [0-9] and : + +#include "CalBlk36.h" +#include "CalLite24.h" +#include "lcdnums12x16.h" // font that looks like LCD digits +#include "lcdnums14x24.h" // font that looks like LCD digits +#include "fixed_bold10x15.h" +#include "Wendy3x5.h" +#include "newbasic3x5.h" + +/* + * These fonts require no-pad rendering code + */ +#include "font8x8.h" // fixed wider font but similar to system5x7 font +#include "cp437font8x8.h" // fixed Font from 80's IBM PC + +/* + * These fonts require UTF8 encoding support + */ + +#include "utf8font10x16.h" // UTF8 font up to U+00FF + // http://www.fileformat.info/info/charset/UTF-8/list.htm + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/cp437font8x8.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/cp437font8x8.h new file mode 100644 index 0000000..307332f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/cp437font8x8.h @@ -0,0 +1,284 @@ +/* + * This is the same font that was used on the original Monochrome adapter + * and later on the CGA adapter from the early IBM PC. + * better known as the cp437 font. + * This font has many special characters that can be used to simulate + * some simple graphics, such as boxes, borders, bar graphs, pointers, + * and more. It must be rendered with no pixel padding between character glyphs. + * See wikipedia for further details about the cp437 font: + * http://en.wikipedia.org/wiki/Code_page_437 + * + * Update for openGLCD + * Date: 2011-08-01 + * bperrybap@opensource.billsworld.billandterrie.com + */ + +#ifndef CP437FONT8x8_H +#define CP437FONT8x8_H + +GLCDFONTDECL(cp437font8x8) = { + 0x0, 0x1, // size of one indicates fixed width no pixel pad font + 0x08, // width + 0x08, // height + 0x00, // first char + 0xff, // char count (note can't print character 0xff) + 0, 0, 0, 0, 0, 0, 0, 0, //'' +126, 129, 149, 177, 177, 149, 129, 126, //'' +126, 255, 235, 207, 207, 235, 255, 126, //'' + 14, 31, 63, 126, 63, 31, 14, 0, //'' + 8, 28, 62, 127, 62, 28, 8, 0, //'' + 24, 186, 255, 255, 255, 186, 24, 0, //'' + 16, 184, 252, 255, 252, 184, 16, 0, //'' + 0, 0, 24, 60, 60, 24, 0, 0, //'' +255, 255, 231, 195, 195, 231, 255, 255, //'' + 0, 60, 102, 66, 66, 102, 60, 0, //' ' +255, 195, 153, 189, 189, 153, 195, 255, //'' +112, 248, 136, 136, 253, 127, 7, 15, //' ' + 0, 78, 95, 241, 241, 95, 78, 0, //' ' +192, 224, 255, 127, 5, 5, 7, 7, //'' +192, 255, 127, 5, 5, 101, 127, 63, //'' +153, 90, 60, 231, 231, 60, 90, 153, //'' +127, 62, 62, 28, 28, 8, 8, 0, //'' + 8, 8, 28, 28, 62, 62, 127, 0, //'' + 0, 36, 102, 255, 255, 102, 36, 0, //'' + 0, 95, 95, 0, 0, 95, 95, 0, //'' + 6, 15, 9, 127, 127, 1, 127, 127, //'' + 64, 218, 191, 165, 253, 89, 3, 2, //'' + 0, 112, 112, 112, 112, 112, 112, 0, //'' +128, 148, 182, 255, 255, 182, 148, 128, //'' + 0, 4, 6, 127, 127, 6, 4, 0, //'' + 0, 16, 48, 127, 127, 48, 16, 0, //'' + 8, 8, 8, 42, 62, 28, 8, 0, //'EOF' + 8, 28, 62, 42, 8, 8, 8, 0, //'' + 60, 60, 32, 32, 32, 32, 32, 0, //'' + 8, 28, 62, 8, 8, 62, 28, 8, //'' + 48, 56, 60, 62, 62, 60, 56, 48, //'' + 6, 14, 30, 62, 62, 30, 14, 6, //'' + 0, 0, 0, 0, 0, 0, 0, 0, //' ' + 0, 6, 95, 95, 6, 0, 0, 0, //'!' + 0, 7, 7, 0, 7, 7, 0, 0, //'"' + 20, 127, 127, 20, 127, 127, 20, 0, //'#' + 36, 46, 107, 107, 58, 18, 0, 0, //'$' + 70, 102, 48, 24, 12, 102, 98, 0, //'%' + 48, 122, 79, 93, 55, 122, 72, 0, //'&' + 4, 7, 3, 0, 0, 0, 0, 0, //''' + 0, 28, 62, 99, 65, 0, 0, 0, //'(' + 0, 65, 99, 62, 28, 0, 0, 0, //')' + 8, 42, 62, 28, 28, 62, 42, 8, //'*' + 8, 8, 62, 62, 8, 8, 0, 0, //'+' + 0, 128, 224, 96, 0, 0, 0, 0, //',' + 8, 8, 8, 8, 8, 8, 0, 0, //'-' + 0, 0, 96, 96, 0, 0, 0, 0, //'.' + 96, 48, 24, 12, 6, 3, 1, 0, //'/' + 62, 127, 113, 89, 77, 127, 62, 0, //'0' + 64, 66, 127, 127, 64, 64, 0, 0, //'1' + 98, 115, 89, 73, 111, 102, 0, 0, //'2' + 34, 99, 73, 73, 127, 54, 0, 0, //'3' + 24, 28, 22, 83, 127, 127, 80, 0, //'4' + 39, 103, 69, 69, 125, 57, 0, 0, //'5' + 60, 126, 75, 73, 121, 48, 0, 0, //'6' + 3, 3, 113, 121, 15, 7, 0, 0, //'7' + 54, 127, 73, 73, 127, 54, 0, 0, //'8' + 6, 79, 73, 105, 63, 30, 0, 0, //'9' + 0, 0, 102, 102, 0, 0, 0, 0, //':' + 0, 128, 230, 102, 0, 0, 0, 0, //';' + 8, 28, 54, 99, 65, 0, 0, 0, //'<' + 36, 36, 36, 36, 36, 36, 0, 0, //'=' + 0, 65, 99, 54, 28, 8, 0, 0, //'>' + 2, 3, 81, 89, 15, 6, 0, 0, //'?' + 62, 127, 65, 93, 93, 31, 30, 0, //'@' +124, 126, 19, 19, 126, 124, 0, 0, //'A' + 65, 127, 127, 73, 73, 127, 54, 0, //'B' + 28, 62, 99, 65, 65, 99, 34, 0, //'C' + 65, 127, 127, 65, 99, 62, 28, 0, //'D' + 65, 127, 127, 73, 93, 65, 99, 0, //'E' + 65, 127, 127, 73, 29, 1, 3, 0, //'F' + 28, 62, 99, 65, 81, 115, 114, 0, //'G' +127, 127, 8, 8, 127, 127, 0, 0, //'H' + 0, 65, 127, 127, 65, 0, 0, 0, //'I' + 48, 112, 64, 65, 127, 63, 1, 0, //'J' + 65, 127, 127, 8, 28, 119, 99, 0, //'K' + 65, 127, 127, 65, 64, 96, 112, 0, //'L' +127, 127, 14, 28, 14, 127, 127, 0, //'M' +127, 127, 6, 12, 24, 127, 127, 0, //'N' + 28, 62, 99, 65, 99, 62, 28, 0, //'O' + 65, 127, 127, 73, 9, 15, 6, 0, //'P' + 30, 63, 33, 113, 127, 94, 0, 0, //'Q' + 65, 127, 127, 9, 25, 127, 102, 0, //'R' + 38, 111, 77, 89, 115, 50, 0, 0, //'S' + 3, 65, 127, 127, 65, 3, 0, 0, //'T' +127, 127, 64, 64, 127, 127, 0, 0, //'U' + 31, 63, 96, 96, 63, 31, 0, 0, //'V' +127, 127, 48, 24, 48, 127, 127, 0, //'W' + 67, 103, 60, 24, 60, 103, 67, 0, //'X' + 7, 79, 120, 120, 79, 7, 0, 0, //'Y' + 71, 99, 113, 89, 77, 103, 115, 0, //'Z' + 0, 127, 127, 65, 65, 0, 0, 0, //'[' + 1, 3, 6, 12, 24, 48, 96, 0, //'\' + 0, 65, 65, 127, 127, 0, 0, 0, //']' + 8, 12, 6, 3, 6, 12, 8, 0, //'^' +128, 128, 128, 128, 128, 128, 128, 128, //'_' + 0, 0, 3, 7, 4, 0, 0, 0, //'`' + 32, 116, 84, 84, 60, 120, 64, 0, //'a' + 65, 127, 63, 72, 72, 120, 48, 0, //'b' + 56, 124, 68, 68, 108, 40, 0, 0, //'c' + 48, 120, 72, 73, 63, 127, 64, 0, //'d' + 56, 124, 84, 84, 92, 24, 0, 0, //'e' + 72, 126, 127, 73, 3, 2, 0, 0, //'f' +152, 188, 164, 164, 248, 124, 4, 0, //'g' + 65, 127, 127, 8, 4, 124, 120, 0, //'h' + 0, 68, 125, 125, 64, 0, 0, 0, //'i' + 96, 224, 128, 128, 253, 125, 0, 0, //'j' + 65, 127, 127, 16, 56, 108, 68, 0, //'k' + 0, 65, 127, 127, 64, 0, 0, 0, //'l' +124, 124, 24, 56, 28, 124, 120, 0, //'m' +124, 124, 4, 4, 124, 120, 0, 0, //'n' + 56, 124, 68, 68, 124, 56, 0, 0, //'o' +132, 252, 248, 164, 36, 60, 24, 0, //'p' + 24, 60, 36, 164, 248, 252, 132, 0, //'q' + 68, 124, 120, 76, 4, 28, 24, 0, //'r' + 72, 92, 84, 84, 116, 36, 0, 0, //'s' + 0, 4, 62, 127, 68, 36, 0, 0, //'t' + 60, 124, 64, 64, 60, 124, 64, 0, //'u' + 28, 60, 96, 96, 60, 28, 0, 0, //'v' + 60, 124, 112, 56, 112, 124, 60, 0, //'w' + 68, 108, 56, 16, 56, 108, 68, 0, //'x' +156, 188, 160, 160, 252, 124, 0, 0, //'y' + 76, 100, 116, 92, 76, 100, 0, 0, //'z' + 8, 8, 62, 119, 65, 65, 0, 0, //'{' + 0, 0, 0, 119, 119, 0, 0, 0, //'|' + 65, 65, 119, 62, 8, 8, 0, 0, //'}' + 2, 3, 1, 3, 2, 3, 1, 0, //'~' +112, 120, 76, 70, 76, 120, 112, 0, //'' + 14, 159, 145, 177, 251, 74, 0, 0, //'€' + 58, 122, 64, 64, 122, 122, 64, 0, //'' + 56, 124, 84, 85, 93, 25, 0, 0, //'‚' + 2, 35, 117, 85, 85, 125, 123, 66, //'ƒ' + 33, 117, 84, 84, 125, 121, 64, 0, //'„' + 33, 117, 85, 84, 124, 120, 64, 0, //'…' + 32, 116, 87, 87, 124, 120, 64, 0, //'†' + 24, 60, 164, 164, 228, 64, 0, 0, //'‡' + 2, 59, 125, 85, 85, 93, 27, 2, //'ˆ' + 57, 125, 84, 84, 93, 25, 0, 0, //'‰' + 57, 125, 85, 84, 92, 24, 0, 0, //'Š' + 1, 69, 124, 124, 65, 1, 0, 0, //'‹' + 2, 3, 69, 125, 125, 67, 2, 0, //'Œ' + 1, 69, 125, 124, 64, 0, 0, 0, //'' +121, 125, 22, 18, 22, 125, 121, 0, //'Ž' +112, 120, 43, 43, 120, 112, 0, 0, //'' + 68, 124, 124, 85, 85, 69, 0, 0, //'' + 32, 116, 84, 84, 124, 124, 84, 84, //'‘' +124, 126, 11, 9, 127, 127, 73, 0, //'’' + 50, 123, 73, 73, 123, 50, 0, 0, //'“' + 50, 122, 72, 72, 122, 50, 0, 0, //'”' + 50, 122, 74, 72, 120, 48, 0, 0, //'•' + 58, 123, 65, 65, 123, 122, 64, 0, //'–' + 58, 122, 66, 64, 120, 120, 64, 0, //'—' +154, 186, 160, 160, 250, 122, 0, 0, //'˜' + 1, 25, 60, 102, 102, 60, 25, 1, //'™' + 61, 125, 64, 64, 125, 61, 0, 0, //'š' + 24, 60, 36, 231, 231, 36, 36, 0, //'›' +104, 126, 127, 73, 67, 102, 32, 0, //'œ' + 43, 47, 252, 252, 47, 43, 0, 0, //'' +255, 255, 9, 9, 47, 246, 248, 160, //'ž' + 64, 192, 136, 254, 127, 9, 3, 2, //'Ÿ' + 32, 116, 84, 85, 125, 121, 64, 0, //' ' + 0, 68, 125, 125, 65, 0, 0, 0, //'¡' + 48, 120, 72, 74, 122, 50, 0, 0, //'¢' + 56, 120, 64, 66, 122, 122, 64, 0, //'£' +122, 122, 10, 10, 122, 112, 0, 0, //'¤' +125, 125, 25, 49, 125, 125, 0, 0, //'¥' + 0, 38, 47, 41, 47, 47, 40, 0, //'¦' + 0, 38, 47, 41, 47, 38, 0, 0, //'§' + 48, 120, 77, 69, 96, 32, 0, 0, //'¨' + 56, 56, 8, 8, 8, 8, 0, 0, //'©' + 8, 8, 8, 8, 56, 56, 0, 0, //'ª' + 79, 111, 48, 24, 204, 238, 187, 145, //'«' + 79, 111, 48, 24, 108, 118, 251, 249, //'¬' + 0, 0, 0, 123, 123, 0, 0, 0, //'­' + 8, 28, 54, 34, 8, 28, 54, 34, //'®' + 34, 54, 28, 8, 34, 54, 28, 8, //'¯' +170, 0, 85, 0, 170, 0, 85, 0, //'°' +170, 85, 170, 85, 170, 85, 170, 85, //'±' +221, 255, 170, 119, 221, 170, 255, 119, //'²' + 0, 0, 0, 255, 255, 0, 0, 0, //'³' + 16, 16, 16, 255, 255, 0, 0, 0, //'´' + 20, 20, 20, 255, 255, 0, 0, 0, //'µ' + 16, 16, 255, 255, 0, 255, 255, 0, //'¶' + 16, 16, 240, 240, 16, 240, 240, 0, //'·' + 20, 20, 20, 252, 252, 0, 0, 0, //'¸' + 20, 20, 247, 247, 0, 255, 255, 0, //'¹' + 0, 0, 255, 255, 0, 255, 255, 0, //'º' + 20, 20, 244, 244, 4, 252, 252, 0, //'»' + 20, 20, 23, 23, 16, 31, 31, 0, //'¼' + 16, 16, 31, 31, 16, 31, 31, 0, //'½' + 20, 20, 20, 31, 31, 0, 0, 0, //'¾' + 16, 16, 16, 240, 240, 0, 0, 0, //'¿' + 0, 0, 0, 31, 31, 16, 16, 16, //'À' + 16, 16, 16, 31, 31, 16, 16, 16, //'Á' + 16, 16, 16, 240, 240, 16, 16, 16, //'Â' + 0, 0, 0, 255, 255, 16, 16, 16, //'Ã' + 16, 16, 16, 16, 16, 16, 16, 16, //'Ä' + 16, 16, 16, 255, 255, 16, 16, 16, //'Å' + 0, 0, 0, 255, 255, 20, 20, 20, //'Æ' + 0, 0, 255, 255, 0, 255, 255, 16, //'Ç' + 0, 0, 31, 31, 16, 23, 23, 20, //'È' + 0, 0, 252, 252, 4, 244, 244, 20, //'É' + 20, 20, 23, 23, 16, 23, 23, 20, //'Ê' + 20, 20, 244, 244, 4, 244, 244, 20, //'Ë' + 0, 0, 255, 255, 0, 247, 247, 20, //'Ì' + 20, 20, 20, 20, 20, 20, 20, 20, //'Í' + 20, 20, 247, 247, 0, 247, 247, 20, //'Î' + 20, 20, 20, 23, 23, 20, 20, 20, //'Ï' + 16, 16, 31, 31, 16, 31, 31, 16, //'Ð' + 20, 20, 20, 244, 244, 20, 20, 20, //'Ñ' + 16, 16, 240, 240, 16, 240, 240, 16, //'Ò' + 0, 0, 31, 31, 16, 31, 31, 16, //'Ó' + 0, 0, 0, 31, 31, 20, 20, 20, //'Ô' + 0, 0, 0, 252, 252, 20, 20, 20, //'Õ' + 0, 0, 240, 240, 16, 240, 240, 16, //'Ö' + 16, 16, 255, 255, 16, 255, 255, 16, //'×' + 20, 20, 20, 255, 255, 20, 20, 20, //'Ø' + 16, 16, 16, 31, 31, 0, 0, 0, //'Ù' + 0, 0, 0, 240, 240, 16, 16, 16, //'Ú' +255, 255, 255, 255, 255, 255, 255, 255, //'Û' +240, 240, 240, 240, 240, 240, 240, 240, //'Ü' +255, 255, 255, 255, 0, 0, 0, 0, //'Ý' + 0, 0, 0, 0, 255, 255, 255, 255, //'Þ' + 15, 15, 15, 15, 15, 15, 15, 15, //'ß' + 56, 124, 68, 108, 56, 108, 68, 0, //'à' +252, 254, 42, 42, 62, 20, 0, 0, //'á' +126, 126, 2, 2, 6, 6, 0, 0, //'â' + 2, 126, 126, 2, 126, 126, 2, 0, //'ã' + 99, 119, 93, 73, 99, 99, 0, 0, //'ä' + 56, 124, 68, 124, 60, 4, 4, 0, //'å' +128, 254, 126, 32, 32, 62, 30, 0, //'æ' + 4, 6, 2, 126, 124, 6, 2, 0, //'ç' +153, 189, 231, 231, 189, 153, 0, 0, //'è' + 28, 62, 107, 73, 107, 62, 28, 0, //'é' + 76, 126, 115, 1, 115, 126, 76, 0, //'ê' + 48, 120, 74, 79, 125, 57, 0, 0, //'ë' + 24, 60, 36, 60, 60, 36, 60, 24, //'ì' +152, 252, 100, 60, 62, 39, 61, 24, //'í' + 28, 62, 107, 73, 73, 0, 0, 0, //'î' +126, 127, 1, 1, 127, 126, 0, 0, //'ï' + 42, 42, 42, 42, 42, 42, 0, 0, //'ð' + 68, 68, 95, 95, 68, 68, 0, 0, //'ñ' + 64, 81, 91, 78, 68, 64, 0, 0, //'ò' + 64, 68, 78, 91, 81, 64, 0, 0, //'ó' + 0, 0, 0, 254, 255, 1, 7, 6, //'ô' + 96, 224, 128, 255, 127, 0, 0, 0, //'õ' + 8, 8, 107, 107, 8, 8, 0, 0, //'ö' + 36, 54, 18, 54, 36, 54, 18, 0, //'÷' + 0, 6, 15, 9, 15, 6, 0, 0, //'ø' + 0, 0, 0, 24, 24, 0, 0, 0, //'ù' + 0, 0, 0, 16, 16, 0, 0, 0, //'ú' + 16, 48, 112, 192, 255, 255, 1, 1, //'û' + 0, 31, 31, 1, 31, 30, 0, 0, //'ü' + 0, 25, 29, 23, 18, 0, 0, 0, //'ý' + 0, 0, 60, 60, 60, 60, 0, 0, //'þ' + 0, 0, 0, 0, 0, 0, 0, 0 //'ÿ' +}; + +#endif + diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixed_bold10x15.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixed_bold10x15.h new file mode 100644 index 0000000..ddb3901 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixed_bold10x15.h @@ -0,0 +1,115 @@ +/* + Generated by the Font Generator at microintegrate.com + (modded for openGLCD) +*/ + +#ifndef FIXED_BOLD10x15_H +#define FIXED_BOLD10x15_H + +#define FIXED_BOLD10x15_WIDTH 10 +#define FIXED_BOLD10x15_HEIGHT 15 + +GLCDFONTDECL(fixed_bold10x15) = { + 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height + 0x0a, // width + 0x0f, // height + 0x20, // first char + 0x5F, // char count + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // *space* + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, // ! + 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " + 0x00, 0x30, 0xfe, 0xfe, 0x30, 0x30, 0xfe, 0xfe, 0x30, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x03, 0x03, 0x1f, 0x1f, 0x03, 0x00, // # + 0x00, 0x70, 0xf8, 0xd8, 0xfe, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x7f, 0x19, 0x1f, 0x0f, 0x00, 0x00, // $ + 0x1c, 0xb6, 0xa2, 0xf6, 0xcc, 0x60, 0x60, 0x20, 0x30, 0x00, 0x01, 0x01, 0x00, 0x0e, 0x1b, 0x11, 0x1b, 0x0e, 0x00, 0x00, // % + 0x00, 0x00, 0xdc, 0x7e, 0xe6, 0xc6, 0x86, 0x0c, 0x80, 0x80, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x19, 0x1f, 0x1e, 0x1f, 0x13, // & + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' + 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x1e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x78, 0x40, 0x00, 0x00, 0x00, // ( + 0x00, 0x00, 0x02, 0x1e, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x78, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, // ) + 0x00, 0x48, 0x78, 0x30, 0xfe, 0x30, 0x78, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // * + 0x00, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x01, 0x01, 0x01, 0x00, // + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x00, // , + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, // - + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, // . + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0e, 0x02, 0x00, 0x00, 0x20, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, // / + 0x00, 0xf0, 0xfc, 0x0e, 0xc6, 0xc6, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // 0 + 0x00, 0x00, 0x0c, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x00, // 1 + 0x00, 0x0c, 0x06, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x38, 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x00, // 2 + 0x00, 0x0c, 0x06, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x38, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0f, 0x0f, 0x00, // 3 + 0x00, 0x80, 0xc0, 0x70, 0x18, 0x0e, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x1f, 0x1f, 0x03, 0x00, // 4 + 0x00, 0xfe, 0x7e, 0x66, 0x66, 0x66, 0xe6, 0xc6, 0x80, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // 5 + 0x00, 0xf0, 0xfc, 0xce, 0x66, 0x66, 0xe6, 0xcc, 0x80, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // 6 + 0x00, 0x06, 0x06, 0x06, 0x06, 0xe6, 0xfe, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, // 7 + 0x00, 0x38, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x38, 0x00, 0x00, 0x0f, 0x0f, 0x18, 0x18, 0x18, 0x18, 0x0f, 0x0f, 0x00, // 8 + 0x00, 0x78, 0xfc, 0xce, 0x86, 0x86, 0xce, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x0c, 0x19, 0x19, 0x19, 0x1c, 0x0f, 0x03, 0x00, // 9 + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, // : + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x00, // ; + 0x00, 0x80, 0x80, 0xc0, 0x40, 0x60, 0x60, 0x20, 0x30, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x06, 0x04, 0x0c, 0x00, // < + 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, // = + 0x00, 0x30, 0x20, 0x60, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x0c, 0x04, 0x06, 0x06, 0x02, 0x03, 0x01, 0x01, 0x00, // > + 0x00, 0x0c, 0x06, 0x86, 0xc6, 0x66, 0x7e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, // ? + 0xe0, 0xf0, 0x38, 0x9c, 0xcc, 0xcc, 0xdc, 0xf8, 0xf0, 0x00, 0x07, 0x1f, 0x38, 0x73, 0x67, 0x66, 0x66, 0x77, 0x27, 0x00, // @ + 0x00, 0x00, 0xc0, 0xfc, 0x3e, 0x3e, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x0f, 0x03, 0x03, 0x0f, 0x1f, 0x18, 0x00, // A + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x3c, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x0f, 0x00, // B + 0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, // C + 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x0c, 0x0f, 0x03, 0x00, // D + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // E + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F + 0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x86, 0x86, 0x86, 0x8c, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x19, 0x19, 0x1f, 0x0f, 0x00, // G + 0x00, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, // H + 0x00, 0x00, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x00, 0x00, // I + 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f, 0x0f, 0x00, // J + 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xfc, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x03, 0x0f, 0x1e, 0x18, 0x00, // K + 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, // L + 0x00, 0xfe, 0xfe, 0x3e, 0xf0, 0xf0, 0x3e, 0xfe, 0xfe, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x01, 0x01, 0x00, 0x1f, 0x1f, 0x00, // M + 0x00, 0xfe, 0xfe, 0x1e, 0xf0, 0xc0, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x03, 0x1e, 0x1f, 0x1f, 0x00, // N + 0x00, 0xf0, 0xfc, 0x0e, 0x06, 0x06, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x03, 0x00, // O + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x7c, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // P + 0x00, 0xf0, 0xfc, 0x0e, 0x06, 0x06, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x3c, 0x6f, 0x07, 0x00, // Q + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x3c, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1e, 0x10, // R + 0x00, 0x38, 0x7c, 0xe6, 0xc6, 0xc6, 0xc6, 0x8c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0f, 0x0f, 0x00, // S + 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, // T + 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // U + 0x00, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, // V + 0x1e, 0xfe, 0xe0, 0x00, 0xf0, 0xf0, 0x00, 0xe0, 0xfe, 0x1e, 0x00, 0x1f, 0x1f, 0x1e, 0x01, 0x01, 0x1e, 0x1f, 0x1f, 0x00, // W + 0x00, 0x02, 0x0e, 0x3e, 0xf8, 0xf8, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x10, 0x1c, 0x1f, 0x03, 0x03, 0x1f, 0x1c, 0x10, 0x00, // X + 0x02, 0x0e, 0x3e, 0x78, 0xe0, 0xe0, 0x78, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, // Y + 0x00, 0x06, 0x06, 0x86, 0xc6, 0xf6, 0x7e, 0x1e, 0x0e, 0x00, 0x00, 0x1c, 0x1e, 0x1f, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x00, // Z + 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x40, 0x40, 0x00, 0x00, 0x00, // [ + 0x00, 0x02, 0x0e, 0x38, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x38, 0x20, 0x00, // *backslash* + 0x00, 0x00, 0x02, 0x02, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, // ] + 0x10, 0x18, 0x1c, 0x0e, 0x06, 0x0e, 0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // _ + 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` + 0x00, 0x00, 0x60, 0x30, 0xb0, 0xb0, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x0e, 0x1f, 0x1b, 0x19, 0x19, 0x0d, 0x1f, 0x1f, 0x00, // a + 0x00, 0xfe, 0xfe, 0x60, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x1f, 0x1f, 0x0c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // b + 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, // c + 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xfe, 0xfe, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x0c, 0x1f, 0x1f, 0x00, // d + 0x00, 0xc0, 0xe0, 0xb0, 0xb0, 0xb0, 0xb0, 0xe0, 0xc0, 0x00, 0x00, 0x07, 0x0f, 0x1d, 0x19, 0x19, 0x19, 0x19, 0x0d, 0x00, // e + 0x00, 0x30, 0x30, 0xfc, 0xfe, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, // f + 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xf0, 0xf0, 0x00, 0x00, 0x03, 0x37, 0x6e, 0x6c, 0x6c, 0x66, 0x7f, 0x3f, 0x00, // g + 0x00, 0xfe, 0xfe, 0x60, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, // h + 0x00, 0x00, 0x30, 0x30, 0xf7, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x00, // i + 0x00, 0x00, 0x30, 0x30, 0xf7, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, // j + 0x00, 0xfe, 0xfe, 0x80, 0xe0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x01, 0x03, 0x07, 0x1e, 0x18, 0x10, 0x00, // k + 0x00, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, // l + 0x00, 0xf0, 0xf0, 0x30, 0xf0, 0xe0, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, // m + 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, // n + 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, // o + 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x7f, 0x7f, 0x06, 0x0c, 0x0c, 0x0e, 0x07, 0x03, 0x00, // p + 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xf0, 0xf0, 0x00, 0x00, 0x03, 0x07, 0x0e, 0x0c, 0x0c, 0x06, 0x7f, 0x7f, 0x00, // q + 0x00, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // r + 0x00, 0xe0, 0xf0, 0xb0, 0xb0, 0xb0, 0xb0, 0x30, 0x60, 0x00, 0x00, 0x0c, 0x19, 0x19, 0x19, 0x19, 0x1b, 0x1f, 0x0e, 0x00, // s + 0x00, 0x30, 0x30, 0xfc, 0xfc, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, // t + 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x0c, 0x1f, 0x1f, 0x00, // u + 0x00, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0xe0, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x0f, 0x01, 0x00, 0x00, // v + 0x70, 0xf0, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x07, 0x1f, 0x1e, 0x03, 0x03, 0x1e, 0x1f, 0x07, 0x00, // w + 0x00, 0x10, 0x30, 0xf0, 0xc0, 0xc0, 0xf0, 0x30, 0x10, 0x00, 0x00, 0x10, 0x18, 0x1e, 0x07, 0x07, 0x1e, 0x18, 0x10, 0x00, // x + 0x00, 0x10, 0xf0, 0xf0, 0x80, 0x00, 0xf0, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x60, 0x63, 0x7f, 0x1f, 0x0f, 0x01, 0x00, 0x00, // y + 0x00, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xf0, 0x70, 0x30, 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x00, // z + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x3e, 0x7e, 0x40, 0x40, 0x00, 0x00, // { + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, // | + 0x00, 0x00, 0x02, 0x02, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7e, 0x3e, 0x01, 0x01, 0x00, 0x00, // } + 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, // ~ +}; +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums15x31.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums15x31.h new file mode 100644 index 0000000..23d96a7 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums15x31.h @@ -0,0 +1,123 @@ +/* + * Fixed width font for numbers + * + * This font is very useful when using overstrike as all characters & numbers + * are all the same width. + * + * This font also contains a few special characters that are nice for certain applications + * like clocks, signed values or decimal point values. + * + * The rendering code normally inserts a pad pixel so this size allows the font to fit + * perfectly on 32 and 64 tall glcd displays. + * + * Font has also been squeezed to 15 pixels wide for better alignment on 128 & 192 pixel displays. + */ + +#ifndef FIXEDNUMS15x31_H +#define FIXEDNUMS15x31_H + +GLCDFONTDECL(fixednums15x31) = { + 0x0, 0x0, // size of zero indicates fixed width font + 15, // width + 31, // height + '+', // first char (48) + 16, // char count +// char '+' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char ',' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '-' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '.' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '/' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, +0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '0' +0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0xcf, 0xcf, 0xfc, 0xfc, 0xf0, 0xf0, +0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0x3c, 0x3f, 0x03, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0x3c, 0x3c, 0x03, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, + +// char '1' +0x30, 0x30, 0x30, 0x30, 0x3c, 0x3c, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + +// char '2' +0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x0f, 0xff, 0xfc, 0xfc, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xf0, 0xff, 0x3f, 0x3f, 0x0f, +0xc0, 0xc0, 0xf0, 0xf0, 0x3c, 0x3c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + +// char '3' +0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x0f, 0x1f, 0xfc, 0xfc, 0xf0, +0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xff, 0xdf, 0x8f, +0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, +0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, + +// char '4' +0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xfc, 0xfc, 0xff, 0xff, 0x03, 0x03, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, +0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, + +// char '5' +0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0xfc, 0xf0, 0xf0, 0xc0, +0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, + +// char '6' +0x00, 0x00, 0xc0, 0xc0, 0xf0, 0xf0, 0x3c, 0x3c, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, +0xfc, 0xfc, 0xff, 0xff, 0x33, 0x33, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xc0, 0xc0, 0x00, +0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, + +// char '7' +0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x3f, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '8' +0xf0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0xfc, 0xfc, 0xf0, 0xf0, +0x03, 0x03, 0xcf, 0xcf, 0xfc, 0xfc, 0x30, 0x30, 0x30, 0xfc, 0xfc, 0xcf, 0xcf, 0x03, 0x03, +0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x03, 0x03, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, + +// char '9' +0xe0, 0xf0, 0xfc, 0xfc, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0xfc, 0xfc, 0xf0, 0xe0, +0x07, 0x0f, 0x3f, 0x3f, 0xf0, 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xfc, 0xfc, 0x3f, 0x3f, 0x03, +0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char ':' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums7x15.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums7x15.h new file mode 100644 index 0000000..570a43f --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums7x15.h @@ -0,0 +1,88 @@ +/* + * Fixed width font for numbers + * + * This font is very useful when using overstrike as all characters & numbers + * are all the same width. + * + * This font also contains a few special characters that are nice for certain applications + * like clocks, signed values or decimal point values. + * + * When rendering code inserts a pad pixel this size allows the font to fit + * perfectly on 32 and 64 tall glcd displays as well as 128 wide displays. + */ + +#ifndef FIXEDNUMS7x15_H +#define FIXEDNUMS7x15_H + +GLCDFONTDECL(fixednums7x15) = { + 0x0, 0x0, // size of zero indicates fixed width font + 7, // width + 15, // height + '+', // first char (48) + 16, // char count +// char '+' +0x00, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, +0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, + +// char ',' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0x38, 0x00, 0x00, + +// char '-' +0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +// char '.' +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + +// char '/' +0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, +0x00, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, + +// char '0' +0xfc, 0xfe, 0x03, 0xe1, 0x1b, 0xfe, 0xfc, +0x0f, 0x1f, 0x36, 0x21, 0x30, 0x1f, 0x0f, + +// char '1' +0x04, 0x04, 0x06, 0xff, 0xff, 0x00, 0x00, +0x20, 0x20, 0x20, 0x3f, 0x3f, 0x20, 0x20, + +// char '2' +0x0c, 0x0e, 0x03, 0x01, 0x81, 0xfe, 0x7c, +0x38, 0x3c, 0x26, 0x23, 0x21, 0x20, 0x20, + +// char '3' +0x0c, 0x0e, 0x43, 0x41, 0x43, 0xfe, 0xbc, +0x0c, 0x1c, 0x30, 0x20, 0x30, 0x1f, 0x0f, + +// char '4' +0x00, 0xe0, 0xfc, 0x1f, 0x83, 0x80, 0x00, +0x0f, 0x0f, 0x08, 0x08, 0x3f, 0x3f, 0x08, + +// char '5' +0x3f, 0x3f, 0x21, 0x21, 0x61, 0xe1, 0x81, +0x0c, 0x1c, 0x30, 0x20, 0x30, 0x3f, 0x0f, + +// char '6' +0xe0, 0xf8, 0x5c, 0x46, 0xc3, 0xc1, 0x01, +0x0f, 0x1f, 0x30, 0x20, 0x30, 0x3f, 0x0f, + +// char '7' +0x01, 0x01, 0x01, 0x81, 0xf1, 0x7f, 0x0f, +0x00, 0x00, 0x3c, 0x3f, 0x03, 0x00, 0x00, + +// char '8' +0x1c, 0xbe, 0xe3, 0x41, 0xe3, 0xbe, 0x1c, +0x0f, 0x1f, 0x30, 0x20, 0x30, 0x1f, 0x0f, + +// char '9' +0x3c, 0x7e, 0xc3, 0x81, 0x81, 0xfe, 0xfc, +0x20, 0x30, 0x38, 0x0c, 0x07, 0x03, 0x00, + +// char ':' +0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, +0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + +}; +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums8x16.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums8x16.h new file mode 100644 index 0000000..c04f643 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/fixednums8x16.h @@ -0,0 +1,46 @@ +/* + * Fixed width font file for numbers only. + * + * This font is very useful when using overstrike as all characters & numbers + * are all the same width. + * + * This font file can be used when only numbers are needed. + * + * This font also contains a few special characters that are nice for certain applications + * like clocks, signed values or decimal point values. + * + * Font is really 16 tall but this file is set to indicate 15 to allow it to line up with the lcd page size. + * It works as the the bottom row in the glyph is whitespace anyway. + * The rendering code normally inserts a pad pixel so this size allows additional rows + * on 32 and 64 tall glcd displays. + * + */ + +#ifndef FIXEDNUMS8x16_H +#define FIXEDNUMS8x16_H + +GLCDFONTDECL(fixednums8x16) = { + 0x0, 0x0, // size of zero indicates fixed width font + 8, // width + 15, // height + '+', // first char (48) + 16, // char count + + 0x80, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, // char '+' + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x70, 0x00, 0x00, 0x00, // char ',' + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // char '-' + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // char '.' + 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 0x03, 0x30, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, // char '/' + 0xfc, 0xfe, 0x03, 0x81, 0x61, 0x1b, 0xfe, 0xfc, 0x0f, 0x1f, 0x36, 0x21, 0x20, 0x30, 0x1f, 0x0f, // char '0' + 0x04, 0x04, 0x06, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x3f, 0x3f, 0x20, 0x20, 0x20, // char '1' + 0x0c, 0x0e, 0x03, 0x01, 0x81, 0xc3, 0x7e, 0x3c, 0x38, 0x3c, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, // char '2' + 0x0c, 0x0e, 0x43, 0x41, 0x41, 0x43, 0xfe, 0xbc, 0x0c, 0x1c, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '3' + 0x00, 0xe0, 0xfc, 0x1f, 0x83, 0x80, 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x3f, 0x3f, 0x08, 0x08, // char '4' + 0x3f, 0x3f, 0x21, 0x21, 0x21, 0x61, 0xc1, 0x81, 0x0c, 0x1c, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '5' + 0xe0, 0xf8, 0x5c, 0x46, 0x43, 0xc1, 0x81, 0x01, 0x0f, 0x1f, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '6' + 0x01, 0x01, 0x01, 0x01, 0x81, 0xf1, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x3f, 0x03, 0x00, 0x00, // char '7' + 0x1c, 0xbe, 0xe3, 0x41, 0x41, 0xe3, 0xbe, 0x1c, 0x0f, 0x1f, 0x30, 0x20, 0x20, 0x30, 0x1f, 0x0f, // char '8' + 0x3c, 0x7e, 0xc3, 0x81, 0x81, 0x83, 0xfe, 0xfc, 0x20, 0x20, 0x20, 0x30, 0x18, 0x0e, 0x07, 0x01, // char '9' + 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00 // char ': +}; +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/font5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/font5x7.h new file mode 100644 index 0000000..df3dc57 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/font5x7.h @@ -0,0 +1,108 @@ +#ifndef font5x7_h +#define font5x7_h +// Mystery font included in early Adafruit SSD1306 library +GLCDFONTDECL(font5x7) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 0x05, // width + 0x07, // height + 0x20, // first char + 0x60, // char count + 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE + 0x00, 0x00, 0x5F, 0x00, 0x00, // ! + 0x00, 0x03, 0x00, 0x03, 0x00, // " + 0x14, 0x3E, 0x14, 0x3E, 0x14, // # + 0x24, 0x2A, 0x7F, 0x2A, 0x12, // $ + 0x43, 0x33, 0x08, 0x66, 0x61, // % + 0x36, 0x49, 0x55, 0x22, 0x50, // & + 0x00, 0x05, 0x03, 0x00, 0x00, // ' + 0x00, 0x1C, 0x22, 0x41, 0x00, // ( + 0x00, 0x41, 0x22, 0x1C, 0x00, // ) + 0x14, 0x08, 0x3E, 0x08, 0x14, // * + 0x08, 0x08, 0x3E, 0x08, 0x08, // + + 0x00, 0x50, 0x30, 0x00, 0x00, // , + 0x08, 0x08, 0x08, 0x08, 0x08, // - + 0x00, 0x60, 0x60, 0x00, 0x00, // . + 0x20, 0x10, 0x08, 0x04, 0x02, // / + 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 + 0x00, 0x04, 0x02, 0x7F, 0x00, // 1 + 0x42, 0x61, 0x51, 0x49, 0x46, // 2 + 0x22, 0x41, 0x49, 0x49, 0x36, // 3 + 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 + 0x27, 0x45, 0x45, 0x45, 0x39, // 5 + 0x3E, 0x49, 0x49, 0x49, 0x32, // 6 + 0x01, 0x01, 0x71, 0x09, 0x07, // 7 + 0x36, 0x49, 0x49, 0x49, 0x36, // 8 + 0x26, 0x49, 0x49, 0x49, 0x3E, // 9 + 0x00, 0x36, 0x36, 0x00, 0x00, // : + 0x00, 0x56, 0x36, 0x00, 0x00, // ; + 0x08, 0x14, 0x22, 0x41, 0x00, // < + 0x14, 0x14, 0x14, 0x14, 0x14, // = + 0x00, 0x41, 0x22, 0x14, 0x08, // > + 0x02, 0x01, 0x51, 0x09, 0x06, // ? + 0x3E, 0x41, 0x59, 0x55, 0x5E, // @ + 0x7E, 0x09, 0x09, 0x09, 0x7E, // A + 0x7F, 0x49, 0x49, 0x49, 0x36, // B + 0x3E, 0x41, 0x41, 0x41, 0x22, // C + 0x7F, 0x41, 0x41, 0x41, 0x3E, // D + 0x7F, 0x49, 0x49, 0x49, 0x41, // E + 0x7F, 0x09, 0x09, 0x09, 0x01, // F + 0x3E, 0x41, 0x41, 0x49, 0x3A, // G + 0x7F, 0x08, 0x08, 0x08, 0x7F, // H + 0x00, 0x41, 0x7F, 0x41, 0x00, // I + 0x30, 0x40, 0x40, 0x40, 0x3F, // J + 0x7F, 0x08, 0x14, 0x22, 0x41, // K + 0x7F, 0x40, 0x40, 0x40, 0x40, // L + 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M + 0x7F, 0x02, 0x04, 0x08, 0x7F, // N + 0x3E, 0x41, 0x41, 0x41, 0x3E, // O + 0x7F, 0x09, 0x09, 0x09, 0x06, // P + 0x1E, 0x21, 0x21, 0x21, 0x5E, // Q + 0x7F, 0x09, 0x09, 0x09, 0x76, // R + 0x26, 0x49, 0x49, 0x49, 0x32, // S + 0x01, 0x01, 0x7F, 0x01, 0x01, // T + 0x3F, 0x40, 0x40, 0x40, 0x3F, // U + 0x1F, 0x20, 0x40, 0x20, 0x1F, // V + 0x7F, 0x20, 0x10, 0x20, 0x7F, // W + 0x41, 0x22, 0x1C, 0x22, 0x41, // X + 0x07, 0x08, 0x70, 0x08, 0x07, // Y + 0x61, 0x51, 0x49, 0x45, 0x43, // Z + 0x00, 0x7F, 0x41, 0x00, 0x00, // [ + 0x02, 0x04, 0x08, 0x10, 0x20, // backslash + 0x00, 0x00, 0x41, 0x7F, 0x00, // ] + 0x04, 0x02, 0x01, 0x02, 0x04, // ^ + 0x40, 0x40, 0x40, 0x40, 0x40, // _ + 0x00, 0x01, 0x02, 0x04, 0x00, // ` + 0x20, 0x54, 0x54, 0x54, 0x78, // a + 0x7F, 0x44, 0x44, 0x44, 0x38, // b + 0x38, 0x44, 0x44, 0x44, 0x44, // c + 0x38, 0x44, 0x44, 0x44, 0x7F, // d + 0x38, 0x54, 0x54, 0x54, 0x18, // e + 0x04, 0x04, 0x7E, 0x05, 0x05, // f + 0x08, 0x54, 0x54, 0x54, 0x3C, // g + 0x7F, 0x08, 0x04, 0x04, 0x78, // h + 0x00, 0x44, 0x7D, 0x40, 0x00, // i + 0x20, 0x40, 0x44, 0x3D, 0x00, // j + 0x7F, 0x10, 0x28, 0x44, 0x00, // k + 0x00, 0x41, 0x7F, 0x40, 0x00, // l + 0x7C, 0x04, 0x78, 0x04, 0x78, // m + 0x7C, 0x08, 0x04, 0x04, 0x78, // n + 0x38, 0x44, 0x44, 0x44, 0x38, // o + 0x7C, 0x14, 0x14, 0x14, 0x08, // p + 0x08, 0x14, 0x14, 0x14, 0x7C, // q + 0x00, 0x7C, 0x08, 0x04, 0x04, // r + 0x48, 0x54, 0x54, 0x54, 0x20, // s + 0x04, 0x04, 0x3F, 0x44, 0x44, // t + 0x3C, 0x40, 0x40, 0x20, 0x7C, // u + 0x1C, 0x20, 0x40, 0x20, 0x1C, // v + 0x3C, 0x40, 0x30, 0x40, 0x3C, // w + 0x44, 0x28, 0x10, 0x28, 0x44, // x + 0x0C, 0x50, 0x50, 0x50, 0x3C, // y + 0x44, 0x64, 0x54, 0x4C, 0x44, // z + 0x00, 0x08, 0x36, 0x41, 0x41, // { + 0x00, 0x00, 0x7F, 0x00, 0x00, // | + 0x41, 0x41, 0x36, 0x08, 0x00, // } + 0x02, 0x01, 0x02, 0x04, 0x02, // ~ + 0X7F, 0X7F, 0X7F, 0X7F, 0X7F // del +}; +#endif // font5x7_h + diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/font8x8.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/font8x8.h new file mode 100644 index 0000000..fb87837 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/font8x8.h @@ -0,0 +1,113 @@ +#ifndef FONT8x8_H +#define FONT8x8_H + +GLCDFONTDECL(font8x8) = { + 0x0, 0x1, // size of one indicates fixed font width and no pixel padding + 0x08, // width + 0x08, // height + 0x20, // first char + 0x5f, // char count + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x5F,0x00,0x00,0x00, // ! +0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00, // " +0x00,0x24,0x7E,0x24,0x24,0x7E,0x24,0x00, // # +0x00,0x2E,0x2A,0x7F,0x2A,0x3A,0x00,0x00, // $ +0x00,0x46,0x26,0x10,0x08,0x64,0x62,0x00, // % +0x00,0x20,0x54,0x4A,0x54,0x20,0x50,0x00, // & +0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00, // ' +0x00,0x00,0x00,0x3C,0x42,0x00,0x00,0x00, // ( +0x00,0x00,0x00,0x42,0x3C,0x00,0x00,0x00, // ) +0x00,0x10,0x54,0x38,0x54,0x10,0x00,0x00, // * +0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00, // + +0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00, // , +0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // - +0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, // . +0x00,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // / + +0x3C,0x62,0x52,0x4A,0x46,0x3C,0x00,0x00, // 0 +0x44,0x42,0x7E,0x40,0x40,0x00,0x00,0x00, // 1 +0x64,0x52,0x52,0x52,0x52,0x4C,0x00,0x00, // 2 +0x24,0x42,0x42,0x4A,0x4A,0x34,0x00,0x00, // 3 +0x30,0x28,0x24,0x7E,0x20,0x20,0x00,0x00, // 4 +0x2E,0x4A,0x4A,0x4A,0x4A,0x32,0x00,0x00, // 5 +0x3C,0x4A,0x4A,0x4A,0x4A,0x30,0x00,0x00, // 6 +0x02,0x02,0x62,0x12,0x0A,0x06,0x00,0x00, // 7 +0x34,0x4A,0x4A,0x4A,0x4A,0x34,0x00,0x00, // 8 +0x0C,0x52,0x52,0x52,0x52,0x3C,0x00,0x00, // 9 +0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00, // : +0x00,0x00,0x80,0x64,0x00,0x00,0x00,0x00, // ; +0x00,0x00,0x10,0x28,0x44,0x00,0x00,0x00, // < +0x00,0x28,0x28,0x28,0x28,0x28,0x00,0x00, // = +0x00,0x00,0x44,0x28,0x10,0x00,0x00,0x00, // > +0x00,0x04,0x02,0x02,0x52,0x0A,0x04,0x00, // ? + +0x00,0x3C,0x42,0x5A,0x56,0x5A,0x1C,0x00, // @ +0x7C,0x12,0x12,0x12,0x12,0x7C,0x00,0x00, // A +0x7E,0x4A,0x4A,0x4A,0x4A,0x34,0x00,0x00, // B +0x3C,0x42,0x42,0x42,0x42,0x24,0x00,0x00, // C +0x7E,0x42,0x42,0x42,0x24,0x18,0x00,0x00, // D +0x7E,0x4A,0x4A,0x4A,0x4A,0x42,0x00,0x00, // E +0x7E,0x0A,0x0A,0x0A,0x0A,0x02,0x00,0x00, // F +0x3C,0x42,0x42,0x52,0x52,0x34,0x00,0x00, // G +0x7E,0x08,0x08,0x08,0x08,0x7E,0x00,0x00, // H +0x00,0x42,0x42,0x7E,0x42,0x42,0x00,0x00, // I +0x30,0x40,0x40,0x40,0x40,0x3E,0x00,0x00, // J +0x7E,0x08,0x08,0x14,0x22,0x40,0x00,0x00, // K +0x7E,0x40,0x40,0x40,0x40,0x40,0x00,0x00, // L +0x7E,0x04,0x08,0x08,0x04,0x7E,0x00,0x00, // M +0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // N +0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // O + +0x7E,0x12,0x12,0x12,0x12,0x0C,0x00,0x00, // P +0x3C,0x42,0x52,0x62,0x42,0x3C,0x00,0x00, // Q +0x7E,0x12,0x12,0x12,0x32,0x4C,0x00,0x00, // R +0x24,0x4A,0x4A,0x4A,0x4A,0x30,0x00,0x00, // S +0x02,0x02,0x02,0x7E,0x02,0x02,0x02,0x00, // T +0x3E,0x40,0x40,0x40,0x40,0x3E,0x00,0x00, // U +0x1E,0x20,0x40,0x40,0x20,0x1E,0x00,0x00, // V +0x3E,0x40,0x20,0x20,0x40,0x3E,0x00,0x00, // W +0x42,0x24,0x18,0x18,0x24,0x42,0x00,0x00, // X +0x02,0x04,0x08,0x70,0x08,0x04,0x02,0x00, // Y +0x42,0x62,0x52,0x4A,0x46,0x42,0x00,0x00, // Z +0x00,0x00,0x7E,0x42,0x42,0x00,0x00,0x00, // [ +0x00,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // +0x00,0x00,0x42,0x42,0x7E,0x00,0x00,0x00, // ] +0x00,0x08,0x04,0x7E,0x04,0x08,0x00,0x00, // ^ +0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // _ + +0x3C,0x42,0x99,0xA5,0xA5,0x81,0x42,0x3C, // ` +0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x00, // a +0x00,0x7E,0x48,0x48,0x48,0x30,0x00,0x00, // b +0x00,0x00,0x38,0x44,0x44,0x44,0x00,0x00, // c +0x00,0x30,0x48,0x48,0x48,0x7E,0x00,0x00, // d +0x00,0x38,0x54,0x54,0x54,0x48,0x00,0x00, // e +0x00,0x00,0x00,0x7C,0x0A,0x02,0x00,0x00, // f +0x00,0x18,0xA4,0xA4,0xA4,0xA4,0x7C,0x00, // g +0x00,0x7E,0x08,0x08,0x08,0x70,0x00,0x00, // h +0x00,0x00,0x00,0x48,0x7A,0x40,0x00,0x00, // i +0x00,0x00,0x40,0x80,0x80,0x7A,0x00,0x00, // j +0x00,0x7E,0x18,0x24,0x40,0x00,0x00,0x00, // k +0x00,0x00,0x00,0x3E,0x40,0x40,0x00,0x00, // l +0x00,0x7C,0x04,0x78,0x04,0x78,0x00,0x00, // m +0x00,0x7C,0x04,0x04,0x04,0x78,0x00,0x00, // n +0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00, // o + +0x00,0xFC,0x24,0x24,0x24,0x18,0x00,0x00, // p +0x00,0x18,0x24,0x24,0x24,0xFC,0x80,0x00, // q +0x00,0x00,0x78,0x04,0x04,0x04,0x00,0x00, // r +0x00,0x48,0x54,0x54,0x54,0x20,0x00,0x00, // s +0x00,0x00,0x04,0x3E,0x44,0x40,0x00,0x00, // t +0x00,0x3C,0x40,0x40,0x40,0x3C,0x00,0x00, // u +0x00,0x0C,0x30,0x40,0x30,0x0C,0x00,0x00, // v +0x00,0x3C,0x40,0x38,0x40,0x3C,0x00,0x00, // w +0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00, // x +0x00,0x1C,0xA0,0xA0,0xA0,0x7C,0x00,0x00, // y +0x00,0x44,0x64,0x54,0x4C,0x44,0x00,0x00, // z +0x00,0x08,0x08,0x76,0x42,0x42,0x00,0x00, // { +0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // | +0x00,0x42,0x42,0x76,0x08,0x08,0x00,0x00, // } +0x00,0x00,0x04,0x02,0x04,0x02,0x00,0x00, // ~ +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcd5x7.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcd5x7.h new file mode 100644 index 0000000..bab4413 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcd5x7.h @@ -0,0 +1,117 @@ +//http://www.hwsw.no/snippets/5x7_LCD_font.php + +#ifndef lcd5x7_h +#define lcd5x7_h +GLCDFONTDECL(lcd5x7) = { + 0x0, 0x0, // size of zero indicates fixed width font, + 0x05, // width + 0x07, // height + 0x20, // first char + 0x60, // char count + + 0x00,0x00,0x00,0x00,0x00, // SPACE + + 0x00,0x00,0x4F,0x00,0x00, // ! + 0x00,0x07,0x00,0x07,0x00, // " + 0x14,0x7F,0x14,0x7F,0x14, // # + 0x24,0x2A,0x7F,0x2A,0x12, // $ + 0x23,0x13,0x08,0x64,0x62, // % + 0x36,0x49,0x55,0x22,0x50, // & + 0x00,0x05,0x03,0x00,0x00, // ' + 0x00,0x1C,0x22,0x41,0x00, // ( + 0x00,0x41,0x22,0x1C,0x00, // ) + 0x14,0x08,0x3E,0x08,0x14, // * + 0x08,0x08,0x3E,0x08,0x08, // + + 0x00,0x50,0x30,0x00,0x00, // , + 0x08,0x08,0x08,0x08,0x08, // - + 0x00,0x60,0x60,0x00,0x00, // . + 0x20,0x10,0x08,0x04,0x02, // / + + 0x3E,0x51,0x49,0x45,0x3E, // 0 + 0x00,0x42,0x7F,0x40,0x00, // 1 + 0x42,0x61,0x51,0x49,0x46, // 2 + 0x21,0x41,0x45,0x4B,0x31, // 3 + 0x18,0x14,0x12,0x7F,0x10, // 4 + 0x27,0x45,0x45,0x45,0x39, // 5 + 0x3C,0x4A,0x49,0x49,0x30, // 6 + 0x01,0x71,0x09,0x05,0x03, // 7 + 0x36,0x49,0x49,0x49,0x36, // 8 + 0x06,0x49,0x49,0x29,0x1E, // 9 + + 0x36,0x36,0x00,0x00,0x00, // : + 0x56,0x36,0x00,0x00,0x00, // ; + 0x08,0x14,0x22,0x41,0x00, // < + 0x14,0x14,0x14,0x14,0x14, // = + 0x00,0x41,0x22,0x14,0x08, // > + 0x02,0x01,0x51,0x09,0x06, // ? + 0x30,0x49,0x79,0x41,0x3E, // @ + + 0x7E,0x11,0x11,0x11,0x7E, // A + 0x7F,0x49,0x49,0x49,0x36, // B + 0x3E,0x41,0x41,0x41,0x22, // C + 0x7F,0x41,0x41,0x22,0x1C, // D + 0x7F,0x49,0x49,0x49,0x41, // E + 0x7F,0x09,0x09,0x09,0x01, // F + 0x3E,0x41,0x49,0x49,0x7A, // G + 0x7F,0x08,0x08,0x08,0x7F, // H + 0x00,0x41,0x7F,0x41,0x00, // I + 0x20,0x40,0x41,0x3F,0x01, // J + 0x7F,0x08,0x14,0x22,0x41, // K + 0x7F,0x40,0x40,0x40,0x40, // L + 0x7F,0x02,0x0C,0x02,0x7F, // M + 0x7F,0x04,0x08,0x10,0x7F, // N + 0x3E,0x41,0x41,0x41,0x3E, // O + 0x7F,0x09,0x09,0x09,0x06, // P + 0x3E,0x41,0x51,0x21,0x5E, // Q + 0x7F,0x09,0x19,0x29,0x46, // R + 0x46,0x49,0x49,0x49,0x31, // S + 0x01,0x01,0x7F,0x01,0x01, // T + 0x3F,0x40,0x40,0x40,0x3F, // U + 0x1F,0x20,0x40,0x20,0x1F, // V + 0x3F,0x40,0x30,0x40,0x3F, // W + 0x63,0x14,0x08,0x14,0x63, // X + 0x07,0x08,0x70,0x08,0x07, // Y + 0x61,0x51,0x49,0x45,0x43, // Z + + 0x00,0x7F,0x41,0x41,0x00, // [ + 0x02,0x04,0x08,0x10,0x20, // backslash + 0x00,0x41,0x41,0x7F,0x00, // ] + 0x04,0x02,0x01,0x02,0x04, // ^ + 0x40,0x40,0x40,0x40,0x40, // _ + 0x00,0x01,0x02,0x04,0x00, // ` + + 0x20,0x54,0x54,0x54,0x78, // a + 0x7F,0x50,0x48,0x48,0x30, // b + 0x38,0x44,0x44,0x44,0x20, // c + 0x38,0x44,0x44,0x48,0x7F, // d + 0x38,0x54,0x54,0x54,0x18, // e + 0x08,0x7E,0x09,0x01,0x02, // f + 0x0C,0x52,0x52,0x52,0x3E, // g + 0x7F,0x08,0x04,0x04,0x78, // h + 0x00,0x44,0x7D,0x40,0x00, // i + 0x20,0x40,0x44,0x3D,0x00, // j + 0x7F,0x10,0x28,0x44,0x00, // k + 0x00,0x41,0x7F,0x40,0x00, // l + 0x78,0x04,0x58,0x44,0x78, // m + 0x7C,0x08,0x04,0x04,0x78, // n + 0x38,0x44,0x44,0x44,0x38, // o + 0x7C,0x14,0x14,0x14,0x08, // p + 0x08,0x14,0x14,0x18,0x7C, // q + 0x7C,0x08,0x04,0x04,0x08, // r + 0x48,0x54,0x54,0x54,0x20, // s + 0x04,0x3F,0x44,0x40,0x20, // t + 0x3C,0x40,0x40,0x20,0x7C, // u + 0x1C,0x20,0x40,0x20,0x1C, // v + 0x3C,0x40,0x30,0x40,0x3C, // w + 0x44,0x28,0x10,0x28,0x44, // x + 0x0C,0x50,0x50,0x50,0x3C, // y + 0x44,0x64,0x54,0x4C,0x44, // z + + 0x00,0x08,0x36,0x41,0x00, // { + 0x00,0x00,0x7F,0x00,0x00, // | + 0x00,0x41,0x36,0x08,0x00, // } + 0x0C,0x02,0x0C,0x10,0x0C, // ~ + + 0x00,0x00,0x00,0x00,0x00 + }; +#endif // lcd5x7_h \ No newline at end of file diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums12x16.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums12x16.h new file mode 100644 index 0000000..2f1dc36 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums12x16.h @@ -0,0 +1,69 @@ +/* + * Fixed width font for numbers that looks like LCD panel digits + * This font including pad pixels, will render 12x16 pixels on the display + * + * This font is very useful when using overstrike as all characters & numbers + * are all the same width. + * + * This font is not a complete character set. The font only contains + * the characters: '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '9', ':' + * + * This font is nice for certain applications like clocks, signed values or decimal point values. + * + */ + +GLCDFONTDECL(lcdnums12x16) = +{ + 0x0, 0x0, // size of zero indicates fixed width font + 11, // width (will be 12 with pad pixel on right) + 15, // height (will be 16 with pad pixel on bottom) + '+', // first char + 16, // char count +0x00, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x03, 0x0f, 0x0f, 0x03, 0x03, 0x01, 0x00, // + + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, // , + +0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, // - + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, // . + +0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, +0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, // / + +0x00, 0xfc, 0x7a, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, +0x00, 0x7e, 0xbc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbc, 0x7e, // 0 + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, // 1 + +0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, +0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x81, 0x00, // 2 + +0x00, 0x00, 0x02, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, +0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 3 + +0x00, 0xfc, 0x78, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0xfc, +0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3d, 0x7e, // 4 + +0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, +0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 5 + +0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x02, 0x00, +0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 6 + +0x00, 0x00, 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7a, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7e, // 7 + +0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, +0x00, 0x7e, 0xbd, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 8 + +0x00, 0xfc, 0x7a, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x7a, 0xfc, +0x00, 0x00, 0x81, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xbd, 0x7e, // 9 + +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 // : +}; diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums14x24.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums14x24.h new file mode 100644 index 0000000..c6452b8 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/lcdnums14x24.h @@ -0,0 +1,87 @@ +/* + * Fixed width font for numbers that looks like LCD panel digits + * This font including pad pixels, will render 14x24 pixels on the display + * + * This font is very useful when using overstrike as all characters & numbers + * are all the same width. + * + * This font is not a complete character set. The font only contains + * the characters: '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '9', ':' + * + * This font is nice for certain applications like clocks, signed values or decimal point values. + * + */ + + +GLCDFONTDECL(lcdnums14x24) = +{ + 0x0, 0x0, // size of zero indicates fixed width font + 13, // width (will be 14 with pad pixel on right) + 23, // height (will be 24 with pad pixel on bottom) + '+', // first char + 16, // char count + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0xff, 0xff, 0x38, 0x38, 0x38, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // + + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x78, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, // , + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // - + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe0, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, // . + +0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, +0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x10, 0x00, +0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, // / + +0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0xef, 0xc7, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, +0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 0 + +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 1 + +0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0xe0, 0xd0, 0xb8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x17, 0x0f, +0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, // 2 + +0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0x00, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, +0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 3 + +0x00, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, +0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 4 + +0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, +0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xb8, 0xd0, 0xe0, +0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 5 + +0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x02, 0x00, +0x00, 0xef, 0xd7, 0xbb, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xb8, 0xd0, 0xe0, +0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 6 + +0x00, 0x00, 0x02, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xef, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, // 7 + +0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0xef, 0xd7, 0xbb, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, +0x00, 0x7f, 0xbf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 8 + +0x00, 0xfc, 0xfa, 0xf6, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xf6, 0xfa, 0xfc, +0x00, 0x0f, 0x17, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xbb, 0xd7, 0xef, +0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xbf, 0x7f, // 9 + +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // : +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/newbasic3x5.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/newbasic3x5.h new file mode 100644 index 0000000..7f72d22 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/newbasic3x5.h @@ -0,0 +1,162 @@ +/* + * + * newbasic3x5 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : newbasic3x5.h + * Date : 23.04.2011 + * Font size in bytes : 1830 + * Font width : 10 + * Font height : 6 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef NEWBASIC3X5_H +#define NEWBASIC3X5_H + +#define NEWBASIC3X5_WIDTH 3 +#define NEWBASIC3X5_HEIGHT 6 + +GLCDFONTDECL(newbasic3x5) = { + 0x0, 0x0, // size + 0x03, // width + 0x06, // height + 0x20, // first char + 0x60, // char count + + /* char widths + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + */ + // font data + 0x00, 0x00, 0x00, // 32 + 0x00, 0x5C, 0x00, // 33 + 0x0C, 0x00, 0x0C, // 34 + 0x7C, 0x28, 0x7C, // 35 + 0x28, 0x7C, 0x28, // 36 + 0x24, 0x10, 0x48, // 37 + 0x30, 0x5C, 0x6C, // 38 + 0x00, 0x0C, 0x00, // 39 + 0x38, 0x44, 0x00, // 40 + 0x00, 0x44, 0x38, // 41 + 0x08, 0x14, 0x08, // 42 + 0x10, 0x38, 0x10, // 43 + 0x00, 0x60, 0x00, // 44 + 0x10, 0x10, 0x10, // 45 + 0x00, 0x40, 0x00, // 46 + 0x60, 0x10, 0x0C, // 47 + 0x7C, 0x44, 0x7C, // 48 + 0x48, 0x7C, 0x40, // 49 + 0x74, 0x54, 0x5C, // 50 + 0x44, 0x54, 0x7C, // 51 + 0x1C, 0x10, 0x7C, // 52 + 0x5C, 0x54, 0x74, // 53 + 0x7C, 0x54, 0x74, // 54 + 0x64, 0x14, 0x1C, // 55 + 0x7C, 0x54, 0x7C, // 56 + 0x5C, 0x54, 0x7C, // 57 + 0x00, 0x28, 0x00, // 58 + 0x00, 0x68, 0x00, // 59 + 0x10, 0x28, 0x44, // 60 + 0x28, 0x28, 0x28, // 61 + 0x44, 0x28, 0x10, // 62 + 0x04, 0x54, 0x1C, // 63 + 0x38, 0x5C, 0x58, // 64 + 0x78, 0x14, 0x78, // 65 + 0x7C, 0x54, 0x28, // 66 + 0x38, 0x44, 0x28, // 67 + 0x7C, 0x44, 0x38, // 68 + 0x7C, 0x54, 0x44, // 69 + 0x7C, 0x14, 0x04, // 70 + 0x38, 0x44, 0x74, // 71 + 0x7C, 0x10, 0x7C, // 72 + 0x44, 0x7C, 0x44, // 73 + 0x20, 0x40, 0x3C, // 74 + 0x7C, 0x10, 0x6C, // 75 + 0x7C, 0x40, 0x40, // 76 + 0x7C, 0x08, 0x7C, // 77 + 0x7C, 0x18, 0x7C, // 78 + 0x38, 0x44, 0x38, // 79 + 0x7C, 0x14, 0x08, // 80 + 0x38, 0x44, 0x78, // 81 + 0x7C, 0x14, 0x68, // 82 + 0x48, 0x54, 0x24, // 83 + 0x04, 0x7C, 0x04, // 84 + 0x7C, 0x40, 0x7C, // 85 + 0x3C, 0x40, 0x3C, // 86 + 0x7C, 0x30, 0x7C, // 87 + 0x6C, 0x10, 0x6C, // 88 + 0x0C, 0x70, 0x0C, // 89 + 0x64, 0x54, 0x4C, // 90 + 0x7C, 0x44, 0x00, // 91 + 0x0C, 0x10, 0x60, // 92 + 0x44, 0x7C, 0x00, // 93 + 0x08, 0x04, 0x08, // 94 + 0x80, 0x80, 0x80, // 95 + 0x04, 0x00, 0x00, // 96 + 0x70, 0x70, 0x70, // 97 + 0x7C, 0x50, 0x70, // 98 + 0x70, 0x50, 0x50, // 99 + 0x70, 0x50, 0x7C, // 100 + 0x30, 0x70, 0x10, // 101 + 0x7C, 0x14, 0x00, // 102 + 0x90, 0xF0, 0x40, // 103 + 0x7C, 0x10, 0x70, // 104 + 0x74, 0x00, 0x00, // 105 + 0xE0, 0x00, 0x00, // 106 + 0x7C, 0x30, 0x48, // 107 + 0x7C, 0x00, 0x00, // 108 + 0x70, 0x70, 0x70, // 109 + 0x70, 0x10, 0x70, // 110 + 0x70, 0x50, 0x70, // 111 + 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, // 113 + 0x30, 0x00, 0x00, // 114 + 0x50, 0x70, 0x00, // 115 + 0x30, 0x50, 0x40, // 116 + 0x70, 0x40, 0x70, // 117 + 0x30, 0x70, 0x00, // 118 + 0x30, 0x10, 0x30, // 119 + 0x50, 0x70, 0x00, // 120 + 0x00, 0x00, 0x00, // 121 + 0x40, 0x70, 0x00, // 122 + 0x10, 0x6C, 0x44, // 123 + 0x00, 0x7C, 0x00, // 124 + 0x44, 0x6C, 0x10, // 125 + 0x10, 0x08, 0x10, // 126 + 0x78, 0x48, 0x48 // 127 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/fonts/utf8font10x16.h b/Arduino_Libs/SSD1306Ascii-master/src/fonts/utf8font10x16.h new file mode 100644 index 0000000..d4bd8c9 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/fonts/utf8font10x16.h @@ -0,0 +1,308 @@ +/* + * utf8font10x16 - utf8 font up to U+00FB + * See here for full font information: + * http://www.fileformat.info/info/charset/UTF-8/list.htm + * + * Font is called 10x16 even though the actual font is only 15 high + * since font will use 16 vertical pixels (one pixel of pad between lines) + * + * Oringally created with FontCreator + * written by F. Maximilian Thiele + * Hand edited by Bill Perry + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : utf8font10x15.h + * Date : 31.08.2014 + * Font size in bytes : 14641 + * Font width : 10 + * Font height : 15 + * Font first char : 32 + * Font last char : 252 + * Font used chars : 220 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#ifndef UTF8FONT10x15_H +#define UTF8FONT10x15_H + +#define UTF8FONT10x15_WIDTH 10 +#define UTF8FONT10x15_HEIGHT 15 + +GLCDFONTDECL(utf8font10x16) = { + 0x39, 0x31, // size + 0x0A, // width + 0x0f, // height (does not include pad pixel between lines) + 0x20, // first char + 0xDC, // char count + + // char widths + 0x02, 0x02, 0x05, 0x05, 0x05, 0x08, 0x07, 0x02, + 0x03, 0x02, 0x03, 0x06, 0x02, 0x03, 0x02, 0x03, + 0x05, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x02, 0x02, 0x06, 0x06, 0x06, 0x05, + 0x0A, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05, 0x06, + 0x06, 0x02, 0x04, 0x06, 0x05, 0x07, 0x06, 0x07, + 0x06, 0x08, 0x07, 0x06, 0x06, 0x06, 0x06, 0x08, + 0x07, 0x06, 0x05, 0x03, 0x03, 0x02, 0x05, 0x05, + 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x03, 0x05, + 0x05, 0x02, 0x02, 0x05, 0x02, 0x08, 0x05, 0x05, + 0x05, 0x05, 0x04, 0x04, 0x03, 0x05, 0x05, 0x07, + 0x05, 0x05, 0x04, 0x03, 0x02, 0x04, 0x06, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x00, 0x02, 0x05, 0x06, 0x05, 0x06, 0x02, 0x04, + 0x03, 0x07, 0x03, 0x05, 0x05, 0x03, 0x07, 0x06, + 0x04, 0x06, 0x03, 0x03, 0x02, 0x05, 0x05, 0x01, + 0x03, 0x02, 0x03, 0x05, 0x08, 0x08, 0x08, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0A, 0x06, + 0x05, 0x05, 0x06, 0x05, 0x02, 0x02, 0x03, 0x02, + 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, + 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x08, 0x04, + 0x04, 0x04, 0x05, 0x04, 0x02, 0x02, 0x03, 0x02, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, + 0x05, 0x05, 0x05, 0x05, + + // font data + 0x00, 0x00, 0x00, 0x00, // 0x20 + 0xF8, 0xF8, 0x16, 0x16, // 33 + 0x38, 0x38, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x20, 0xE0, 0x38, 0xE0, 0x38, 0x1C, 0x06, 0x1C, 0x06, 0x04, // 35 + 0x70, 0xC8, 0xFC, 0x88, 0x10, 0x0C, 0x18, 0x3E, 0x12, 0x0E, // 36 + 0x78, 0x48, 0x78, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x1E, 0x12, 0x1E, // 37 + 0x00, 0xB0, 0xF8, 0xC8, 0x78, 0x30, 0x00, 0x0E, 0x1E, 0x12, 0x12, 0x1E, 0x1C, 0x0A, // 38 + 0x38, 0x38, 0x00, 0x00, // 39 + 0xC0, 0xF0, 0x18, 0x0E, 0x3E, 0x60, // 40 + 0xF0, 0xC0, 0x3E, 0x0E, // 41 + 0x50, 0x38, 0x50, 0x00, 0x00, 0x00, // 42 + 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0x02, 0x02, 0x0E, 0x0E, 0x02, 0x02, // 43 + 0x00, 0x00, 0x50, 0x30, // 44 + 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, // 45 + 0x00, 0x00, 0x10, 0x10, // 46 + 0x80, 0xF8, 0xF8, 0x1E, 0x1E, 0x00, // 47 + 0xF0, 0xF8, 0x08, 0xF8, 0xF0, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 48 + 0x60, 0xF0, 0xF8, 0x00, 0x1E, 0x1E, // 49 + 0x10, 0x18, 0x88, 0xF8, 0xF0, 0x18, 0x1E, 0x16, 0x12, 0x10, // 50 + 0x10, 0x18, 0x88, 0xF8, 0x70, 0x08, 0x18, 0x10, 0x1E, 0x0E, // 51 + 0x80, 0x60, 0xF8, 0xF8, 0x00, 0x06, 0x04, 0x1E, 0x1E, 0x04, // 52 + 0xC0, 0x78, 0x48, 0xC8, 0x88, 0x08, 0x18, 0x10, 0x1E, 0x0E, // 53 + 0xE0, 0xF8, 0x48, 0xD8, 0x90, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 54 + 0x08, 0x08, 0xE8, 0xF8, 0x18, 0x00, 0x1E, 0x1E, 0x00, 0x00, // 55 + 0x70, 0x78, 0x88, 0x78, 0x70, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 56 + 0xF0, 0xF8, 0x08, 0xF8, 0xF0, 0x08, 0x1A, 0x12, 0x1E, 0x06, // 57 + 0x40, 0x40, 0x10, 0x10, // 58 + 0x40, 0x40, 0x50, 0x30, // 59 + 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x60, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, // 60 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 61 + 0x60, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, // 62 + 0x10, 0x18, 0x88, 0xF8, 0xF0, 0x00, 0x00, 0x16, 0x16, 0x00, // 63 + 0xC0, 0x20, 0x10, 0x88, 0x48, 0x48, 0x48, 0xD8, 0x30, 0xE0, 0x0E, 0x30, 0x2E, 0x50, 0x50, 0x50, 0x5E, 0x50, 0x28, 0x16, // 64 + 0x00, 0xE0, 0x38, 0x38, 0xE0, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 65 + 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, 0x1E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 66 + 0xF0, 0xF8, 0x08, 0x08, 0x18, 0x10, 0x0E, 0x1E, 0x10, 0x10, 0x1C, 0x0C, // 67 + 0xF8, 0xF8, 0x08, 0x08, 0xF8, 0xF0, 0x1E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 68 + 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x1E, 0x1E, 0x10, 0x10, 0x10, // 69 + 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x1E, 0x1E, 0x00, 0x00, 0x00, // 70 + 0xF0, 0xF8, 0x08, 0x88, 0x98, 0x90, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 71 + 0xF8, 0xF8, 0x80, 0x80, 0xF8, 0xF8, 0x1E, 0x1E, 0x00, 0x00, 0x1E, 0x1E, // 72 + 0xF8, 0xF8, 0x1E, 0x1E, // 73 + 0x00, 0x00, 0xF8, 0xF8, 0x0C, 0x10, 0x1E, 0x0E, // 74 + 0xF8, 0xF8, 0xC0, 0xF0, 0xB8, 0x08, 0x1E, 0x1E, 0x00, 0x02, 0x1E, 0x1C, // 75 + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, // 76 + 0xF8, 0xF8, 0xC0, 0x00, 0xC0, 0xF8, 0xF8, 0x1E, 0x1E, 0x02, 0x1E, 0x00, 0x1E, 0x1E, // 77 + 0xF8, 0xF8, 0xF0, 0x80, 0xF8, 0xF8, 0x1E, 0x1E, 0x00, 0x0E, 0x1E, 0x1E, // 78 + 0xE0, 0xF0, 0x18, 0x08, 0x18, 0xF0, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 79 + 0xF8, 0xF8, 0x08, 0x08, 0xF8, 0xF0, 0x1E, 0x1E, 0x02, 0x02, 0x02, 0x00, // 80 + 0xE0, 0xF0, 0x18, 0x08, 0x18, 0xF0, 0xE0, 0x00, 0x06, 0x0E, 0x18, 0x14, 0x18, 0x1E, 0x3E, 0x30, // 81 + 0xF8, 0xF8, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x1E, 0x1E, 0x00, 0x02, 0x0E, 0x1C, 0x10, // 82 + 0x70, 0xF8, 0xC8, 0x88, 0xB8, 0x30, 0x0C, 0x1C, 0x10, 0x12, 0x1E, 0x0E, // 83 + 0x08, 0x08, 0xF8, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, // 84 + 0xF8, 0xF8, 0x00, 0x00, 0xF8, 0xF8, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 85 + 0x38, 0xF8, 0x80, 0x80, 0xF8, 0x38, 0x00, 0x06, 0x1E, 0x1E, 0x06, 0x00, // 86 + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x06, 0x1E, 0x1C, 0x02, 0x06, 0x18, 0x1E, 0x06, // 87 + 0x08, 0x38, 0xF0, 0xC0, 0xF0, 0x38, 0x08, 0x10, 0x1C, 0x0E, 0x06, 0x0E, 0x1C, 0x10, // 88 + 0x18, 0x78, 0xE0, 0xE0, 0x78, 0x18, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, // 89 + 0x08, 0x88, 0xE8, 0x78, 0x18, 0x18, 0x1E, 0x16, 0x10, 0x10, // 90 + 0xF8, 0xF8, 0x08, 0x7E, 0x7E, 0x40, // 91 + 0xF8, 0xF8, 0x80, 0x00, 0x1E, 0x1E, // 92 + 0xF8, 0xF8, 0x7E, 0x7E, // 93 + 0xE0, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // 95 + 0x08, 0x18, 0x00, 0x00, // 96 + 0x40, 0x40, 0xC0, 0x80, 0x1C, 0x12, 0x1E, 0x1E, // 97 + 0xF8, 0xF8, 0x40, 0xC0, 0x80, 0x1E, 0x1E, 0x10, 0x1E, 0x0E, // 98 + 0x80, 0xC0, 0x40, 0x80, 0x0E, 0x1E, 0x10, 0x08, // 99 + 0x80, 0xC0, 0x40, 0xF8, 0xF8, 0x0E, 0x1E, 0x10, 0x1E, 0x1E, // 100 + 0x80, 0xC0, 0x40, 0x80, 0x0E, 0x1E, 0x12, 0x0A, // 101 + 0xF0, 0xF8, 0x48, 0x1E, 0x1E, 0x00, // 102 + 0x80, 0xC0, 0x40, 0xC0, 0xC0, 0x2E, 0x7E, 0x50, 0x7E, 0x3E, // 103 + 0xF8, 0xF8, 0x40, 0xC0, 0x80, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, // 104 + 0xD8, 0xD8, 0x1E, 0x1E, // 105 + 0xD8, 0xD8, 0x7E, 0x3E, // 106 + 0xF8, 0xF8, 0x80, 0xC0, 0x00, 0x1E, 0x1E, 0x06, 0x1E, 0x18, // 107 + 0xF8, 0xF8, 0x1E, 0x1E, // 108 + 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x40, 0xC0, 0x80, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, // 109 + 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, // 110 + 0x80, 0xC0, 0x40, 0xC0, 0x80, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 111 + 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x7E, 0x7E, 0x10, 0x1E, 0x0E, // 112 + 0x80, 0xC0, 0x40, 0xC0, 0xC0, 0x0E, 0x1E, 0x10, 0x7E, 0x7E, // 113 + 0xC0, 0xC0, 0x40, 0x40, 0x1E, 0x1E, 0x00, 0x00, // 114 + 0x80, 0xC0, 0x40, 0x80, 0x0A, 0x12, 0x1E, 0x0E, // 115 + 0xE0, 0xF0, 0x40, 0x0E, 0x1E, 0x10, // 116 + 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x0E, 0x1E, 0x10, 0x1E, 0x1E, // 117 + 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x1E, 0x18, 0x1E, 0x00, // 118 + 0xC0, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0xC0, 0x02, 0x1E, 0x1C, 0x02, 0x1C, 0x1E, 0x02, // 119 + 0x40, 0xC0, 0x00, 0xC0, 0x40, 0x10, 0x1A, 0x06, 0x18, 0x10, // 120 + 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x40, 0x4E, 0x3C, 0x0E, 0x00, // 121 + 0x40, 0x40, 0xC0, 0xC0, 0x18, 0x1E, 0x16, 0x10, // 122 + 0xF0, 0xF8, 0x08, 0x3E, 0x7C, 0x40, // 123 + 0xF8, 0xF8, 0x7E, 0x7E, // 124 + 0x08, 0xF8, 0xF0, 0x00, 0x40, 0x7C, 0x3E, 0x02, // 125 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, // 126 + 0xF0, 0xF0, 0x1E, 0x1E, // 127 + 0xF0, 0xF0, 0x1E, 0x1E, // 128 + 0xF0, 0xF0, 0x1E, 0x1E, // 129 + 0xF0, 0xF0, 0x1E, 0x1E, // 130 + 0xF0, 0xF0, 0x1E, 0x1E, // 131 + 0xF0, 0xF0, 0x1E, 0x1E, // 132 + 0xF0, 0xF0, 0x1E, 0x1E, // 133 + 0xF0, 0xF0, 0x1E, 0x1E, // 134 + 0xF0, 0xF0, 0x1E, 0x1E, // 135 + 0xF0, 0xF0, 0x1E, 0x1E, // 136 + 0xF0, 0xF0, 0x1E, 0x1E, // 137 + 0xF0, 0xF0, 0x1E, 0x1E, // 138 + 0xF0, 0xF0, 0x1E, 0x1E, // 139 + 0xF0, 0xF0, 0x1E, 0x1E, // 140 + 0xF0, 0xF0, 0x1E, 0x1E, // 141 + 0xF0, 0xF0, 0x1E, 0x1E, // 142 + 0xF0, 0xF0, 0x1E, 0x1E, // 143 + 0xF0, 0xF0, 0x1E, 0x1E, // 144 + 0xF0, 0xF0, 0x1E, 0x1E, // 145 + 0xF0, 0xF0, 0x1E, 0x1E, // 146 + 0xF0, 0xF0, 0x1E, 0x1E, // 147 + 0xF0, 0xF0, 0x1E, 0x1E, // 148 + 0xF0, 0xF0, 0x1E, 0x1E, // 149 + 0xF0, 0xF0, 0x1E, 0x1E, // 150 + 0xF0, 0xF0, 0x1E, 0x1E, // 151 + 0xF0, 0xF0, 0x1E, 0x1E, // 152 + 0xF0, 0xF0, 0x1E, 0x1E, // 153 + 0xF0, 0xF0, 0x1E, 0x1E, // 154 + 0xF0, 0xF0, 0x1E, 0x1E, // 155 + 0xF0, 0xF0, 0x1E, 0x1E, // 156 + 0xF0, 0xF0, 0x1E, 0x1E, // 157 + 0xF0, 0xF0, 0x1E, 0x1E, // 158 + 0xF0, 0xF0, 0x1E, 0x1E, // 159 + 0x40, 0x40, 0x7E, 0x7E, // 161 + 0x80, 0xC0, 0xC0, 0xF8, 0x80, 0x0E, 0x7E, 0x1E, 0x18, 0x08, // 162 + 0x80, 0xF0, 0xF8, 0x88, 0x18, 0x10, 0x18, 0x1E, 0x16, 0x10, 0x10, 0x10, // 163 + 0x20, 0xF0, 0x20, 0x20, 0xF0, 0x04, 0x0E, 0x04, 0x04, 0x0E, // 164 + 0x88, 0xF8, 0xE0, 0xE0, 0xF8, 0x88, 0x04, 0x04, 0x1E, 0x1E, 0x04, 0x04, // 165 + 0xF8, 0xF8, 0x7C, 0x7C, // 166 + 0xB0, 0x48, 0xC8, 0x90, 0x26, 0x4C, 0x48, 0x36, // 167 + 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, // 168 + 0xE0, 0x10, 0xC8, 0x28, 0x48, 0x10, 0xE0, 0x06, 0x08, 0x12, 0x14, 0x12, 0x08, 0x06, // 169 + 0x68, 0x68, 0x78, 0x00, 0x00, 0x00, // 170 + 0xC0, 0x40, 0x00, 0xC0, 0x40, 0x0E, 0x18, 0x02, 0x0E, 0x18, // 171 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x0E, // 172 + 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, // 173 + 0xE0, 0x10, 0xE8, 0xA8, 0x68, 0x10, 0xE0, 0x06, 0x08, 0x16, 0x10, 0x16, 0x08, 0x06, // 174 + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 175 + 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, // 176 + 0x60, 0x60, 0xF8, 0xF8, 0x60, 0x60, 0x18, 0x18, 0x1A, 0x1A, 0x18, 0x18, // 177 + 0x48, 0x68, 0x58, 0x00, 0x00, 0x00, // 178 + 0x48, 0x58, 0x78, 0x00, 0x00, 0x00, // 179 + 0x18, 0x08, 0x00, 0x00, // 180 + 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x7E, 0x7E, 0x10, 0x1E, 0x1E, // 181 + 0xF0, 0xF8, 0x08, 0xF8, 0x08, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 182 + 0x00, 0x02, // 183 + 0x00, 0x00, 0x00, 0xA0, 0xA0, 0xE0, // 184 + 0x10, 0x78, 0x00, 0x00, // 185 + 0x78, 0x48, 0x78, 0x00, 0x00, 0x00, // 186 + 0xC0, 0x80, 0x00, 0xC0, 0x80, 0x10, 0x1E, 0x04, 0x10, 0x1E, // 187 + 0x10, 0x78, 0x00, 0x80, 0x40, 0x30, 0x08, 0x00, 0x00, 0x10, 0x0C, 0x02, 0x00, 0x0C, 0x1E, 0x08, // 188 + 0x10, 0x78, 0x00, 0x80, 0x40, 0x30, 0x08, 0x00, 0x00, 0x10, 0x0C, 0x02, 0x00, 0x12, 0x1A, 0x16, // 189 + 0x48, 0x58, 0x78, 0x80, 0x40, 0x30, 0x08, 0x00, 0x00, 0x10, 0x0C, 0x02, 0x00, 0x0C, 0x1E, 0x08, // 190 + 0x00, 0x40, 0x40, 0x00, 0x00, 0x38, 0x7E, 0x46, 0x60, 0x20, // 191 + 0x00, 0xE0, 0x39, 0x3B, 0xE0, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 192 + 0x00, 0xE0, 0x3B, 0x39, 0xE0, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 193 + 0x00, 0xE2, 0x3B, 0x39, 0xE3, 0x02, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 194 + 0x00, 0xE3, 0x39, 0x3A, 0xE3, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 195 + 0x00, 0xE2, 0x38, 0x3A, 0xE0, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 196 + 0x00, 0xE0, 0x3B, 0x3B, 0xE0, 0x00, 0x1C, 0x1E, 0x02, 0x02, 0x1E, 0x1C, // 197 + 0x00, 0xE0, 0xF8, 0x98, 0xF8, 0xF8, 0x48, 0x48, 0x48, 0x48, 0x1E, 0x0E, 0x00, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x10, // 198 + 0xF0, 0xF8, 0x08, 0x08, 0x18, 0x10, 0x0E, 0xBE, 0xB0, 0xF0, 0x1C, 0x0C, // 199 + 0xF8, 0xF9, 0x8B, 0x88, 0x88, 0x1E, 0x1E, 0x10, 0x10, 0x10, // 200 + 0xF8, 0xF8, 0x8B, 0x89, 0x88, 0x1E, 0x1E, 0x10, 0x10, 0x10, // 201 + 0xF8, 0xFA, 0x8B, 0x89, 0x8B, 0x02, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x00, // 202 + 0xF8, 0xFA, 0x88, 0x8A, 0x88, 0x1E, 0x1E, 0x10, 0x10, 0x10, // 203 + 0xF9, 0xFB, 0x1E, 0x1E, // 204 + 0xFB, 0xF9, 0x1E, 0x1E, // 205 + 0xFB, 0xF9, 0x03, 0x1E, 0x1E, 0x00, // 206 + 0xF8, 0xFA, 0x1E, 0x1E, // 207 + 0xF8, 0xF8, 0x88, 0x08, 0xF8, 0xF0, 0x1E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 208 + 0xF8, 0xFB, 0xF1, 0x82, 0xFB, 0xF8, 0x1E, 0x1E, 0x00, 0x0E, 0x1E, 0x1E, // 209 + 0xE0, 0xF0, 0x18, 0x09, 0x1B, 0xF0, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 210 + 0xE0, 0xF0, 0x1B, 0x09, 0x18, 0xF0, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 211 + 0xE0, 0xF2, 0x1B, 0x09, 0x1B, 0xF2, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 212 + 0xE0, 0xF3, 0x19, 0x0A, 0x1B, 0xF0, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 213 + 0xE0, 0xF0, 0x1A, 0x08, 0x1A, 0xF0, 0xE0, 0x06, 0x0E, 0x18, 0x10, 0x18, 0x0E, 0x06, // 214 + 0x40, 0xE0, 0x80, 0xE0, 0x40, 0x04, 0x0E, 0x02, 0x0E, 0x04, // 215 + 0xE0, 0xF0, 0x18, 0xC8, 0x78, 0xF0, 0xE8, 0x16, 0x0E, 0x1E, 0x12, 0x18, 0x0E, 0x06, // 216 + 0xF8, 0xF8, 0x01, 0x03, 0xF8, 0xF8, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 217 + 0xF8, 0xF8, 0x03, 0x01, 0xF8, 0xF8, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 218 + 0xF8, 0xFA, 0x03, 0x01, 0xFB, 0xFA, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 219 + 0xF8, 0xFA, 0x00, 0x02, 0xF8, 0xF8, 0x0E, 0x1E, 0x10, 0x10, 0x1E, 0x0E, // 220 + 0x18, 0x78, 0xE3, 0xE1, 0x78, 0x18, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, // 221 + 0xF8, 0xF8, 0x20, 0x20, 0xE0, 0xC0, 0x1E, 0x1E, 0x04, 0x04, 0x06, 0x02, // 222 + 0xF0, 0xF8, 0xC8, 0xF8, 0x30, 0x00, 0x1E, 0x1E, 0x00, 0x12, 0x1E, 0x0C, // 223 + 0x40, 0x48, 0xD8, 0x80, 0x1C, 0x12, 0x1E, 0x1E, // 224 + 0x40, 0x58, 0xC8, 0x80, 0x1C, 0x12, 0x1E, 0x1E, // 225 + 0x50, 0x58, 0xC8, 0x98, 0x10, 0x1C, 0x12, 0x1E, 0x1E, 0x00, // 226 + 0x58, 0x48, 0xD0, 0x98, 0x1C, 0x12, 0x1E, 0x1E, // 227 + 0x50, 0x40, 0xD0, 0x80, 0x1C, 0x12, 0x1E, 0x1E, // 228 + 0x40, 0x58, 0xD8, 0x80, 0x1C, 0x12, 0x1E, 0x1E, // 229 + 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x1C, 0x1E, 0x12, 0x0E, 0x1E, 0x12, 0x1A, 0x0A, // 230 + 0x80, 0xC0, 0x40, 0x80, 0xAE, 0xBE, 0xF0, 0x08, // 231 + 0x80, 0xC8, 0x58, 0x80, 0x0E, 0x1E, 0x12, 0x0A, // 232 + 0x80, 0xD8, 0x48, 0x80, 0x0E, 0x1E, 0x12, 0x0A, // 233 + 0x90, 0xD8, 0x48, 0x98, 0x10, 0x0E, 0x1E, 0x12, 0x0A, 0x00, // 234 + 0x90, 0xC0, 0x50, 0x80, 0x0E, 0x1E, 0x12, 0x0A, // 235 + 0xC8, 0xD8, 0x1E, 0x1E, // 236 + 0xD8, 0xC8, 0x1E, 0x1E, // 237 + 0xD8, 0xC8, 0x18, 0x1E, 0x1E, 0x00, // 238 + 0xC0, 0xD0, 0x1E, 0x1E, // 239 + 0x80, 0xE0, 0x58, 0xF8, 0xC0, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 240 + 0xD8, 0xC8, 0x50, 0xD8, 0x80, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, // 241 + 0x80, 0xC0, 0x48, 0xD8, 0x80, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 242 + 0x80, 0xD8, 0x48, 0xC0, 0x80, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 243 + 0x90, 0xD8, 0x48, 0xD8, 0x90, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 244 + 0x98, 0xC8, 0x50, 0xD8, 0x80, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 245 + 0x80, 0xD0, 0x40, 0xD0, 0x80, 0x0E, 0x1E, 0x10, 0x1E, 0x0E, // 246 + 0x80, 0x80, 0xA0, 0xA0, 0x80, 0x80, 0x02, 0x02, 0x0A, 0x0A, 0x02, 0x02, // 247 + 0x80, 0xC0, 0x40, 0xC0, 0xC0, 0x1E, 0x1E, 0x16, 0x1E, 0x0E, // 248 + 0xC0, 0xC0, 0x08, 0xD8, 0xC0, 0x0E, 0x1E, 0x10, 0x1E, 0x1E, // 249 + 0xC0, 0xD8, 0x08, 0xC0, 0xC0, 0x0E, 0x1E, 0x10, 0x1E, 0x1E, // 250 + 0xD0, 0xD8, 0x08, 0xD8, 0xD0, 0x0E, 0x1E, 0x10, 0x1E, 0x1E // 251 + +}; + +#endif diff --git a/Arduino_Libs/SSD1306Ascii-master/src/utility/AvrI2c.h b/Arduino_Libs/SSD1306Ascii-master/src/utility/AvrI2c.h new file mode 100644 index 0000000..74fc422 --- /dev/null +++ b/Arduino_Libs/SSD1306Ascii-master/src/utility/AvrI2c.h @@ -0,0 +1,147 @@ +/* Arduino SSD1306Ascii Library + * Copyright (C) 2015 by William Greiman + * + * This file is part of the Arduino SSD1306Ascii Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SSD1306Ascii Library. If not, see + * . + */ +/** + * @file AvrI2c.h + * @brief Small fast I2C class for AVR. + */ +#ifndef AvrI2c_h +#define AvrI2c_h +#include + +/** Bit to or with address for read start and read restart */ +uint8_t const I2C_READ = 1; + +/** Bit to or with address for write start and write restart */ +uint8_t const I2C_WRITE = 0; +//------------------------------------------------------------------------------ +// Status codes in TWSR - names are from Atmel TWSR.h with TWSR_ added + +/** start condition transmitted */ +uint8_t const TWSR_START = 0x08; + +/** repeated start condition transmitted */ +uint8_t const TWSR_REP_START = 0x10; + +/** slave address plus write bit transmitted, ACK received */ +uint8_t const TWSR_MTX_ADR_ACK = 0x18; + +/** data transmitted, ACK received */ +uint8_t const TWSR_MTX_DATA_ACK = 0x28; + +/** slave address plus read bit transmitted, ACK received */ +uint8_t const TWSR_MRX_ADR_ACK = 0x40; +//------------------------------------------------------------------------------ +/** + * \class AvrI2c + * \brief Hardware I2C master class for AVR. + * + * Uses ATmega TWI hardware port + */ +class AvrI2c { + public: + /** + * @brief Initialize prescalar and SLC clock rate. + * @param[in] fastMode Fast 400 kHz mode if true else standard 100 kHz mode. + */ + void begin(bool fastMode = true) { + // Zero prescaler. + TWSR = 0; + // Set bit rate factor. + TWBR = fastMode ? (F_CPU/400000 - 16)/2 : (F_CPU/100000 - 16)/2; + } + /** + * @brief Read a byte and send Ack if more reads follow else + Nak to terminate read. + * + * @param[in] last Set true to terminate the read else false. + * @return The byte read from the I2C bus. + */ + uint8_t read(bool last) { + execCmd((1 << TWINT) | (1 << TWEN) | (last ? 0 : (1 << TWEA))); + return TWDR; + } + /** + * @brief Issue a repeated start condition. + * + * same as start with no stop. Included to document intention. + * + * @param[in] addressRW I2C address with read/write bit. + * @return The value true, 1, for success or false, 0, for failure. + */ + bool repeatedStart(uint8_t addressRW) { + return start(addressRW); + } + /** + * @brief Issue a start condition. + * + * @param[in] addressRW I2C address with read/write bit. + * + * @return The value true for success or false for failure. + */ + bool start(uint8_t addressRW) { + // send START condition + execCmd((1<. + */ +/** + * @file DigitalOutput.h + * @brief Faster version of digitalWrite(). + */ +#ifndef DigitalOutput_h +#define DigitalOutput_h + +#include +#ifdef __AVR__ +#include +#include +/** + * @class DigitalOutput + * @brief Faster version of digitalWrite(). + */ +class DigitalOutput { + public: + /** + * @breif initialize the digital pin. + * + * @param[in] pin The Arduino pin number. + */ + void begin(uint8_t pin) { + uint8_t port = digitalPinToPort(pin); + m_portReg = portOutputRegister(port); + m_bit = digitalPinToBitMask(pin); + m_mask = ~m_bit; + pinMode(pin, OUTPUT); + } + /** + * @brief Set the level of a digital pin. + * + * @param[in] level The value to be set. + */ + inline __attribute__((always_inline)) + void write(bool level) {ATOMIC_BLOCK(ATOMIC_FORCEON) {writeI(level);}} + /** + * @brief Set the level of a digital pin. + * + * @param[in] level The value to be set. + * @note This function must be called with interrupts disabled. + */ + inline __attribute__((always_inline)) + void writeI(bool level) { + *m_portReg = level ? *m_portReg | m_bit : *m_portReg & m_mask; + } + private: + uint8_t m_bit; + uint8_t m_mask; + volatile uint8_t* m_portReg; +}; +#else // _AVR_ +/** + * @class DigitalOutput + * @brief Faster version of digitalWrite(). + */ +class DigitalOutput { + public: + /** + * @brief initialize the digital pin. + * + * @param[in] pin The Arduino pin number. + */ + void begin(uint8_t pin) { + m_pin = pin; + pinMode(m_pin, OUTPUT); + } + /** + * @brief Set the level of a digital pin. + * + * @param[in] level The value to be set. + */ + inline __attribute__((always_inline)) + void write(bool level) { + digitalWrite(m_pin, level); + } + private: + uint8_t m_pin; +}; +#endif // _AVR_ +#endif // DigitalOutput_h \ No newline at end of file diff --git a/tests/OLED_TEST/OLED_TEST.ino b/tests/OLED_TEST/OLED_TEST.ino index 91cd20c..e6a6172 100644 --- a/tests/OLED_TEST/OLED_TEST.ino +++ b/tests/OLED_TEST/OLED_TEST.ino @@ -7,27 +7,21 @@ // 0X3C+SA0 - 0x3C or 0x3D #define I2C_ADDRESS 0x3C -// Define proper RST_PIN if required. -#define RST_PIN -1 - -SSD1306AsciiWire oled; +SSD1306AsciiWire display; //------------------------------------------------------------------------------ void setup() { Wire.begin(); Wire.setClock(400000L); -#if RST_PIN >= 0 - oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); -#else // RST_PIN >= 0 - oled.begin(&Adafruit128x64, I2C_ADDRESS); -#endif // RST_PIN >= 0 + display.begin(&Adafruit128x64, I2C_ADDRESS); - oled.setFont(System5x7); - oled.clear(); - oled.print("Hello world!"); + display.setFont(System5x7); + display.clear(); + display.print("Hello world!"); } //------------------------------------------------------------------------------ void loop() { - oled.setCursor(60, 4); - oled.println(millis()); + display.setCursor(60, 4); + display.set2X(); + display.println(millis()); } diff --git a/tests/Startsignal_Test/Startsignal_Test.ino b/tests/Startsignal_Test/Startsignal_Test.ino index 772a3fe..d1097b1 100644 --- a/tests/Startsignal_Test/Startsignal_Test.ino +++ b/tests/Startsignal_Test/Startsignal_Test.ino @@ -13,7 +13,8 @@ void setup() { tone(6, melody[0], 200); delay(1000); tone(6, melody[1], 100); - + delay(100); + noTone(6); //set all LEDS as OUTPUT pinMode(A0,OUTPUT); pinMode(A1,OUTPUT);