fixed characters drawing orientation and array handling
This commit is contained in:
@@ -0,0 +1,943 @@
|
||||
constexpr bool font7x5[95][7][5] = {
|
||||
// ! (ASCII 33)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// " (ASCII 34)
|
||||
{
|
||||
{false, true, false, true, false},
|
||||
{false, true, false, true, false},
|
||||
{false, true, false, true, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// # (ASCII 35)
|
||||
{
|
||||
{false, true, false, true, false},
|
||||
{false, true, false, true, false},
|
||||
{true, true, true, true, true},
|
||||
{false, true, false, true, false},
|
||||
{true, true, true, true, true},
|
||||
{false, true, false, true, false},
|
||||
{false, true, false, true, false}
|
||||
},
|
||||
// $ (ASCII 36)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, true, true},
|
||||
{true, false, true, false, false},
|
||||
{false, true, true, true, false},
|
||||
{false, false, true, false, true},
|
||||
{true, true, true, true, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// % (ASCII 37)
|
||||
{
|
||||
{true, true, false, false, true},
|
||||
{true, true, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, false, true, true},
|
||||
{true, false, false, true, true}
|
||||
},
|
||||
// & (ASCII 38)
|
||||
{
|
||||
{false, true, true, false, false},
|
||||
{true, false, false, true, false},
|
||||
{true, false, false, true, false},
|
||||
{false, true, true, false, false},
|
||||
{true, false, true, false, true},
|
||||
{true, false, false, true, false},
|
||||
{false, true, true, false, true}
|
||||
},
|
||||
// ' (ASCII 39)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// ( (ASCII 40)
|
||||
{
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false}
|
||||
},
|
||||
// ) (ASCII 41)
|
||||
{
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false}
|
||||
},
|
||||
// * (ASCII 42)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, true, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// + (ASCII 43)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// , (ASCII 44)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, true, false},
|
||||
{false, false, true, true, false},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// - (ASCII 45)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// . (ASCII 46)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// / (ASCII 47)
|
||||
{
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false}
|
||||
},
|
||||
// 0 (ASCII 48)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, true, true},
|
||||
{true, false, true, false, true},
|
||||
{true, true, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 1 (ASCII 49)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 2 (ASCII 50)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// 3 (ASCII 51)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, true, true, false},
|
||||
{false, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 4 (ASCII 52)
|
||||
{
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, true, false},
|
||||
{false, true, false, true, false},
|
||||
{true, false, false, true, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false}
|
||||
},
|
||||
// 5 (ASCII 53)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 6 (ASCII 54)
|
||||
{
|
||||
{false, false, true, true, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 7 (ASCII 55)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false}
|
||||
},
|
||||
// 8 (ASCII 56)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// 9 (ASCII 57)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// : (ASCII 58)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// ; (ASCII 59)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, true, false},
|
||||
{false, false, true, true, false},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// < (ASCII 60)
|
||||
{
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false}
|
||||
},
|
||||
// = (ASCII 61)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// > (ASCII 62)
|
||||
{
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false}
|
||||
},
|
||||
// ? (ASCII 63)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// @ (ASCII 64)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, true, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, true, true},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// A (ASCII 65)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// B (ASCII 66)
|
||||
{
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false}
|
||||
},
|
||||
// C (ASCII 67)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// D (ASCII 68)
|
||||
{
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false}
|
||||
},
|
||||
// E (ASCII 69)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// F (ASCII 70)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false}
|
||||
},
|
||||
// G (ASCII 71)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, true, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true}
|
||||
},
|
||||
// H (ASCII 72)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// I (ASCII 73)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// J (ASCII 74)
|
||||
{
|
||||
{false, false, true, true, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{true, false, false, true, false},
|
||||
{false, true, true, false, false}
|
||||
},
|
||||
// K (ASCII 75)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, true, false},
|
||||
{true, false, true, false, false},
|
||||
{true, true, false, false, false},
|
||||
{true, false, true, false, false},
|
||||
{true, false, false, true, false},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// L (ASCII 76)
|
||||
{
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// M (ASCII 77)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, true, false, true, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// N (ASCII 78)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, false, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, false, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// O (ASCII 79)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// P (ASCII 80)
|
||||
{
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false}
|
||||
},
|
||||
// Q (ASCII 81)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, false, true, false},
|
||||
{false, true, true, false, true}
|
||||
},
|
||||
// R (ASCII 82)
|
||||
{
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false},
|
||||
{true, false, true, false, false},
|
||||
{true, false, false, true, false},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// S (ASCII 83)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{false, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// T (ASCII 84)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// U (ASCII 85)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// V (ASCII 86)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// W (ASCII 87)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, true, false, true, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// X (ASCII 88)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// Y (ASCII 89)
|
||||
{
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// Z (ASCII 90)
|
||||
{
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// [ (ASCII 91)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// \ (ASCII 92)
|
||||
{
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, false, true}
|
||||
},
|
||||
// ] (ASCII 93)
|
||||
{
|
||||
{false, true, true, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// ^ (ASCII 94)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, true, false},
|
||||
{true, false, false, false, true},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// _ (ASCII 95)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// ` (ASCII 96)
|
||||
{
|
||||
{false, true, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
},
|
||||
// a (ASCII 97)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{false, false, false, false, true},
|
||||
{false, true, true, true, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true}
|
||||
},
|
||||
// b (ASCII 98)
|
||||
{
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, true, true, false},
|
||||
{true, true, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false}
|
||||
},
|
||||
// c (ASCII 99)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// d (ASCII 100)
|
||||
{
|
||||
{false, false, false, false, true},
|
||||
{false, false, false, false, true},
|
||||
{false, true, true, false, true},
|
||||
{true, false, false, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true}
|
||||
},
|
||||
// e (ASCII 101)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, true},
|
||||
{true, false, false, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// f (ASCII 102)
|
||||
{
|
||||
{false, false, true, true, false},
|
||||
{false, true, false, false, true},
|
||||
{false, true, false, false, false},
|
||||
{true, true, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false}
|
||||
},
|
||||
// g (ASCII 103)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true},
|
||||
{false, false, false, false, true},
|
||||
// Note: This would typically have a 7th row showing the descender
|
||||
},
|
||||
// h (ASCII 104)
|
||||
{
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, true, true, false},
|
||||
{true, true, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// i (ASCII 105)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// j (ASCII 106)
|
||||
{
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, true, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, true, false},
|
||||
{true, false, false, true, false}
|
||||
},
|
||||
// k (ASCII 107)
|
||||
{
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, true, false},
|
||||
{true, false, true, false, false},
|
||||
{true, true, false, false, false},
|
||||
{true, false, true, false, false},
|
||||
{true, false, false, true, false}
|
||||
},
|
||||
// l (ASCII 108)
|
||||
{
|
||||
{false, true, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// m (ASCII 109)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, false, true, false},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true}
|
||||
},
|
||||
// n (ASCII 110)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, true, true, false},
|
||||
{true, true, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// o (ASCII 111)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, false}
|
||||
},
|
||||
// p (ASCII 112)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, true, true, true, false},
|
||||
{true, false, false, false, false}
|
||||
},
|
||||
// q (ASCII 113)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, false, true},
|
||||
{true, false, false, true, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true},
|
||||
{false, false, false, false, true}
|
||||
},
|
||||
// r (ASCII 114)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, true, true, false},
|
||||
{true, true, false, false, true},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false},
|
||||
{true, false, false, false, false}
|
||||
},
|
||||
// s (ASCII 115)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{true, false, false, false, false},
|
||||
{false, true, true, true, false},
|
||||
{false, false, false, false, true},
|
||||
{true, true, true, true, false}
|
||||
},
|
||||
// t (ASCII 116)
|
||||
{
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, true, true, true, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, true, false, false, true},
|
||||
{false, false, true, true, false}
|
||||
},
|
||||
// u (ASCII 117)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, true, true},
|
||||
{false, true, true, false, true}
|
||||
},
|
||||
// v (ASCII 118)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// w (ASCII 119)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, true, false, true},
|
||||
{true, false, true, false, true},
|
||||
{false, true, false, true, false}
|
||||
},
|
||||
// x (ASCII 120)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{false, true, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, true, false},
|
||||
{true, false, false, false, true}
|
||||
},
|
||||
// y (ASCII 121)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{true, false, false, false, true},
|
||||
{false, true, true, true, true},
|
||||
{false, false, false, false, true}
|
||||
},
|
||||
// z (ASCII 122)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{true, true, true, true, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, true, true, true, true}
|
||||
},
|
||||
// { (ASCII 123)
|
||||
{
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false}
|
||||
},
|
||||
// | (ASCII 124)
|
||||
{
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false}
|
||||
},
|
||||
// } (ASCII 125)
|
||||
{
|
||||
{false, true, false, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, false, true, false},
|
||||
{false, false, true, false, false},
|
||||
{false, false, true, false, false},
|
||||
{false, true, false, false, false}
|
||||
},
|
||||
// ~ (ASCII 126)
|
||||
{
|
||||
{false, false, false, false, false},
|
||||
{false, true, false, false, false},
|
||||
{true, false, true, false, true},
|
||||
{false, false, false, true, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false},
|
||||
{false, false, false, false, false}
|
||||
}
|
||||
};
|
||||
@@ -3,10 +3,7 @@
|
||||
#include <WebServer.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include "index.h"
|
||||
|
||||
// For ESP8266, you would use:
|
||||
// #include <ESP8266WiFi.h>
|
||||
// #include <ESP8266WebServer.h>
|
||||
#include "fonts.h"
|
||||
|
||||
#ifdef __AVR__
|
||||
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
|
||||
@@ -19,70 +16,63 @@
|
||||
|
||||
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
|
||||
|
||||
struct Pixel
|
||||
{
|
||||
unsigned short x = 0;
|
||||
unsigned short y = 0;
|
||||
uint32_t color;
|
||||
};
|
||||
unsigned char saved_images_count = 0;
|
||||
|
||||
Pixel new_image[PANEL_PIXEL_COUNT][PANEL_PIXEL_COUNT];
|
||||
|
||||
// dont change this
|
||||
Pixel saved_imaged[12][16][16] = {
|
||||
uint32_t saved_imaged[12][16][16] = {
|
||||
{
|
||||
{
|
||||
{0, 0, 0xFF000000}, {1, 0, 0xFF000000}, {2, 0, 0xFF000000}, {3, 0, 0xFF000000}, {4, 0, 0xFF000000}, {5, 0, 0xFF000000}, {6, 0, 0xFF000000}, {7, 0, 0xFF000000}, {8, 0, 0xFF000000}, {9, 0, 0xFF000000}, {10, 0, 0xFF000000}, {11, 0, 0xFF000000}, {12, 0, 0xFF000000}, {13, 0, 0xFF000000}, {14, 0, 0xFF000000}, {15, 0, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 1, 0xFF000000}, {1, 1, 0xFF000000}, {2, 1, 0xFF000000}, {3, 1, 0xFF000000}, {4, 1, 0xFF000000}, {5, 1, 0xFF000000}, {6, 1, 0xFF000000}, {7, 1, 0xFF000000}, {8, 1, 0xFF000000}, {9, 1, 0xFF000000}, {10, 1, 0xFF000000}, {11, 1, 0xFF000000}, {12, 1, 0xFF000000}, {13, 1, 0xFF000000}, {14, 1, 0xFF000000}, {15, 1, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 2, 0xFF000000}, {1, 2, 0xFF000000}, {2, 2, 0xFF000000}, {3, 2, 0xFF000000}, {4, 2, 0xFF000000}, {5, 2, 0xFFFFFF00}, {6, 2, 0xFFFFFF00}, {7, 2, 0xFFFFFF00}, {8, 2, 0xFFFFFF00}, {9, 2, 0xFFFFFF00}, {10, 2, 0xFFFFFF00}, {11, 2, 0xFF000000}, {12, 2, 0xFF000000}, {13, 2, 0xFF000000}, {14, 2, 0xFF000000}, {15, 2, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 3, 0xFF000000}, {1, 3, 0xFF000000}, {2, 3, 0xFF000000}, {3, 3, 0xFFFFFF00}, {4, 3, 0xFFFFFF00}, {5, 3, 0xFFFFFF00}, {6, 3, 0xFFFFFF00}, {7, 3, 0xFFFFFF00}, {8, 3, 0xFFFFFF00}, {9, 3, 0xFFFFFF00}, {10, 3, 0xFFFFFF00}, {11, 3, 0xFFFFFF00}, {12, 3, 0xFFFFFF00}, {13, 3, 0xFF000000}, {14, 3, 0xFF000000}, {15, 3, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 4, 0xFF000000}, {1, 4, 0xFF000000}, {2, 4, 0xFF000000}, {3, 4, 0xFFFFFF00}, {4, 4, 0xFFFFFF00}, {5, 4, 0xFFFFFF00}, {6, 4, 0xFFFFFF00}, {7, 4, 0xFFFFFF00}, {8, 4, 0xFFFFFF00}, {9, 4, 0xFFFFFF00}, {10, 4, 0xFFFFFF00}, {11, 4, 0xFFFFFF00}, {12, 4, 0xFFFFFF00}, {13, 4, 0xFF000000}, {14, 4, 0xFF000000}, {15, 4, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 5, 0xFF000000}, {1, 5, 0xFF000000}, {2, 5, 0xFFFFFF00}, {3, 5, 0xFFFFFF00}, {4, 5, 0xFF000000}, {5, 5, 0xFF000000}, {6, 5, 0xFFFFFF00}, {7, 5, 0xFFFFFF00}, {8, 5, 0xFFFFFF00}, {9, 5, 0xFFFFFF00}, {10, 5, 0xFF000000}, {11, 5, 0xFF000000}, {12, 5, 0xFFFFFF00}, {13, 5, 0xFFFFFF00}, {14, 5, 0xFF000000}, {15, 5, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 6, 0xFF000000}, {1, 6, 0xFF000000}, {2, 6, 0xFFFFFF00}, {3, 6, 0xFFFFFF00}, {4, 6, 0xFF000000}, {5, 6, 0xFF000000}, {6, 6, 0xFFFFFF00}, {7, 6, 0xFFFFFF00}, {8, 6, 0xFFFFFF00}, {9, 6, 0xFFFFFF00}, {10, 6, 0xFF000000}, {11, 6, 0xFF000000}, {12, 6, 0xFFFFFF00}, {13, 6, 0xFFFFFF00}, {14, 6, 0xFF000000}, {15, 6, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 7, 0xFF000000}, {1, 7, 0xFF000000}, {2, 7, 0xFFFFFF00}, {3, 7, 0xFFFFFF00}, {4, 7, 0xFF000000}, {5, 7, 0xFF000000}, {6, 7, 0xFFFFFF00}, {7, 7, 0xFFFFFF00}, {8, 7, 0xFFFFFF00}, {9, 7, 0xFFFFFF00}, {10, 7, 0xFF000000}, {11, 7, 0xFF000000}, {12, 7, 0xFFFFFF00}, {13, 7, 0xFFFFFF00}, {14, 7, 0xFF000000}, {15, 7, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 8, 0xFF000000}, {1, 8, 0xFF000000}, {2, 8, 0xFFFFFF00}, {3, 8, 0xFFFFFF00}, {4, 8, 0xFFFFFF00}, {5, 8, 0xFFFFFF00}, {6, 8, 0xFFFFFF00}, {7, 8, 0xFFFFFF00}, {8, 8, 0xFFFFFF00}, {9, 8, 0xFFFFFF00}, {10, 8, 0xFFFFFF00}, {11, 8, 0xFFFFFF00}, {12, 8, 0xFFFFFF00}, {13, 8, 0xFFFFFF00}, {14, 8, 0xFF000000}, {15, 8, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 9, 0xFF000000}, {1, 9, 0xFF000000}, {2, 9, 0xFFFFFF00}, {3, 9, 0xFFFFFF00}, {4, 9, 0xFFFFFF00}, {5, 9, 0xFFFFFF00}, {6, 9, 0xFFFFFF00}, {7, 9, 0xFFFFFF00}, {8, 9, 0xFF000000}, {9, 9, 0xFF000000}, {10, 9, 0xFFFFFF00}, {11, 9, 0xFFFFFF00}, {12, 9, 0xFFFFFF00}, {13, 9, 0xFFFFFF00}, {14, 9, 0xFF000000}, {15, 9, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 10, 0xFF000000}, {1, 10, 0xFF000000}, {2, 10, 0xFFFFFF00}, {3, 10, 0xFFFFFF00}, {4, 10, 0xFFFFFF00}, {5, 10, 0xFFFFFF00}, {6, 10, 0xFFFFFF00}, {7, 10, 0xFF000000}, {8, 10, 0xFF000000}, {9, 10, 0xFFFFFF00}, {10, 10, 0xFF000000}, {11, 10, 0xFFFFFF00}, {12, 10, 0xFFFFFF00}, {13, 10, 0xFFFFFF00}, {14, 10, 0xFF000000}, {15, 10, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 11, 0xFF000000}, {1, 11, 0xFF000000}, {2, 11, 0xFF000000}, {3, 11, 0xFFFFFF00}, {4, 11, 0xFFFFFF00}, {5, 11, 0xFFFFFF00}, {6, 11, 0xFFFFFF00}, {7, 11, 0xFF000000}, {8, 11, 0xFF000000}, {9, 11, 0xFFFFFF00}, {10, 11, 0xFF000000}, {11, 11, 0xFFFFFF00}, {12, 11, 0xFFFFFF00}, {13, 11, 0xFF000000}, {14, 11, 0xFF000000}, {15, 11, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 12, 0xFF000000}, {1, 12, 0xFF000000}, {2, 12, 0xFF000000}, {3, 12, 0xFFFFFF00}, {4, 12, 0xFFFFFF00}, {5, 12, 0xFFFFFF00}, {6, 12, 0xFFFFFF00}, {7, 12, 0xFFFFFF00}, {8, 12, 0xFF000000}, {9, 12, 0xFF000000}, {10, 12, 0xFFFFFF00}, {11, 12, 0xFFFFFF00}, {12, 12, 0xFFFFFF00}, {13, 12, 0xFF000000}, {14, 12, 0xFF000000}, {15, 12, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 13, 0xFF000000}, {1, 13, 0xFF000000}, {2, 13, 0xFF000000}, {3, 13, 0xFF000000}, {4, 13, 0xFF000000}, {5, 13, 0xFFFFFF00}, {6, 13, 0xFFFFFF00}, {7, 13, 0xFFFFFF00}, {8, 13, 0xFFFFFF00}, {9, 13, 0xFFFFFF00}, {10, 13, 0xFFFFFF00}, {11, 13, 0xFF000000}, {12, 13, 0xFF000000}, {13, 13, 0xFF000000}, {14, 13, 0xFF000000}, {15, 13, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFFFFFF00, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 14, 0xFF000000}, {1, 14, 0xFF000000}, {2, 14, 0xFF000000}, {3, 14, 0xFF000000}, {4, 14, 0xFF000000}, {5, 14, 0xFF000000}, {6, 14, 0xFF000000}, {7, 14, 0xFF000000}, {8, 14, 0xFF000000}, {9, 14, 0xFF000000}, {10, 14, 0xFF000000}, {11, 14, 0xFF000000}, {12, 14, 0xFF000000}, {13, 14, 0xFF000000}, {14, 14, 0xFF000000}, {15, 14, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
},
|
||||
{
|
||||
{0, 15, 0xFF000000}, {1, 15, 0xFF000000}, {2, 15, 0xFF000000}, {3, 15, 0xFF000000}, {4, 15, 0xFF000000}, {5, 15, 0xFF000000}, {6, 15, 0xFF000000}, {7, 15, 0xFF000000}, {8, 15, 0xFF000000}, {9, 15, 0xFF000000}, {10, 15, 0xFF000000}, {11, 15, 0xFF000000}, {12, 15, 0xFF000000}, {13, 15, 0xFF000000}, {14, 15, 0xFF000000}, {15, 15, 0xFF000000}
|
||||
0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void setPixel(unsigned short x, unsigned short y, uint32_t color)
|
||||
|
||||
void setPixel(unsigned short y, unsigned short x, uint32_t color)
|
||||
{
|
||||
if (y % 2 == 1)
|
||||
{
|
||||
@@ -91,48 +81,35 @@ void setPixel(unsigned short x, unsigned short y, uint32_t color)
|
||||
pixels.setPixelColor(x + (y * PANEL_PIXEL_COUNT), color);
|
||||
}
|
||||
|
||||
Pixel getPixelFromSaved(unsigned char i, int row, int col)
|
||||
{
|
||||
return saved_imaged[i][row][col];
|
||||
}
|
||||
|
||||
Pixel getPixel(int row, int col)
|
||||
{
|
||||
return new_image[row][col];
|
||||
}
|
||||
|
||||
void drawImageFromArr(int offset_x, int offset_y) {
|
||||
void drawImageFromSaved(unsigned short offset_x, unsigned short offset_y, unsigned char i) {
|
||||
for (int row = 0; row < 16; row++) {
|
||||
for (int col = 0; col < 16; col++) {
|
||||
Pixel px = getPixel(row, col);
|
||||
if (px.color == 0) {
|
||||
uint32_t px_color = saved_imaged[i][row][col];
|
||||
if (!px_color) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int pixel_x = px.x + offset_x;
|
||||
int pixel_y = px.y + offset_y;
|
||||
unsigned short pixel_x = col + offset_x;
|
||||
unsigned short pixel_y = row + offset_y;
|
||||
|
||||
if (pixel_x >= 0 && pixel_x < PANEL_PIXEL_COUNT &&
|
||||
pixel_y >= 0 && pixel_y < PANEL_PIXEL_COUNT) {
|
||||
setPixel(pixel_x, pixel_y, px.color);
|
||||
setPixel(pixel_x, pixel_y, px_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void drawImageFromSaved(int offset_x, int offset_y, unsigned char i) {
|
||||
for (int row = 0; row < 16; row++) {
|
||||
for (int col = 0; col < 16; col++) {
|
||||
Pixel px = getPixelFromSaved(i, row, col);
|
||||
if (px.color == 0) {
|
||||
continue;
|
||||
}
|
||||
int pixel_x = px.x + offset_x;
|
||||
int pixel_y = px.y + offset_y;
|
||||
void drawCharacter(const bool (*character)[5], unsigned char offset_x, unsigned char offset_y, uint32_t color) {
|
||||
for (unsigned char row = 0; row < 7; row++) {
|
||||
for (unsigned char col = 0; col < 5; col++) {
|
||||
if (character[row][col]) {
|
||||
unsigned short pixel_x = col + offset_x;
|
||||
unsigned short pixel_y = row + offset_y;
|
||||
|
||||
if (pixel_x >= 0 && pixel_x < PANEL_PIXEL_COUNT &&
|
||||
pixel_y >= 0 && pixel_y < PANEL_PIXEL_COUNT) {
|
||||
setPixel(pixel_x, pixel_y, px.color);
|
||||
setPixel(pixel_x, pixel_y, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,10 +117,13 @@ void drawImageFromSaved(int offset_x, int offset_y, unsigned char i) {
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
pixels.begin();
|
||||
pixels.clear();
|
||||
|
||||
drawCharacter(font7x5[0], 7, 5, 0xFFFFFFFF);
|
||||
|
||||
pixels.show();
|
||||
drawImageFromSaved(0, 0, 0);
|
||||
start_server();
|
||||
}
|
||||
|
||||
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
padding: 20px;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.grid-container {
|
||||
display: inline-grid;
|
||||
grid-template-columns: repeat(5, 25px);
|
||||
gap: 5px;
|
||||
margin: 20px 0;
|
||||
padding: 10px;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.checkbox-cell {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.controls {
|
||||
margin: 20px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 10px 20px;
|
||||
font-size: 16px;
|
||||
cursor: pointer;
|
||||
background-color: #0969da;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #0860ca;
|
||||
}
|
||||
|
||||
.json-output {
|
||||
margin-top: 20px;
|
||||
padding: 15px;
|
||||
background-color: #f6f8fa;
|
||||
border: 1px solid #d0d7de;
|
||||
border-radius: 6px;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 12px;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.copy-button {
|
||||
background-color: #2da44e;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.copy-button:hover {
|
||||
background-color: #2c974b;
|
||||
}
|
||||
|
||||
.copied-message {
|
||||
color: #2da44e;
|
||||
margin-left: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="grid-container" id="checkboxGrid"></div>
|
||||
|
||||
<div class="controls">
|
||||
<button onclick="generateJSON()">Generate JSON</button>
|
||||
<button onclick="clearGrid()">Clear All</button>
|
||||
<button onclick="checkAll()">Check All</button>
|
||||
</div>
|
||||
|
||||
<div id="jsonOutputContainer" class="hidden">
|
||||
<h3>JSON Output:</h3>
|
||||
<div class="json-output" id="jsonOutput"></div>
|
||||
<button class="copy-button" onclick="copyToClipboard()">Copy to Clipboard</button>
|
||||
<span id="copiedMessage" class="copied-message hidden">✓ Copied!</span>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Initialize the 7x5 grid (7 rows, 5 columns)
|
||||
function initializeGrid() {
|
||||
const grid = document.getElementById('checkboxGrid');
|
||||
grid.innerHTML = '';
|
||||
|
||||
for (let i = 0; i < 7; i++) {
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const checkbox = document.createElement('input');
|
||||
checkbox.type = 'checkbox';
|
||||
checkbox.className = 'checkbox-cell';
|
||||
checkbox.dataset.row = i;
|
||||
checkbox.dataset.col = j;
|
||||
grid.appendChild(checkbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Generate JSON from checkbox states
|
||||
function generateJSON() {
|
||||
const checkboxes = document.querySelectorAll('.checkbox-cell');
|
||||
const grid = [];
|
||||
|
||||
// Create 2D array (7 rows x 5 columns)
|
||||
for (let i = 0; i < 7; i++) {
|
||||
grid[i] = [];
|
||||
for (let j = 0; j < 5; j++) {
|
||||
const checkbox = document.querySelector(`[data-row="${i}"][data-col="${j}"]`);
|
||||
grid[i][j] = checkbox.checked;
|
||||
}
|
||||
}
|
||||
|
||||
// Display JSON
|
||||
const jsonOutput = document.getElementById('jsonOutput');
|
||||
const jsonOutputContainer = document.getElementById('jsonOutputContainer');
|
||||
jsonOutput.textContent = JSON.stringify(grid, null, 2);
|
||||
jsonOutputContainer.classList.remove('hidden');
|
||||
|
||||
// Hide copied message
|
||||
document.getElementById('copiedMessage').classList.add('hidden');
|
||||
}
|
||||
|
||||
// Clear all checkboxes
|
||||
function clearGrid() {
|
||||
const checkboxes = document.querySelectorAll('.checkbox-cell');
|
||||
checkboxes.forEach(cb => cb.checked = false);
|
||||
}
|
||||
|
||||
// Check all checkboxes
|
||||
function checkAll() {
|
||||
const checkboxes = document.querySelectorAll('.checkbox-cell');
|
||||
checkboxes.forEach(cb => cb.checked = true);
|
||||
}
|
||||
|
||||
// Copy JSON to clipboard
|
||||
function copyToClipboard() {
|
||||
const jsonText = document.getElementById('jsonOutput').textContent;
|
||||
navigator.clipboard.writeText(jsonText).then(() => {
|
||||
const message = document.getElementById('copiedMessage');
|
||||
message.classList.remove('hidden');
|
||||
setTimeout(() => {
|
||||
message.classList.add('hidden');
|
||||
}, 2000);
|
||||
}).catch(err => {
|
||||
alert('Failed to copy to clipboard');
|
||||
console.error('Copy failed:', err);
|
||||
});
|
||||
}
|
||||
|
||||
// Initialize grid on page load
|
||||
initializeGrid();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+27
-2
@@ -1,8 +1,21 @@
|
||||
#include <WiFi.h>
|
||||
#include <WebServer.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
const char* ssid = "PPIA";
|
||||
const char* password = "pawelpdaldonejta";
|
||||
|
||||
WebServer server(80);
|
||||
|
||||
// Declare the new_image buffer to temporarily store uploaded image
|
||||
struct Pixel {
|
||||
unsigned short x;
|
||||
unsigned short y;
|
||||
uint32_t color;
|
||||
};
|
||||
|
||||
Pixel new_image[16][16];
|
||||
|
||||
void handleRoot() {
|
||||
server.send(200, "text/html", index_html);
|
||||
}
|
||||
@@ -20,15 +33,27 @@ void handleUpload() {
|
||||
for (JsonVariant val : arr) {
|
||||
int col = 0;
|
||||
for (JsonVariant val2 : val.as<JsonArray>()) {
|
||||
long color = strtol(val2.as<const char*>(), NULL, 16);
|
||||
unsigned long color = strtoul(val2.as<const char*>(), NULL, 16);
|
||||
new_image[row][col] = { (unsigned short)col, (unsigned short)row, (uint32_t)color };
|
||||
col++;
|
||||
}
|
||||
row++;
|
||||
}
|
||||
|
||||
// Save the new image to the next slot
|
||||
if (saved_images_count < 11) { // Ensure we don't overflow (max index is 11)
|
||||
saved_images_count++;
|
||||
}
|
||||
|
||||
// Copy new_image data to saved_imaged array
|
||||
for (int r = 0; r < 16; r++) {
|
||||
for (int c = 0; c < 16; c++) {
|
||||
saved_imaged[saved_images_count][r][c] = new_image[r][c].color;
|
||||
}
|
||||
}
|
||||
|
||||
pixels.clear();
|
||||
drawImageFromArr(0, 0);
|
||||
drawImageFromSaved(0, 0, saved_images_count);
|
||||
pixels.show();
|
||||
server.send(200, "text/plain", "OK");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user