defmodule TM1638.Font do
@moduledoc """
The bits are displayed by mapping bellow
-- 0 --
| |
5 1
| |
-- 6 --
| |
4 2
| |
-- 3 -- o 7
"""
@spec render(integer | binary) :: String.t()
def render(integer) when is_integer(integer), do: render(<<integer::8>>)
def render(<<a::1, b::1, c::1, d::1, e::1, f::1, g::1, h::1>>) do
"""
<%= if h == 1, do: "-- 0 --", else: " " %>
<%= if c == 1, do: "|", else: " " %> <%= if g == 1, do: "|", else: " " %>
<%= if c == 1, do: "5", else: " " %> <%= if g == 1, do: "1", else: " " %>
<%= if c == 1, do: "|", else: " " %> <%= if g == 1, do: "|", else: " " %>
<%= if b == 1, do: "-- 6 --", else: " " %>
<%= if d == 1, do: "|", else: " " %> <%= if f == 1, do: "|", else: " " %>
<%= if d == 1, do: "4", else: " " %> <%= if f == 1, do: "2", else: " " %>
<%= if d == 1, do: "|", else: " " %> <%= if f == 1, do: "|", else: " " %>
<%= if e == 1, do: "-- 3 --", else: " " %> <%= if a == 1, do: "o", else: " " %>
"""
|> EEx.eval_string(a: a, b: b, c: c, d: d, e: e, f: f, g: g, h: h)
end
def font do
%{
# (32) <space>
" " => 0b00000000,
# (33) !
"!" => 0b10000110,
# (34) "
"\"" => 0b00100010,
# (40) (
"(" => 0b00110000,
# (41) )
")" => 0b00000110,
# (44) ,
"," => 0b00000100,
# (45) -
"-" => 0b01000000,
# (46) .
"." => 0b10000000,
# (47) /
"/" => 0b01010010,
# (48) 0
"0" => 0b00111111,
# (49) 1
"1" => 0b00000110,
# (50) 2
"2" => 0b01011011,
# (51) 3
"3" => 0b01001111,
# (52) 4
"4" => 0b01100110,
# (53) 5
"5" => 0b01101101,
# (54) 6
"6" => 0b01111101,
# (55) 7
"7" => 0b00100111,
# (56) 8
"8" => 0b01111111,
# (57) 9
"9" => 0b01101111,
# (61) = \
"=" => 0b01001000,
# (63) ?
"?" => 0b01010011,
# (64) @
"@" => 0b01011111,
# (65) A
"A" => 0b01110111,
# (66) B
"B" => 0b01111111,
# (67) C
"C" => 0b00111001,
# (68) D
"D" => 0b00111111,
# (69) E
"E" => 0b01111001,
# (70) F
"F" => 0b01110001,
# (71) G
"G" => 0b00111101,
# (72) H
"H" => 0b01110110,
# (73) I
"I" => 0b00000110,
# (74) J
"J" => 0b00011111,
# (75) K
"K" => 0b01101001,
# (76) L
"L" => 0b00111000,
# (77) M
"M" => 0b00010101,
# (78) N
"N" => 0b00110111,
# (79) O
"O" => 0b00111111,
# (80) P
"P" => 0b01110011,
# (81) Q
"Q" => 0b01100111,
# (82) R
"R" => 0b00110001,
# (83) S
"S" => 0b01101101,
# (84) T
"T" => 0b01111000,
# (85) U
"U" => 0b00111110,
# (86) V
"V" => 0b00101010,
# (87) W
"W" => 0b00011101,
# (88) X
"X" => 0b01110110,
# (89) Y
"Y" => 0b01101110,
# (90) Z
"Z" => 0b01011011,
# (91) [ \
"[" => 0b00111001,
# (93) ]
"]" => 0b00001111,
# (95) _
"_" => 0b00001000,
# (96) `
"`" => 0b00100000,
# (97) a
"a" => 0b01011111,
# (98) b
"b" => 0b01111100,
# (99) c
"c" => 0b01011000,
# (100) d
"d" => 0b01011110,
# (101) e
"e" => 0b01111011,
# (102) f
"f" => 0b00110001,
# (103) g
"g" => 0b01101111,
# (104) h
"h" => 0b01110100,
# (105) i
"i" => 0b00000100,
# (106) j
"j" => 0b00001110,
# (107) k
"k" => 0b01110101,
# (108) l
"l" => 0b00110000,
# (109) m
"m" => 0b01010101,
# (110) n
"n" => 0b01010100,
# (111) o
"o" => 0b01011100,
# (112) p
"p" => 0b01110011,
# (113) q
"q" => 0b01100111,
# (114) r
"r" => 0b01010000,
# (115) s
"s" => 0b01101101,
# (116) t
"t" => 0b01111000,
# (117) u
"u" => 0b00011100,
# (118) v
"v" => 0b00101010,
# (119) w
"w" => 0b00011101,
# (120) x
"x" => 0b01110110,
# (121) y
"y" => 0b01101110,
# (122) z
"z" => 0b01000111,
# (123) { \
"{" => 0b01000110,
# (124) |
"|" => 0b00000110,
# (125) }
"}" => 0b01110000,
# (126) ~
"~" => 0b00000001
}
end
end