tidy up code, variable width font, support more characters
This commit is contained in:
parent
a7034288bc
commit
08740b3ca7
2 changed files with 334 additions and 287 deletions
523
src/font.h
523
src/font.h
|
@ -1,263 +1,272 @@
|
|||
#ifndef FONT_H
|
||||
#define FONT_H
|
||||
|
||||
const uint8_t font_5x7_col[256][5] PROGMEM = {
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x7F, 0x00, 0x00, 0x00, 0x00 }, // (1 col left)
|
||||
{ 0x7F, 0x7F, 0x00, 0x00, 0x00 }, // (2 col left)
|
||||
{ 0x7F, 0x7F, 0x7F, 0x00, 0x00 }, // (3 col left)
|
||||
{ 0x7F, 0x7F, 0x7F, 0x7F, 0x00 }, // (4 col left)
|
||||
{ 0x7F, 0x7F, 0x7F, 0x7F, 0x7F }, // (solid fill)
|
||||
{ 0x00, 0x7F, 0x7F, 0x7F, 0x7F }, // (4 col right)
|
||||
{ 0x00, 0x00, 0x7F, 0x7F, 0x7F }, // (3 col right)
|
||||
{ 0x00, 0x00, 0x00, 0x7F, 0x7F }, // (2 col right)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x7F }, // (1 col right)
|
||||
{ 0x03, 0x07, 0x7E, 0x20, 0x1C }, // (music note)
|
||||
{ 0x60, 0x66, 0x09, 0x09, 0x09 }, // (deg c)
|
||||
{ 0x60, 0x6F, 0x0A, 0x0A, 0x08 }, // (deg f)
|
||||
{ 0x10, 0x18, 0x1C, 0x18, 0x10 }, // (triangle down)
|
||||
{ 0x00, 0x3E, 0x1C, 0x08, 0x00 }, // (triangle right)
|
||||
{ 0x00, 0x08, 0x1C, 0x3E, 0x00 }, // (triangle left)
|
||||
{ 0x04, 0x0C, 0x1C, 0x0C, 0x04 }, // (triangle up)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // (space)
|
||||
{ 0x00, 0x7D, 0x00, 0x00, 0x00 }, // (!)
|
||||
{ 0x00, 0x70, 0x00, 0x70, 0x00 }, // (")
|
||||
{ 0x14, 0x7F, 0x14, 0x7F, 0x14 }, // (#)
|
||||
{ 0x12, 0x2A, 0x7F, 0x2A, 0x24 }, // ($)
|
||||
{ 0x62, 0x64, 0x08, 0x13, 0x23 }, // (%)
|
||||
{ 0x36, 0x49, 0x35, 0x02, 0x05 }, // (&)
|
||||
{ 0x00, 0x50, 0x60, 0x00, 0x00 }, // (')
|
||||
{ 0x00, 0x1C, 0x22, 0x41, 0x00 }, // (()
|
||||
{ 0x00, 0x41, 0x22, 0x1C, 0x00 }, // ())
|
||||
{ 0x44, 0x28, 0x7C, 0x28, 0x44 }, // (*)
|
||||
{ 0x08, 0x08, 0x7F, 0x08, 0x08 }, // (+)
|
||||
{ 0x05, 0x06, 0x00, 0x00, 0x00 }, // (,)
|
||||
{ 0x08, 0x08, 0x08, 0x00, 0x00 }, // (-)
|
||||
{ 0x00, 0x03, 0x03, 0x00, 0x00 }, // (.)
|
||||
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // (/)
|
||||
{ 0x3E, 0x45, 0x49, 0x51, 0x3E }, // (0)
|
||||
{ 0x00, 0x21, 0x7F, 0x01, 0x00 }, // (1)
|
||||
{ 0x21, 0x43, 0x45, 0x49, 0x31 }, // (2)
|
||||
{ 0x42, 0x41, 0x51, 0x69, 0x46 }, // (3)
|
||||
{ 0x0C, 0x14, 0x24, 0x7F, 0x04 }, // (4)
|
||||
{ 0x72, 0x51, 0x51, 0x51, 0x4E }, // (5)
|
||||
{ 0x1E, 0x29, 0x49, 0x49, 0x06 }, // (6)
|
||||
{ 0x43, 0x44, 0x48, 0x50, 0x60 }, // (7)
|
||||
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // (8)
|
||||
{ 0x30, 0x49, 0x49, 0x4A, 0x3C }, // (9)
|
||||
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // (:)
|
||||
{ 0x00, 0x35, 0x36, 0x00, 0x00 }, // (;)
|
||||
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // (<)
|
||||
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // (=)
|
||||
{ 0x41, 0x22, 0x14, 0x08, 0x00 }, // (>)
|
||||
{ 0x20, 0x40, 0x45, 0x48, 0x30 }, // (?)
|
||||
{ 0x3E, 0x41, 0x4D, 0x51, 0x36 }, // (@)
|
||||
{ 0x3F, 0x48, 0x48, 0x48, 0x3F }, // (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, 0x48, 0x48, 0x48, 0x40 }, // (F)
|
||||
{ 0x3E, 0x41, 0x49, 0x49, 0x2E }, // (G)
|
||||
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // (H)
|
||||
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // (I)
|
||||
{ 0x02, 0x01, 0x41, 0x7E, 0x40 }, // (J)
|
||||
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // (K)
|
||||
{ 0x7F, 0x01, 0x01, 0x01, 0x01 }, // (L)
|
||||
{ 0x7F, 0x20, 0x18, 0x20, 0x7F }, // (M)
|
||||
{ 0x7F, 0x10, 0x08, 0x04, 0x7F }, // (N)
|
||||
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // (O)
|
||||
{ 0x7F, 0x48, 0x48, 0x48, 0x30 }, // (P)
|
||||
{ 0x3E, 0x41, 0x45, 0x42, 0x3D }, // (Q)
|
||||
{ 0x7F, 0x48, 0x4C, 0x4A, 0x31 }, // (R)
|
||||
{ 0x31, 0x49, 0x49, 0x49, 0x46 }, // (S)
|
||||
{ 0x40, 0x40, 0x7F, 0x40, 0x40 }, // (T)
|
||||
{ 0x7E, 0x01, 0x01, 0x01, 0x7E }, // (U)
|
||||
{ 0x7C, 0x02, 0x01, 0x02, 0x7C }, // (V)
|
||||
{ 0x7E, 0x01, 0x06, 0x01, 0x7E }, // (W)
|
||||
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // (X)
|
||||
{ 0x70, 0x08, 0x07, 0x08, 0x70 }, // (Y)
|
||||
{ 0x43, 0x45, 0x49, 0x51, 0x61 }, // (Z)
|
||||
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // ([)
|
||||
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // (\)
|
||||
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, // (])
|
||||
{ 0x10, 0x20, 0x40, 0x20, 0x10 }, // (^)
|
||||
{ 0x01, 0x01, 0x01, 0x01, 0x01 }, // (_)
|
||||
{ 0x00, 0x40, 0x20, 0x10, 0x00 }, // (`)
|
||||
{ 0x02, 0x15, 0x15, 0x15, 0x0F }, // (a)
|
||||
{ 0x7F, 0x09, 0x11, 0x11, 0x0E }, // (b)
|
||||
{ 0x0E, 0x11, 0x11, 0x11, 0x02 }, // (c)
|
||||
{ 0x0E, 0x11, 0x11, 0x09, 0x7F }, // (d)
|
||||
{ 0x0E, 0x15, 0x15, 0x15, 0x0C }, // (e)
|
||||
{ 0x08, 0x3F, 0x48, 0x40, 0x20 }, // (f)
|
||||
{ 0x18, 0x25, 0x25, 0x25, 0x3E }, // (g)
|
||||
{ 0x7F, 0x08, 0x10, 0x10, 0x0F }, // (h)
|
||||
{ 0x00, 0x11, 0x5F, 0x01, 0x00 }, // (i)
|
||||
{ 0x02, 0x01, 0x11, 0x5E, 0x00 }, // (j)
|
||||
{ 0x7F, 0x04, 0x0A, 0x11, 0x00 }, // (k)
|
||||
{ 0x00, 0x41, 0x7F, 0x01, 0x00 }, // (l)
|
||||
{ 0x1F, 0x10, 0x0C, 0x10, 0x0F }, // (m)
|
||||
{ 0x1F, 0x08, 0x10, 0x10, 0x0F }, // (n)
|
||||
{ 0x0E, 0x11, 0x11, 0x11, 0x0E }, // (o)
|
||||
{ 0x1F, 0x14, 0x14, 0x14, 0x08 }, // (p)
|
||||
{ 0x08, 0x14, 0x14, 0x14, 0x0F }, // (q)
|
||||
{ 0x1F, 0x08, 0x10, 0x10, 0x08 }, // (r)
|
||||
{ 0x09, 0x15, 0x15, 0x15, 0x02 }, // (s)
|
||||
{ 0x10, 0x7E, 0x11, 0x01, 0x02 }, // (t)
|
||||
{ 0x1E, 0x01, 0x01, 0x02, 0x1F }, // (u)
|
||||
{ 0x1C, 0x02, 0x01, 0x02, 0x1C }, // (v)
|
||||
{ 0x1E, 0x01, 0x02, 0x01, 0x1E }, // (w)
|
||||
{ 0x11, 0x0A, 0x04, 0x0A, 0x11 }, // (x)
|
||||
{ 0x18, 0x05, 0x05, 0x05, 0x1E }, // (y)
|
||||
{ 0x11, 0x13, 0x15, 0x19, 0x11 }, // (z)
|
||||
{ 0x08, 0x36, 0x41, 0x00, 0x00 }, // ({)
|
||||
{ 0x00, 0x00, 0x7F, 0x00, 0x00 }, // (|)
|
||||
{ 0x00, 0x00, 0x41, 0x36, 0x08 }, // (})
|
||||
{ 0x08, 0x10, 0x08, 0x04, 0x08 }, // (~)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x08, 0x08, 0x2A, 0x1C, 0x08 }, // (arrow right)
|
||||
{ 0x08, 0x1C, 0x2A, 0x08, 0x08 }, // (arrow left)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x14, 0x3E, 0x55, 0x41, 0x22 }, // (€)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x1F, 0x64, 0x24, 0x64, 0x1F }, // (Ä)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x1E, 0x61, 0x21, 0x61, 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 }, //
|
||||
{ 0x3E, 0x41, 0x01, 0x41, 0x3E }, // (Ü)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x3F, 0x40, 0x40, 0x49, 0x36 }, // (ß)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x02, 0x55, 0x15, 0x55, 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, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x0E, 0x51, 0x11, 0x51, 0x0E }, // (ö)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x1E, 0x41, 0x01, 0x42, 0x1F }, // (ü)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, //
|
||||
{ 0x18, 0x45, 0x05, 0x45, 0x1E }, // (ÿ)
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct LCDChar {
|
||||
uint8_t width;
|
||||
uint8_t columns[7];
|
||||
};
|
||||
|
||||
const LCDChar font_var_width[256] PROGMEM = {
|
||||
{ 0, {} }, // 00 NUL
|
||||
{ 0, {} }, // 01 SOH
|
||||
{ 0, {} }, // 02 STX
|
||||
{ 0, {} }, // 03 ETX
|
||||
{ 0, {} }, // 04 EOT
|
||||
{ 0, {} }, // 05 ENQ
|
||||
{ 0, {} }, // 06 ACK
|
||||
{ 0, {} }, // 07 BEL
|
||||
{ 0, {} }, // 08 BS
|
||||
{ 0, {} }, // 09 HT
|
||||
{ 0, {} }, // 0A LF
|
||||
{ 0, {} }, // 0B VT
|
||||
{ 0, {} }, // 0C FF
|
||||
{ 0, {} }, // 0D CR
|
||||
{ 0, {} }, // 0E SO
|
||||
{ 0, {} }, // 0F SI
|
||||
{ 0, {} }, // 10 DLE
|
||||
{ 0, {} }, // 11 DC1
|
||||
{ 0, {} }, // 12 DC2
|
||||
{ 0, {} }, // 13 DC3
|
||||
{ 0, {} }, // 14 DC4
|
||||
{ 0, {} }, // 15 NAK
|
||||
{ 0, {} }, // 16 SYN
|
||||
{ 0, {} }, // 17 ETB
|
||||
{ 0, {} }, // 18 CAN
|
||||
{ 0, {} }, // 19 EM
|
||||
{ 0, {} }, // 1A SUB
|
||||
{ 0, {} }, // 1B ESC
|
||||
{ 0, {} }, // 1C FS
|
||||
{ 0, {} }, // 1D GS
|
||||
{ 0, {} }, // 1E RS
|
||||
{ 0, {} }, // 1F US
|
||||
{ 1, { 0x00 } }, // 20 SP
|
||||
{ 1, { 0x7D } }, // 21 !
|
||||
{ 3, { 0x70, 0x00, 0x70 } }, // 22 "
|
||||
{ 5, { 0x14, 0x7F, 0x14, 0x7F, 0x14 } }, // 23 #
|
||||
{ 5, { 0x12, 0x2A, 0x7F, 0x2A, 0x24 } }, // 24 $
|
||||
{ 5, { 0x62, 0x64, 0x08, 0x13, 0x23 } }, // 25 %
|
||||
{ 5, { 0x36, 0x49, 0x35, 0x02, 0x05 } }, // 26 &
|
||||
{ 2, { 0x50, 0x60 } }, // 27 '
|
||||
{ 3, { 0x1C, 0x22, 0x41 } }, // 28 (
|
||||
{ 3, { 0x41, 0x22, 0x1C } }, // 29 )
|
||||
{ 5, { 0x44, 0x28, 0x7C, 0x28, 0x44 } }, // 2A *
|
||||
{ 5, { 0x08, 0x08, 0x7F, 0x08, 0x08 } }, // 2B +
|
||||
{ 2, { 0x05, 0x06 } }, // 2C ,
|
||||
{ 3, { 0x08, 0x08, 0x08 } }, // 2D -
|
||||
{ 2, { 0x03, 0x03 } }, // 2E .
|
||||
{ 5, { 0x02, 0x04, 0x08, 0x10, 0x20 } }, // 2F /
|
||||
{ 5, { 0x3E, 0x45, 0x49, 0x51, 0x3E } }, // 30 0
|
||||
{ 3, { 0x21, 0x7F, 0x01 } }, // 31 1
|
||||
{ 5, { 0x21, 0x43, 0x45, 0x49, 0x31 } }, // 32 2
|
||||
{ 5, { 0x42, 0x41, 0x51, 0x69, 0x46 } }, // 33 3
|
||||
{ 5, { 0x0C, 0x14, 0x24, 0x7F, 0x04 } }, // 34 4
|
||||
{ 5, { 0x72, 0x51, 0x51, 0x51, 0x4E } }, // 35 5
|
||||
{ 5, { 0x1E, 0x29, 0x49, 0x49, 0x06 } }, // 36 6
|
||||
{ 5, { 0x43, 0x44, 0x48, 0x50, 0x60 } }, // 37 7
|
||||
{ 5, { 0x36, 0x49, 0x49, 0x49, 0x36 } }, // 38 8
|
||||
{ 5, { 0x30, 0x49, 0x49, 0x4A, 0x3C } }, // 39 9
|
||||
{ 2, { 0x36, 0x36 } }, // 3A :
|
||||
{ 2, { 0x35, 0x36 } }, // 3B ;
|
||||
{ 4, { 0x08, 0x14, 0x22, 0x41 } }, // 3C <
|
||||
{ 5, { 0x14, 0x14, 0x14, 0x14, 0x14 } }, // 3D =
|
||||
{ 4, { 0x41, 0x22, 0x14, 0x08 } }, // 3E >
|
||||
{ 5, { 0x20, 0x40, 0x45, 0x48, 0x30 } }, // 3F ?
|
||||
{ 5, { 0x3E, 0x41, 0x4D, 0x51, 0x36 } }, // 40 @
|
||||
{ 5, { 0x3F, 0x48, 0x48, 0x48, 0x3F } }, // 41 A
|
||||
{ 5, { 0x7F, 0x49, 0x49, 0x49, 0x36 } }, // 42 B
|
||||
{ 5, { 0x3E, 0x41, 0x41, 0x41, 0x22 } }, // 43 C
|
||||
{ 5, { 0x7F, 0x41, 0x41, 0x41, 0x3E } }, // 44 D
|
||||
{ 5, { 0x7F, 0x49, 0x49, 0x49, 0x41 } }, // 45 E
|
||||
{ 5, { 0x7F, 0x48, 0x48, 0x48, 0x40 } }, // 46 F
|
||||
{ 5, { 0x3E, 0x41, 0x49, 0x49, 0x2E } }, // 47 G
|
||||
{ 5, { 0x7F, 0x08, 0x08, 0x08, 0x7F } }, // 48 H
|
||||
{ 3, { 0x41, 0x7F, 0x41 } }, // 49 I
|
||||
{ 5, { 0x02, 0x01, 0x41, 0x7E, 0x40 } }, // 4A J
|
||||
{ 5, { 0x7F, 0x08, 0x14, 0x22, 0x41 } }, // 4B K
|
||||
{ 5, { 0x7F, 0x01, 0x01, 0x01, 0x01 } }, // 4C L
|
||||
{ 5, { 0x7F, 0x20, 0x18, 0x20, 0x7F } }, // 4D M
|
||||
{ 5, { 0x7F, 0x10, 0x08, 0x04, 0x7F } }, // 4E N
|
||||
{ 5, { 0x3E, 0x41, 0x41, 0x41, 0x3E } }, // 4F O
|
||||
{ 5, { 0x7F, 0x48, 0x48, 0x48, 0x30 } }, // 50 P
|
||||
{ 5, { 0x3E, 0x41, 0x45, 0x42, 0x3D } }, // 51 Q
|
||||
{ 5, { 0x7F, 0x48, 0x4C, 0x4A, 0x31 } }, // 52 R
|
||||
{ 5, { 0x31, 0x49, 0x49, 0x49, 0x46 } }, // 53 S
|
||||
{ 5, { 0x40, 0x40, 0x7F, 0x40, 0x40 } }, // 54 T
|
||||
{ 5, { 0x7E, 0x01, 0x01, 0x01, 0x7E } }, // 55 U
|
||||
{ 5, { 0x7C, 0x02, 0x01, 0x02, 0x7C } }, // 56 V
|
||||
{ 5, { 0x7E, 0x01, 0x06, 0x01, 0x7E } }, // 57 W
|
||||
{ 5, { 0x63, 0x14, 0x08, 0x14, 0x63 } }, // 58 X
|
||||
{ 5, { 0x70, 0x08, 0x07, 0x08, 0x70 } }, // 59 Y
|
||||
{ 5, { 0x43, 0x45, 0x49, 0x51, 0x61 } }, // 5A Z
|
||||
{ 3, { 0x7F, 0x41, 0x41 } }, // 5B [
|
||||
{ 5, { 0x20, 0x10, 0x08, 0x04, 0x02 } }, /* 5C \ */
|
||||
{ 3, { 0x41, 0x41, 0x7F } }, // 5D ]
|
||||
{ 5, { 0x10, 0x20, 0x40, 0x20, 0x10 } }, // 5E ^
|
||||
{ 5, { 0x01, 0x01, 0x01, 0x01, 0x01 } }, // 5F _
|
||||
{ 3, { 0x40, 0x20, 0x10 } }, // 60 `
|
||||
{ 5, { 0x02, 0x15, 0x15, 0x15, 0x0F } }, // 61 a
|
||||
{ 5, { 0x7F, 0x09, 0x11, 0x11, 0x0E } }, // 62 b
|
||||
{ 5, { 0x0E, 0x11, 0x11, 0x11, 0x02 } }, // 63 c
|
||||
{ 5, { 0x0E, 0x11, 0x11, 0x09, 0x7F } }, // 64 d
|
||||
{ 5, { 0x0E, 0x15, 0x15, 0x15, 0x0C } }, // 65 e
|
||||
{ 5, { 0x08, 0x3F, 0x48, 0x40, 0x20 } }, // 66 f
|
||||
{ 5, { 0x18, 0x25, 0x25, 0x25, 0x3E } }, // 67 g
|
||||
{ 5, { 0x7F, 0x08, 0x10, 0x10, 0x0F } }, // 68 h
|
||||
{ 3, { 0x11, 0x5F, 0x01 } }, // 69 i
|
||||
{ 4, { 0x02, 0x01, 0x11, 0x5E } }, // 6A j
|
||||
{ 4, { 0x7F, 0x04, 0x0A, 0x11 } }, // 6B k
|
||||
{ 3, { 0x41, 0x7F, 0x01 } }, // 6C l
|
||||
{ 5, { 0x1F, 0x10, 0x0C, 0x10, 0x0F } }, // 6D m
|
||||
{ 5, { 0x1F, 0x08, 0x10, 0x10, 0x0F } }, // 6E n
|
||||
{ 5, { 0x0E, 0x11, 0x11, 0x11, 0x0E } }, // 6F o
|
||||
{ 5, { 0x1F, 0x14, 0x14, 0x14, 0x08 } }, // 70 p
|
||||
{ 5, { 0x08, 0x14, 0x14, 0x14, 0x0F } }, // 71 q
|
||||
{ 5, { 0x1F, 0x08, 0x10, 0x10, 0x08 } }, // 72 r
|
||||
{ 5, { 0x09, 0x15, 0x15, 0x15, 0x02 } }, // 73 s
|
||||
{ 5, { 0x10, 0x7E, 0x11, 0x01, 0x02 } }, // 74 t
|
||||
{ 5, { 0x1E, 0x01, 0x01, 0x02, 0x1F } }, // 75 u
|
||||
{ 5, { 0x1C, 0x02, 0x01, 0x02, 0x1C } }, // 76 v
|
||||
{ 5, { 0x1E, 0x01, 0x02, 0x01, 0x1E } }, // 77 w
|
||||
{ 5, { 0x11, 0x0A, 0x04, 0x0A, 0x11 } }, // 78 x
|
||||
{ 5, { 0x18, 0x05, 0x05, 0x05, 0x1E } }, // 79 y
|
||||
{ 5, { 0x11, 0x13, 0x15, 0x19, 0x11 } }, // 7A z
|
||||
{ 3, { 0x08, 0x36, 0x41 } }, // 7B {
|
||||
{ 1, { 0x7F } }, // 7C |
|
||||
{ 3, { 0x41, 0x36, 0x08 } }, // 7D }
|
||||
{ 5, { 0x08, 0x10, 0x08, 0x04, 0x08 } }, // 7E ~
|
||||
{ 0, {} }, // 7F DEL
|
||||
{ 0, {} }, // 80 PAD
|
||||
{ 0, {} }, // 81 HOP
|
||||
{ 0, {} }, // 82 BPH
|
||||
{ 0, {} }, // 83 NBH
|
||||
{ 0, {} }, // 84 IND
|
||||
{ 0, {} }, // 85 NEL
|
||||
{ 0, {} }, // 86 SSA
|
||||
{ 0, {} }, // 87 ESA
|
||||
{ 0, {} }, // 88 HTS
|
||||
{ 0, {} }, // 89 HTJ
|
||||
{ 0, {} }, // 8A VTS
|
||||
{ 0, {} }, // 8B PLD
|
||||
{ 0, {} }, // 8C PLU
|
||||
{ 0, {} }, // 8D RI
|
||||
{ 0, {} }, // 8E SS2
|
||||
{ 0, {} }, // 8F SS3
|
||||
{ 0, {} }, // 90 DCS
|
||||
{ 0, {} }, // 91 PU1
|
||||
{ 0, {} }, // 92 PU2
|
||||
{ 0, {} }, // 93 STS
|
||||
{ 0, {} }, // 94 CCH
|
||||
{ 0, {} }, // 95 MW
|
||||
{ 0, {} }, // 96 SPA
|
||||
{ 0, {} }, // 97 EPA
|
||||
{ 0, {} }, // 98 SOS
|
||||
{ 0, {} }, // 99 SGCI
|
||||
{ 0, {} }, // 9A SCI
|
||||
{ 0, {} }, // 9B CSI
|
||||
{ 0, {} }, // 9C ST
|
||||
{ 0, {} }, // 9D OSC
|
||||
{ 0, {} }, // 9E PM
|
||||
{ 0, {} }, // 9F APC
|
||||
{ 1, { 0x00 } }, // A0 NBSP
|
||||
{ 1, { 0x5F } }, // A1 ¡
|
||||
{ 0, {} }, // A2 ¢
|
||||
{ 5, { 0x09, 0x3F, 0x69, 0x69, 0x21 } }, // A3 £
|
||||
{ 5, { 0x14, 0x3E, 0x55, 0x41, 0x22 } }, // A4 €
|
||||
{ 5, { 0x74, 0x0C, 0x07, 0x0C, 0x74 } }, // A5 ¥
|
||||
{ 0, {} }, // A6 Š
|
||||
{ 4, { 0x29, 0x55, 0x55, 0x4A} }, // A7 §
|
||||
{ 0, {} }, // A8 š
|
||||
{ 7, { 0x3E, 0x41, 0x5D, 0x55, 0x55, 0x41, 0x3E } }, // A9 ©
|
||||
{ 0, {} }, // AA ª
|
||||
{ 5, { 0x04, 0x0A, 0x00, 0x04, 0x0A } }, // AB «
|
||||
{ 4, { 0x08, 0x08, 0x08, 0x06 } }, // AC ¬
|
||||
{ 0, {} }, // AD SHY
|
||||
{ 7, { 0x3E, 0x41, 0x5D, 0x59, 0x55, 0x41, 0x3E } }, // AE ®
|
||||
{ 3, { 0x02, 0x02, 0x02 } }, // AF ¯
|
||||
{ 3, { 0x20, 0x50, 0x20 } }, // B0 °
|
||||
{ 3, { 0x12, 0x3A, 0x12 } }, // B1 ±
|
||||
{ 3, { 0x48, 0x58, 0x28 } }, // B2 ²
|
||||
{ 3, { 0x48, 0x68, 0x30 } }, // B3 ³
|
||||
{ 0, {} }, // B4 Ž
|
||||
{ 4, { 0x0F, 0x02, 0x02, 0x0E } }, // B5 µ
|
||||
{ 5, { 0x30, 0x78, 0x7F, 0x40, 0x7F } }, // B6 ¶
|
||||
{ 1, { 0x08 } }, // B7 ·
|
||||
{ 0, {} }, // B8 ž
|
||||
{ 3, { 0x28, 0x78, 0x08 } }, // B9 ¹
|
||||
{ 0, {} }, // BA º
|
||||
{ 5, { 0x0A, 0x04, 0x00, 0x0A, 0x04 } }, // BB »
|
||||
{ 6, { 0x3E, 0x41, 0x41, 0x7F, 0x49, 0x49 } }, // BC Œ
|
||||
{ 5, { 0x0E, 0x11, 0x11, 0x0E, 0x15, 0x0C } }, // BD œ
|
||||
{ 0, {} }, // BE Ÿ
|
||||
{ 5, { 0x06, 0x09, 0x51, 0x01, 0x02 } }, // BF ¿
|
||||
{ 0, {} }, // C0 À
|
||||
{ 0, {} }, // C1 Á
|
||||
{ 0, {} }, // C2 Â
|
||||
{ 0, {} }, // C3 Ã
|
||||
{ 5, { 0x1F, 0x64, 0x24, 0x64, 0x1F } }, // C4 Ä
|
||||
{ 0, {} }, // C5 Å
|
||||
{ 6, { 0x3F, 0x48, 0x48, 0x7F, 0x49, 0x49 } }, // C6 Æ
|
||||
{ 0, {} }, // C7 Ç
|
||||
{ 0, {} }, // C8 È
|
||||
{ 0, {} }, // C9 É
|
||||
{ 0, {} }, // CA Ê
|
||||
{ 0, {} }, // CB Ë
|
||||
{ 0, {} }, // CC Ì
|
||||
{ 0, {} }, // CD Í
|
||||
{ 0, {} }, // CE Î
|
||||
{ 0, {} }, // CF Ï
|
||||
{ 5, { 0x08, 0x7F, 0x49, 0x41, 0x3E } }, // D0 Ð
|
||||
{ 0, {} }, // D1 Ñ
|
||||
{ 0, {} }, // D2 Ò
|
||||
{ 0, {} }, // D3 Ó
|
||||
{ 0, {} }, // D4 Ô
|
||||
{ 0, {} }, // D5 Õ
|
||||
{ 5, { 0x1E, 0x61, 0x21, 0x61, 0x1E } }, // D6 Ö
|
||||
{ 5, { 0x0A, 0x04, 0x0A } }, // D7 ×
|
||||
{ 0, {} }, // D8 Ø
|
||||
{ 0, {} }, // D9 Ù
|
||||
{ 0, {} }, // DA Ú
|
||||
{ 0, {} }, // DB Û
|
||||
{ 5, { 0x3E, 0x41, 0x01, 0x41, 0x3E } }, // DC Ü
|
||||
{ 0, {} }, // DD Ý
|
||||
{ 4, { 0x7F, 0x28, 0x28, 0x10 } }, // DE Þ
|
||||
{ 4, { 0x3F, 0x40, 0x49, 0x36 } }, // DF ß
|
||||
{ 0, {} }, // E0 à
|
||||
{ 0, {} }, // E1 á
|
||||
{ 0, {} }, // E2 â
|
||||
{ 0, {} }, // E3 ã
|
||||
{ 5, { 0x02, 0x55, 0x15, 0x55, 0x0F } }, // E4 ä
|
||||
{ 0, {} }, // E5 å
|
||||
{ 7, { 0x02, 0x15, 0x15, 0x0E, 0x15, 0x15, 0x0C } }, // E6 æ
|
||||
{ 0, {} }, // E7 ç
|
||||
{ 0, {} }, // E8 è
|
||||
{ 0, {} }, // E9 é
|
||||
{ 0, {} }, // EA ê
|
||||
{ 0, {} }, // EB ë
|
||||
{ 0, {} }, // EC ì
|
||||
{ 0, {} }, // ED í
|
||||
{ 0, {} }, // EE î
|
||||
{ 0, {} }, // EF ï
|
||||
{ 0, {} }, // F0 ð
|
||||
{ 0, {} }, // F1 ñ
|
||||
{ 0, {} }, // F2 ò
|
||||
{ 0, {} }, // F3 ó
|
||||
{ 0, {} }, // F4 ô
|
||||
{ 0, {} }, // F5 õ
|
||||
{ 5, { 0x0E, 0x51, 0x11, 0x51, 0x0E } }, // F6 ö
|
||||
{ 5, { 0x08, 0x08, 0x2A, 0x08, 0x08 } }, // F7 ÷
|
||||
{ 0, {} }, // F8 ø
|
||||
{ 0, {} }, // F9 ù
|
||||
{ 0, {} }, // FA ú
|
||||
{ 0, {} }, // FB û
|
||||
{ 5, { 0x1E, 0x41, 0x01, 0x42, 0x1F } }, // FC ü
|
||||
{ 0, {} }, // FD ý
|
||||
{ 4, { 0x7F, 0x14, 0x14, 0x08 } }, // FE þ
|
||||
{ 5, { 0x18, 0x45, 0x05, 0x45, 0x1E } }, // FF ÿ
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
98
src/main.cpp
98
src/main.cpp
|
@ -1,78 +1,116 @@
|
|||
#include "font.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <avr/cpufunc.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#include "font.h"
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
|
||||
const int WIDTH = 120;
|
||||
const int LINES = 7;
|
||||
const int LINE_PINS[7] = { 2, 3, 4, 5, 6, 7, 8 };
|
||||
int pixel_width(String const & text);
|
||||
void shiftout(uint8_t const bit);
|
||||
int write_letter_at(int col, uint8_t const letter);
|
||||
void letters(int pos);
|
||||
void receive_serial();
|
||||
|
||||
int const WIDTH = 120;
|
||||
int const LINES = 7;
|
||||
int const CHAR_GAP = 1;
|
||||
int const LINE_PINS[7] = { 2, 3, 4, 5, 6, 7, 8 };
|
||||
|
||||
uint8_t buffer[120];
|
||||
String message = "9600N1 ISO8859-15 https://github.com/silentium83/zielanzeige/tree/develop";
|
||||
String newMessage;
|
||||
int messageLength = pixel_width(message);
|
||||
int ticks = 0;
|
||||
int runde = 120;
|
||||
int turn = 120;
|
||||
|
||||
int pixel_width(String const & text) {
|
||||
int width = 0;
|
||||
for (unsigned int i = 0; i < text.length(); ++i) {
|
||||
uint8_t const charWidth = pgm_read_byte(&font_var_width[(uint8_t)(text[i])].width);
|
||||
if (charWidth) {
|
||||
if (width < INT_MAX - CHAR_GAP - charWidth) {
|
||||
width += charWidth + CHAR_GAP;
|
||||
} else {
|
||||
return INT_MAX;
|
||||
}
|
||||
}
|
||||
}
|
||||
width -= CHAR_GAP;
|
||||
if (width < 0) {
|
||||
width = 0;
|
||||
}
|
||||
return width;
|
||||
}
|
||||
|
||||
// Shift register needs to use raw AVR
|
||||
// B1 is clock
|
||||
// B2 is data
|
||||
void shiftout(uint8_t bit) {
|
||||
void shiftout(uint8_t const bit) {
|
||||
PORTB = bit << 2;
|
||||
PORTB |= 0x02;
|
||||
PORTB = 0;
|
||||
}
|
||||
|
||||
void write_letter_at(int startcol, uint8_t letter) {
|
||||
for (int_fast8_t x = 0; x < 5; x++) {
|
||||
int col = startcol + x;
|
||||
int write_letter_at(int col, uint8_t const letter) {
|
||||
uint8_t charWidth = pgm_read_byte(&font_var_width[letter].width);
|
||||
for (int_fast8_t x = 0; x < charWidth; ++x) {
|
||||
if (col >= 0 && col < WIDTH) {
|
||||
buffer[col] = pgm_read_byte(&font_5x7_col[letter][x]);
|
||||
buffer[col] = pgm_read_byte(&font_var_width[letter].columns[x]);
|
||||
} else if (col >= WIDTH) {
|
||||
return col;
|
||||
}
|
||||
++col;
|
||||
}
|
||||
col += CHAR_GAP;
|
||||
return col;
|
||||
}
|
||||
|
||||
void letters(int round) {
|
||||
for (int i = 0; i < WIDTH; i++) {
|
||||
void letters(int pos) {
|
||||
for (int i = 0; i < WIDTH; ++i) {
|
||||
buffer[i] = 0;
|
||||
}
|
||||
|
||||
int pos = 0;
|
||||
for (unsigned int c = 0; c < message.length(); c++) {
|
||||
write_letter_at(round + pos, message[c]);
|
||||
pos += 6;
|
||||
for (unsigned int c = 0; c < message.length() && pos < WIDTH; ++c) {
|
||||
pos = write_letter_at(pos, message[c]);
|
||||
}
|
||||
}
|
||||
|
||||
void receive_serial() {
|
||||
while (Serial.available() > 0) {
|
||||
char receivedChar = Serial.read();
|
||||
char const receivedChar = Serial.read();
|
||||
switch (receivedChar) {
|
||||
case '\b': // backspace
|
||||
if (newMessage.length() > 0) {
|
||||
newMessage.remove(newMessage.length() - 1);
|
||||
Serial.write("\b ");
|
||||
}
|
||||
break;
|
||||
case '\n': // newline
|
||||
case '\r': // carriage return
|
||||
if (newMessage.length() > 0) {
|
||||
if (message != newMessage) {
|
||||
message = newMessage;
|
||||
messageLength = pixel_width(message);
|
||||
ticks = 0;
|
||||
runde = 120;
|
||||
turn = 120;
|
||||
}
|
||||
newMessage = "";
|
||||
}
|
||||
Serial.print(message);
|
||||
break;
|
||||
case '\r': // carriage return
|
||||
break;
|
||||
default:
|
||||
newMessage += receivedChar;
|
||||
break;
|
||||
}
|
||||
Serial.write(receivedChar);
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
for (uint_fast8_t i = 2; i <= 10; i++) {
|
||||
for (uint_fast8_t i = 2; i <= 10; ++i) {
|
||||
pinMode(i, OUTPUT);
|
||||
}
|
||||
pinMode(13, OUTPUT);
|
||||
|
@ -81,9 +119,9 @@ void setup() {
|
|||
}
|
||||
|
||||
void loop() {
|
||||
for (uint_fast8_t y = 0; y < LINES; y++) {
|
||||
for (uint_fast8_t x = 0; x < WIDTH; x++) {
|
||||
uint8_t bit = (buffer[x] & (1 << y)) ? 1 : 0;
|
||||
for (uint_fast8_t y = 0; y < LINES; ++y) {
|
||||
for (uint_fast8_t x = 0; x < WIDTH; ++x) {
|
||||
uint8_t const bit = (buffer[x] & (1 << y)) ? 1 : 0;
|
||||
shiftout(bit);
|
||||
}
|
||||
|
||||
|
@ -94,19 +132,19 @@ void loop() {
|
|||
digitalWrite(LINE_PINS[y], 0);
|
||||
}
|
||||
|
||||
ticks++;
|
||||
++ticks;
|
||||
if (ticks == 8) {
|
||||
ticks = 0;
|
||||
if ((6 * (int)message.length()) > 120) {
|
||||
runde--;
|
||||
if (messageLength > 120) {
|
||||
--turn;
|
||||
|
||||
letters(runde);
|
||||
letters(turn);
|
||||
|
||||
if (runde == -(6 * (int)message.length())) {
|
||||
runde = 120;
|
||||
if (turn == -messageLength) {
|
||||
turn = 120;
|
||||
}
|
||||
} else {
|
||||
int padding = (120 - (6 * (int)message.length())) / 2;
|
||||
int const padding = (120 - messageLength) / 2;
|
||||
|
||||
letters(padding);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue