From dd7a1e935a77c2fc12a8930c4ba549efcb56d5b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Thu, 23 Jan 2025 23:07:21 +0100 Subject: [PATCH] printHeart --- src/display/Display.h | 178 +++++++++++++++++++++++++++++++++ src/mode/CountDown/CountDown.h | 1 + 2 files changed, 179 insertions(+) diff --git a/src/display/Display.h b/src/display/Display.h index e4ce958..bade88c 100644 --- a/src/display/Display.h +++ b/src/display/Display.h @@ -231,6 +231,184 @@ public: return countof(sym[0]); } + // TODO REMOVE QUICK & DIRTY + uint8_t printHeart(uint8_t xPos, uint8_t yPos) { + bool a[1][1] = { + {X}, + }; + bool b[3][3] = { + {X, _, X}, + {X, X, X}, + {_, X, _}, + }; + bool c[5][5] = { + {_, X, _, X, _}, + {X, _, X, _, X}, + {X, _, _, _, X}, + {_, X, _, X, _}, + {_, _, X, _, _}, + }; + bool d[7][7] = { + {_, X, X, _, X, X, _}, + {X, _, _, X, _, _, X}, + {X, _, _, _, _, _, X}, + {X, _, _, _, _, _, X}, + {_, X, _, _, _, X, _}, + {_, _, X, _, X, _, _}, + {_, _, _, X, _, _, _}, + }; + bool e[9][9] = { + {_, _, X, _, _, _, X, _, _}, + {_, X, _, X, _, X, _, X, _}, + {X, _, _, _, X, _, _, _, X}, + {X, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, X, _, _}, + {_, _, _, X, _, X, _, _, _}, + {_, _, _, _, X, _, _, _, _}, + }; + bool f[11][11] = { + {_, _, X, X, _, _, _, X, X, _, _}, + {_, X, _, _, X, _, X, _, _, X, _}, + {X, _, _, _, _, X, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, _, _, X, _, _}, + {_, _, _, X, _, _, _, X, _, _, _}, + {_, _, _, _, X, _, X, _, _, _, _}, + {_, _, _, _, _, X, _, _, _, _, _}, + }; + bool g[13][13] = { + {_, _, _, X, _, _, _, _, _, X, _, _, _}, + {_, _, X, _, X, _, _, _, X, _, X, _, _}, + {_, X, _, _, _, X, _, X, _, _, _, X, _}, + {X, _, _, _, _, _, X, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, _, _, _, _, X, _, _}, + {_, _, _, X, _, _, _, _, _, X, _, _, _}, + {_, _, _, _, X, _, _, _, X, _, _, _, _}, + {_, _, _, _, _, X, _, X, _, _, _, _, _}, + {_, _, _, _, _, _, X, _, _, _, _, _, _}, + }; + bool h[15][15] = { + {_, _, _, X, X, _, _, _, _, _, X, X, _, _, _}, + {_, _, X, _, _, X, _, _, _, X, _, _, X, _, _}, + {_, X, _, _, _, _, X, _, X, _, _, _, _, X, _}, + {X, _, _, _, _, _, _, X, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, _, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, _, _, _, _, _, _, X, _, _}, + {_, _, _, X, _, _, _, _, _, _, _, X, _, _, _}, + {_, _, _, _, X, _, _, _, _, _, X, _, _, _, _}, + {_, _, _, _, _, X, _, _, _, X, _, _, _, _, _}, + {_, _, _, _, _, _, X, _, X, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, X, _, _, _, _, _, _, _}, + }; + bool i[17][17] = { + {_, _, _, _, X, _, _, _, _, _, _, _, X, _, _, _, _}, + {_, _, _, X, _, X, _, _, _, _, _, X, _, X, _, _, _}, + {_, _, X, _, _, _, X, _, _, _, X, _, _, _, X, _, _}, + {_, X, _, _, _, _, _, X, _, X, _, _, _, _, _, X, _}, + {X, _, _, _, _, _, _, _, X, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, _, _, _, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, _, _, _, _, _, _, _, _, X, _, _}, + {_, _, _, X, _, _, _, _, _, _, _, _, _, X, _, _, _}, + {_, _, _, _, X, _, _, _, _, _, _, _, X, _, _, _, _}, + {_, _, _, _, _, X, _, _, _, _, _, X, _, _, _, _, _}, + {_, _, _, _, _, _, X, _, _, _, X, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, X, _, X, _, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, _, X, _, _, _, _, _, _, _, _}, + }; + bool j[19][19] = { + {_, _, _, _, X, X, _, _, _, _, _, _, _, X, X, _, _, _, _}, + {_, _, _, X, _, _, X, _, _, _, _, _, X, _, _, X, _, _, _}, + {_, _, X, _, _, _, _, X, _, _, _, X, _, _, _, _, X, _, _}, + {_, X, _, _, _, _, _, _, X, _, X, _, _, _, _, _, _, X, _}, + {X, _, _, _, _, _, _, _, _, X, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X}, + {_, X, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X, _}, + {_, _, X, _, _, _, _, _, _, _, _, _, _, _, _, _, X, _, _}, + {_, _, _, X, _, _, _, _, _, _, _, _, _, _, _, X, _, _, _}, + {_, _, _, _, X, _, _, _, _, _, _, _, _, _, X, _, _, _, _}, + {_, _, _, _, _, X, _, _, _, _, _, _, _, X, _, _, _, _, _}, + {_, _, _, _, _, _, X, _, _, _, _, _, X, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, X, _, _, _, X, _, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, _, X, _, X, _, _, _, _, _, _, _, _}, + {_, _, _, _, _, _, _, _, _, X, _, _, _, _, _, _, _, _, _}, + }; + + const auto now = millis(); + static auto step = 0; + static auto last = now; + if (now - last >= 100) { + last = now; + step = (step + 1) % 30; + } + bool *s; + + switch (step) { + case 0: + s = (bool *) a; + break; + case 1: + s = (bool *) b; + break; + case 2: + s = (bool *) c; + break; + case 3: + s = (bool *) d; + break; + case 4: + s = (bool *) e; + break; + case 5: + s = (bool *) f; + break; + case 6: + s = (bool *) g; + break; + case 7: + s = (bool *) h; + break; + case 8: + s = (bool *) i; + break; + case 9: + s = (bool *) j; + break; + default: + return 0; + } + + auto size = step * 2 + 1; + for (int y = 0; y < size; ++y) { + for (int x = 0; x < size; ++x) { + if (s[y * size + x]) { + set(xPos + x - step, yPos + y - step, RED); + } + } + } + return size; + } + // TODO REMOVE QUICK & DIRTY uint8_t printI(uint8_t xPos, uint8_t yPos, Color color) { for (int y = 0; y < 5; ++y) { diff --git a/src/mode/CountDown/CountDown.h b/src/mode/CountDown/CountDown.h index 079ce5f..8ff210e 100644 --- a/src/mode/CountDown/CountDown.h +++ b/src/mode/CountDown/CountDown.h @@ -281,6 +281,7 @@ private: x += display.print(x, 1, 3, WHITE, true); x += 1; x += display.print(x, 1, 2, WHITE, true); + display.printHeart(15, 4); } else { uint8_t x = 8; x += display.print(x, 1, year / 1000 % 10, WHITE, true) + 1;