You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
13 KiB

5 years ago
5 years ago
  1. #include <Wire.h>
  2. #include <AT24C32.h>
  3. // init extended ascii font [https://github.com/ecraven/g13/blob/815e0001cb5e24a184186506d2c95f4171e48547/g13_fonts.cc]
  4. // other font: [https://github.com/AdamCDunlap/arduino/blob/940c9db5cbeb55ffcba3661697cf0495dd54f8c2/libraries/LEDArray/includes/characters.h]
  5. // other font: [https://github.com/basti79/LCD-fonts/blob/master/5x8_vertikal_LSB_1.h]
  6. uint8_t ascii_font[256][5] = {
  7. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x00
  8. {0x1E, 0x35, 0x31, 0x35, 0x1E}, // 0x01
  9. {0x1E, 0x35, 0x37, 0x35, 0x1E}, // 0x02
  10. {0x0E, 0x1F, 0x3E, 0x1F, 0x0E}, // 0x03
  11. {0x08, 0x1C, 0x7F, 0x1C, 0x08}, // 0x04
  12. {0x18, 0x4A, 0x7F, 0x4A, 0x18}, // 0x05
  13. {0x1C, 0x4E, 0x7F, 0x4E, 0x1C}, // 0x06
  14. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x07
  15. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x08
  16. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x09
  17. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0A
  18. {0x38, 0x44, 0x44, 0x47, 0x3B}, // 0x0B
  19. {0x0E, 0x51, 0xF1, 0x51, 0x0E}, // 0x0C
  20. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x0D
  21. {0x60, 0x7E, 0x02, 0x33, 0x3F}, // 0x0E
  22. {0x2A, 0x1C, 0x36, 0x1C, 0x2A}, // 0x0F
  23. {0x3E, 0x1C, 0x1C, 0x08, 0x08}, // 0x10
  24. {0x08, 0x08, 0x1C, 0x1C, 0x3E}, // 0x11
  25. {0x00, 0x22, 0x7F, 0x22, 0x00}, // 0x12
  26. {0x00, 0x2E, 0x00, 0x2E, 0x00}, // 0x13
  27. {0x06, 0x7F, 0x01, 0x7F, 0x00}, // 0x14
  28. {0x00, 0x4A, 0x55, 0x29, 0x00}, // 0x15
  29. {0x00, 0x18, 0x18, 0x18, 0x18}, // 0x16
  30. {0x00, 0x4A, 0x5F, 0x4A, 0x00}, // 0x17
  31. {0x00, 0x02, 0x7F, 0x02, 0x00}, // 0x18
  32. {0x00, 0x20, 0x7F, 0x20, 0x00}, // 0x19
  33. {0x00, 0x08, 0x08, 0x1C, 0x08}, // 0x1A
  34. {0x00, 0x08, 0x1C, 0x08, 0x08}, // 0x1B
  35. {0x00, 0x3C, 0x20, 0x20, 0x20}, // 0x1C
  36. {0x08, 0x1C, 0x08, 0x1C, 0x08}, // 0x1D
  37. {0x20, 0x38, 0x3E, 0x38, 0x20}, // 0x1E
  38. {0x02, 0x0E, 0x3E, 0x0E, 0x02}, // 0x1F
  39. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20 (Space)
  40. {0x00, 0x00, 0x9E, 0x00, 0x00}, // 0x21 !
  41. {0x00, 0x0E, 0x00, 0x0E, 0x00}, // 0x22 "
  42. {0x28, 0xFE, 0x28, 0xFE, 0x28}, // 0x23 #
  43. {0x48, 0x54, 0xFE, 0x54, 0x24}, // 0x24 $
  44. {0x46, 0x26, 0x10, 0xC8, 0xC4}, // 0x25 %
  45. {0x6C, 0x92, 0xAA, 0x44, 0xA0}, // 0x26 &
  46. {0x00, 0x0A, 0x06, 0x00, 0x00}, // 0x27 '
  47. {0x00, 0x38, 0x44, 0x82, 0x00}, // 0x28 (
  48. {0x00, 0x82, 0x44, 0x38, 0x00}, // 0x29 )
  49. {0x10, 0x54, 0x38, 0x54, 0x10}, // 0x2A *
  50. {0x10, 0x10, 0x7C, 0x10, 0x10}, // 0x2B +
  51. {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x2C ,
  52. {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x2D -
  53. {0x00, 0x60, 0x60, 0x00, 0x00}, // 0x2E .
  54. {0x40, 0x20, 0x10, 0x08, 0x04}, // 0x2F /
  55. {0x7C, 0xA2, 0x92, 0x8A, 0x7C}, // 0x30 0
  56. {0x00, 0x84, 0xFE, 0x80, 0x00}, // 0x31 1
  57. {0x84, 0xC2, 0xA2, 0x92, 0x8C}, // 0x32 2
  58. {0x42, 0x82, 0x8A, 0x96, 0x62}, // 0x33 3
  59. {0x30, 0x28, 0x24, 0xFE, 0x20}, // 0x34 4
  60. {0x4E, 0x8A, 0x8A, 0x8A, 0x72}, // 0x35 5
  61. {0x78, 0x94, 0x92, 0x92, 0x60}, // 0x36 6
  62. {0x02, 0xE2, 0x12, 0x0A, 0x06}, // 0x37 7
  63. {0x6C, 0x92, 0x92, 0x92, 0x6C}, // 0x38 8
  64. {0x0C, 0x92, 0x92, 0x52, 0x3C}, // 0x39 9
  65. {0x00, 0x6C, 0x6C, 0x00, 0x00}, // 0x3A :
  66. {0x00, 0xAC, 0x6C, 0x00, 0x00}, // 0x3B ;
  67. {0x00, 0x10, 0x28, 0x44, 0x82}, // 0x3C <
  68. {0x28, 0x28, 0x28, 0x28, 0x28}, // 0x3D =
  69. {0x82, 0x44, 0x28, 0x10, 0x00}, // 0x3E >
  70. {0x04, 0x02, 0xA2, 0x12, 0x0C}, // 0x3F ?
  71. {0x64, 0x92, 0xF2, 0x82, 0x7C}, // 0x40 @
  72. {0xFC, 0x22, 0x22, 0x22, 0xFC}, // 0x41 A
  73. {0xFE, 0x92, 0x92, 0x92, 0x6C}, // 0x42 B
  74. {0x7C, 0x82, 0x82, 0x82, 0x44}, // 0x43 C
  75. {0xFE, 0x82, 0x82, 0x44, 0x38}, // 0x44 D
  76. {0xFE, 0x92, 0x92, 0x92, 0x82}, // 0x45 E
  77. {0xFE, 0x12, 0x12, 0x02, 0x02}, // 0x46 F
  78. {0x7C, 0x82, 0x82, 0xA2, 0x64}, // 0x47 G
  79. {0xFE, 0x10, 0x10, 0x10, 0xFE}, // 0x48 H
  80. {0x00, 0x82, 0xFE, 0x82, 0x00}, // 0x49 I
  81. {0x40, 0x80, 0x82, 0x7E, 0x02}, // 0x4A J
  82. {0xFE, 0x10, 0x28, 0x44, 0x82}, // 0x4B K
  83. {0xFE, 0x80, 0x80, 0x80, 0x80}, // 0x4C L
  84. {0xFE, 0x04, 0x08, 0x04, 0xFE}, // 0x4D M
  85. {0xFE, 0x08, 0x10, 0x20, 0xFE}, // 0x4E N
  86. {0x7C, 0x82, 0x82, 0x82, 0x7C}, // 0x4F O
  87. {0xFE, 0x12, 0x12, 0x12, 0x0C}, // 0x50 P
  88. {0x7C, 0x82, 0xA2, 0x42, 0xBC}, // 0x51 Q
  89. {0xFE, 0x12, 0x32, 0x52, 0x8C}, // 0x52 R
  90. {0x8C, 0x92, 0x92, 0x92, 0x62}, // 0x53 S
  91. {0x02, 0x02, 0xFE, 0x02, 0x02}, // 0x54 T
  92. {0x7E, 0x80, 0x80, 0x80, 0x7E}, // 0x55 U
  93. {0x3E, 0x40, 0x80, 0x40, 0x3E}, // 0x56 V
  94. {0xFE, 0x40, 0x30, 0x40, 0xFE}, // 0x57 W
  95. {0xC6, 0x28, 0x10, 0x28, 0xC6}, // 0x58 X
  96. {0x06, 0x08, 0xF0, 0x08, 0x06}, // 0x59 Y
  97. {0xC2, 0xA2, 0x92, 0x8A, 0x86}, // 0x5A Z
  98. {0x00, 0x00, 0xFE, 0x82, 0x82}, // 0x5B [
  99. {0x04, 0x08, 0x10, 0x20, 0x40}, // 0x5C "\"
  100. {0x82, 0x82, 0xFE, 0x00, 0x00}, // 0x5D ]
  101. {0x08, 0x04, 0x02, 0x04, 0x08}, // 0x5E ^
  102. {0x80, 0x80, 0x80, 0x80, 0x80}, // 0x5F _
  103. {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x60 `
  104. {0x40, 0xA8, 0xA8, 0xA8, 0xF0}, // 0x61 a
  105. {0xFE, 0x90, 0x88, 0x88, 0x70}, // 0x62 b
  106. {0x70, 0x88, 0x88, 0x88, 0x40}, // 0x63 c
  107. {0x70, 0x88, 0x88, 0x90, 0xFE}, // 0x64 d
  108. {0x70, 0xA8, 0xA8, 0xA8, 0x30}, // 0x65 e
  109. {0x10, 0xFC, 0x12, 0x02, 0x04}, // 0x66 f
  110. {0x10, 0x28, 0xA8, 0xA8, 0x78}, // 0x67 g
  111. {0xFE, 0x10, 0x08, 0x08, 0xF0}, // 0x68 h
  112. {0x00, 0x88, 0xFA, 0x80, 0x00}, // 0x69 i
  113. {0x40, 0x80, 0x88, 0x7A, 0x00}, // 0x6A j
  114. {0x00, 0xFE, 0x20, 0x50, 0x88}, // 0x6B k
  115. {0x00, 0x82, 0xFE, 0x80, 0x00}, // 0x6C l
  116. {0xF8, 0x08, 0x30, 0x08, 0xF0}, // 0x6D m
  117. {0xF8, 0x10, 0x08, 0x08, 0xF0}, // 0x6E n
  118. {0x70, 0x88, 0x88, 0x88, 0x70}, // 0x6F o
  119. {0xF8, 0x28, 0x28, 0x28, 0x10}, // 0x70 p
  120. {0x10, 0x28, 0x28, 0x30, 0xF8}, // 0x71 q
  121. {0xF8, 0x10, 0x08, 0x08, 0x10}, // 0x72 r
  122. {0x90, 0xA8, 0xA8, 0xA8, 0x40}, // 0x73 s
  123. {0x08, 0x7E, 0x88, 0x80, 0x40}, // 0x74 t
  124. {0x78, 0x80, 0x80, 0x40, 0xF8}, // 0x75 u
  125. {0x38, 0x40, 0x80, 0x40, 0x38}, // 0x76 v
  126. {0x78, 0x80, 0x60, 0x80, 0x78}, // 0x77 w
  127. {0x88, 0x50, 0x20, 0x50, 0x88}, // 0x78 x
  128. {0x18, 0xA0, 0xA0, 0xA0, 0x78}, // 0x79 y
  129. {0x88, 0xC8, 0xA8, 0x98, 0x88}, // 0x7A z
  130. {0x00, 0x10, 0x6C, 0x82, 0x00}, // 0x7B {
  131. {0x00, 0x00, 0xFE, 0x00, 0x00}, // 0x7C |
  132. {0x00, 0x82, 0x6C, 0x10, 0x00}, // 0x7D }
  133. {0x20, 0x10, 0x10, 0x20, 0x10}, // 0x7E
  134. {0xF0, 0x88, 0x84, 0x88, 0xF0}, // 0x7F 
  135. {0x28, 0x7C, 0xAA, 0x82, 0x44}, // 0x80 €
  136. {0xF0, 0x29, 0x27, 0x21, 0xFF}, // 0x81 
  137. {0x00, 0xA0, 0x60, 0x00, 0x00}, // 0x82 ‚
  138. {0x40, 0x90, 0x7C, 0x12, 0x04}, // 0x83 ƒ
  139. {0xC0, 0xA0, 0x00, 0xC0, 0xA0}, // 0x84 „
  140. {0x80, 0x00, 0x80, 0x00, 0x80}, // 0x85 …
  141. {0x00, 0x04, 0xFE, 0x04, 0x00}, // 0x86 †
  142. {0x00, 0x44, 0xFE, 0x44, 0x00}, // 0x87 ‡
  143. {0x00, 0x04, 0x02, 0x04, 0x00}, // 0x88 ˆ
  144. {0xC3, 0xD3, 0x08, 0xC4, 0xC2}, // 0x89 ‰
  145. {0x4C, 0x93, 0x92, 0x93, 0x64}, // 0x8A Š
  146. {0x00, 0x10, 0x28, 0x00, 0x00}, // 0x8B ‹
  147. {0x7C, 0x82, 0x82, 0x7C, 0x92}, // 0x8C Œ
  148. {0x02, 0xFE, 0x90, 0x90, 0x60}, // 0x8D 
  149. {0xC2, 0xA3, 0x92, 0x8B, 0x86}, // 0x8E Ž
  150. {0x44, 0x92, 0x8A, 0x92, 0x7C}, // 0x8F 
  151. {0x70, 0x88, 0x90, 0x60, 0x98}, // 0x90 
  152. {0x00, 0x02, 0x04, 0x08, 0x00}, // 0x91 ‘
  153. {0x00, 0x08, 0x04, 0x02, 0x00}, // 0x92 ’
  154. {0x02, 0x04, 0x0A, 0x04, 0x08}, // 0x93 “
  155. {0x08, 0x04, 0x0A, 0x04, 0x02}, // 0x94 ”
  156. {0x00, 0x38, 0x38, 0x38, 0x00}, // 0x95 •
  157. {0x00, 0x10, 0x10, 0x10, 0x10}, // 0x96 –
  158. {0x10, 0x10, 0x10, 0x10, 0x10}, // 0x97 —
  159. {0x02, 0x01, 0x02, 0x04, 0x02}, // 0x98 ˜
  160. {0xF1, 0x5B, 0x55, 0x51, 0x51}, // 0x99 ™
  161. {0x90, 0xA9, 0xAA, 0xA9, 0x40}, // 0x9A š
  162. {0x00, 0x88, 0x50, 0x20, 0x00}, // 0x9B ›
  163. {0x70, 0x88, 0x70, 0xA8, 0xB0}, // 0x9C ϡ
  164. {0x38, 0x7C, 0xF8, 0x7C, 0x38}, // 0x9D 
  165. {0x88, 0xC9, 0xAA, 0x99, 0x88}, // 0x9E ž
  166. {0x1C, 0x21, 0xC0, 0x21, 0x1C}, // 0x9F Ÿ
  167. {0x00, 0x00, 0x00, 0x00, 0x00}, // 0xA0
  168. {0x00, 0x00, 0xF2, 0x00, 0x00}, // 0xA1 ¡
  169. {0x38, 0x44, 0xFE, 0x44, 0x20}, // 0xA2 ¢
  170. {0x90, 0x7C, 0x92, 0x82, 0x40}, // 0xA3 £
  171. {0x44, 0x38, 0x28, 0x38, 0x44}, // 0xA4 ¤
  172. {0x2A, 0x2C, 0xF8, 0x2C, 0x2A}, // 0xA5 ¥
  173. {0x00, 0x00, 0xEE, 0x00, 0x00}, // 0xA6 ¦
  174. {0x40, 0x94, 0xAA, 0x52, 0x04}, // 0xA7 §
  175. {0x00, 0x02, 0x00, 0x02, 0x00}, // 0xA8 ¨
  176. {0xFE, 0x82, 0xBA, 0x92, 0xFE}, // 0xA9 ©
  177. {0x90, 0xAA, 0xAA, 0xAA, 0xBC}, // 0xAA ª
  178. {0x20, 0x50, 0xA8, 0x50, 0x88}, // 0xAB «
  179. {0x20, 0x20, 0x20, 0x20, 0xE0}, // 0xAC ¬
  180. {0x20, 0x20, 0x20, 0x20, 0x20}, // 0xAD ­
  181. {0xFE, 0x82, 0xCA, 0xA2, 0xFE}, // 0xAE ®
  182. {0x02, 0x02, 0x02, 0x02, 0x02}, // 0xAF ¯
  183. {0x0E, 0x11, 0x11, 0x0E, 0x00}, // 0xB0 °
  184. {0x88, 0x88, 0xBE, 0x88, 0x88}, // 0xB1 ±
  185. {0x12, 0x19, 0x15, 0x12, 0x00}, // 0xB2 ²
  186. {0x11, 0x15, 0x15, 0x0A, 0x00}, // 0xB3 ³
  187. {0x00, 0x08, 0x04, 0x02, 0x00}, // 0xB4 ´
  188. {0xFE, 0x20, 0x20, 0x10, 0x3E}, // 0xB5 µ
  189. {0x0C, 0x12, 0x12, 0xFE, 0xFE}, // 0xB6 ¶
  190. {0x00, 0x30, 0x30, 0x00, 0x00}, // 0xB7 ·
  191. {0x00, 0x80, 0xB0, 0x40, 0x00}, // 0xB8 ¸
  192. {0x00, 0x02, 0x0F, 0x00, 0x00}, // 0xB9 ¹
  193. {0x00, 0x02, 0x05, 0x02, 0x00}, // 0xBA º
  194. {0x44, 0x28, 0x54, 0x28, 0x10}, // 0xBB »
  195. {0x22, 0x1F, 0x68, 0x54, 0xFA}, // 0xBC ¼
  196. {0x02, 0x1F, 0x90, 0xC8, 0xB0}, // 0xBD ½
  197. {0x15, 0x1F, 0x60, 0x50, 0xF8}, // 0xBE ¾
  198. {0x60, 0x90, 0x8A, 0x80, 0x40}, // 0xBF ¿
  199. {0xF0, 0x29, 0x26, 0x28, 0xF0}, // 0xC0 À
  200. {0xF0, 0x28, 0x26, 0x29, 0xF0}, // 0xC1 Á
  201. {0xF0, 0x2A, 0x29, 0x2A, 0xF0}, // 0xC2 Â
  202. {0xF2, 0x29, 0x29, 0x2A, 0xF1}, // 0xC3 Ã
  203. {0xF0, 0x29, 0x24, 0x29, 0xF0}, // 0xC4 Ä
  204. {0xF0, 0x2A, 0x2D, 0x2A, 0xF0}, // 0xC5 Å
  205. {0xF8, 0x24, 0xFE, 0x92, 0x92}, // 0xC6 Æ
  206. {0x1E, 0x21, 0xA1, 0xE1, 0x12}, // 0xC7 Ç
  207. {0xF8, 0xA9, 0xAA, 0xA8, 0x88}, // 0xC8 È
  208. {0xF8, 0xA8, 0xAA, 0xA9, 0x88}, // 0xC9 É
  209. {0xF8, 0xAA, 0xA9, 0xAA, 0x88}, // 0xCA Ê
  210. {0xF8, 0xAA, 0xA8, 0xAA, 0x88}, // 0xCB Ë
  211. {0x00, 0x89, 0xFA, 0x88, 0x00}, // 0xCC Ì
  212. {0x00, 0x88, 0xFA, 0x89, 0x00}, // 0xCD Í
  213. {0x00, 0x8A, 0xF9, 0x8A, 0x00}, // 0xCE Î
  214. {0x00, 0x8A, 0xF8, 0x8A, 0x00}, // 0xCF Ï
  215. {0x10, 0xFE, 0x92, 0x82, 0x7C}, // 0xD0 Ð
  216. {0xFA, 0x11, 0x21, 0x42, 0xF9}, // 0xD1 Ñ
  217. {0x78, 0x85, 0x86, 0x84, 0x78}, // 0xD2 Ò
  218. {0x78, 0x84, 0x86, 0x85, 0x78}, // 0xD3 Ó
  219. {0x70, 0x8A, 0x89, 0x8A, 0x70}, // 0xD4 Ô
  220. {0x72, 0x89, 0x89, 0x8A, 0x71}, // 0xD5 Õ
  221. {0x78, 0x85, 0x84, 0x85, 0x78}, // 0xD6 Ö
  222. {0x44, 0x28, 0x10, 0x28, 0x44}, // 0xD7 ×
  223. {0x10, 0xAA, 0xFE, 0xAA, 0x10}, // 0xD8 Ø
  224. {0x7C, 0x81, 0x82, 0x80, 0x7C}, // 0xD9 Ù
  225. {0x7C, 0x80, 0x82, 0x81, 0x7C}, // 0xDA Ú
  226. {0x78, 0x82, 0x81, 0x82, 0x78}, // 0xDB Û
  227. {0x7C, 0x81, 0x80, 0x81, 0x7C}, // 0xDC Ü
  228. {0x04, 0x08, 0xF2, 0x09, 0x04}, // 0xDD Ý
  229. {0x81, 0xFF, 0x24, 0x24, 0x18}, // 0xDE Þ
  230. {0x80, 0x7C, 0x92, 0x92, 0x6C}, // 0xDF ß
  231. {0x40, 0xA9, 0xAA, 0xA8, 0xF0}, // 0xE0 à
  232. {0x40, 0xA8, 0xAA, 0xA9, 0xF0}, // 0xE1 á
  233. {0x40, 0xAA, 0xA9, 0xAA, 0xF0}, // 0xE2 â
  234. {0x42, 0xA9, 0xA9, 0xAA, 0xF1}, // 0xE3 ã
  235. {0x40, 0xAA, 0xA8, 0xAA, 0xF0}, // 0xE4 ä
  236. {0x40, 0xAA, 0xAD, 0xAA, 0xF0}, // 0xE5 å
  237. {0x64, 0x94, 0x78, 0x94, 0x58}, // 0xE6 æ
  238. {0x18, 0x24, 0xA4, 0xE4, 0x10}, // 0xE7 ç
  239. {0x70, 0xA9, 0xAA, 0xA8, 0x30}, // 0xE8 è
  240. {0x70, 0xA8, 0xAA, 0xA9, 0x30}, // 0xE9 é
  241. {0x70, 0xAA, 0xA9, 0xAA, 0x30}, // 0xEA ê
  242. {0x70, 0xAA, 0xA8, 0xAA, 0x30}, // 0xEB ë
  243. {0x00, 0x91, 0xFA, 0x80, 0x00}, // 0xEC ì
  244. {0x00, 0x90, 0xFA, 0x81, 0x00}, // 0xED í
  245. {0x00, 0x92, 0xF9, 0x82, 0x00}, // 0xEE î
  246. {0x00, 0x92, 0xF8, 0x82, 0x00}, // 0xEF ï
  247. {0x4A, 0xA4, 0xAA, 0xB0, 0x60}, // 0xF0 ð
  248. {0xFA, 0x11, 0x09, 0x0A, 0xF1}, // 0xF1 ñ
  249. {0x70, 0x89, 0x8A, 0x88, 0x70}, // 0xF2 ò
  250. {0x70, 0x88, 0x8A, 0x89, 0x70}, // 0xF3 ó
  251. {0x60, 0x94, 0x92, 0x94, 0x60}, // 0xF4 ô
  252. {0x64, 0x92, 0x92, 0x94, 0x62}, // 0xF5 õ
  253. {0x70, 0x8A, 0x88, 0x8A, 0x70}, // 0xF6 ö
  254. {0x10, 0x10, 0x54, 0x10, 0x10}, // 0xF7 ÷
  255. {0x10, 0xA8, 0x7C, 0x2A, 0x10}, // 0xF8 ø
  256. {0x78, 0x81, 0x82, 0x40, 0xF8}, // 0xF9 ù
  257. {0x78, 0x80, 0x82, 0x41, 0xF8}, // 0xFA ú
  258. {0x78, 0x82, 0x81, 0x42, 0xF8}, // 0xFB û
  259. {0x78, 0x82, 0x80, 0x42, 0xF8}, // 0xFC ü
  260. {0x18, 0xA0, 0xA4, 0xA2, 0x78}, // 0xFD v
  261. {0x00, 0x82, 0xFE, 0xA8, 0x10}, // 0xFE þ
  262. {0x18, 0xA2, 0xA0, 0xA2, 0x78} // 0xFF ÿ
  263. };
  264. AT24C32 at24c32;
  265. uint8_t data;
  266. /**
  267. setup
  268. */
  269. void setup()
  270. {
  271. Serial.begin(115200);
  272. at24c32.begin();
  273. for (int ascii = 0; ascii < 256; ascii++)
  274. {
  275. for (int b = 0; b < 5; b++)
  276. {
  277. at24c32.write(ascii * 5 + b, ascii_font[ascii][b]);
  278. Serial.print(ascii * 5 + b);
  279. if (at24c32.read(ascii * 5 + b) == ascii_font[ascii][b])
  280. {
  281. Serial.println(F(": check"));
  282. }
  283. else
  284. {
  285. Serial.print(F(": ERROR! "));
  286. Serial.print(ascii_font[ascii][b]);
  287. Serial.print(F(" - "));
  288. Serial.println(at24c32.read(ascii * 5 + b));
  289. }
  290. }
  291. }
  292. Serial.println(F("ascii chars written!"));
  293. for (int i = 0; i < 256; i++)
  294. {
  295. at24c32.write(TEXT_ADDRESS + i, char('A'));
  296. }
  297. Serial.println(F("Text resets to 'A'"));
  298. String text = "inital text";
  299. at24c32.write(TEXT_SIZE_ADDRESS, text.length());
  300. for (int i = 0; i < text.length(); i++)
  301. {
  302. at24c32.write(TEXT_ADDRESS + i, char(text[i]));
  303. }
  304. Serial.println(F("text written!"));
  305. }
  306. /**
  307. loop
  308. */
  309. void loop()
  310. {
  311. // read text
  312. uint8_t length = at24c32.read(TEXT_SIZE_ADDRESS);
  313. for (uint8_t i = 0; i < length; i++)
  314. {
  315. Serial.print(char(at24c32.read(TEXT_ADDRESS + i)));
  316. }
  317. Serial.println();
  318. delay(2000);
  319. }