From c76c2ef7e5fec3c9c33fafef2b6b1f15fd0746eb Mon Sep 17 00:00:00 2001 From: Vitali Date: Mon, 14 Sep 2026 23:29:19 +0700 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=D0=B7=D0=BD=D0=B0=D1=87=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D0=BC=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=85=D0=BD=D0=B5=D0=BC=20=D1=83=D0=B3=D0=BB=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Полоса y=0..10 справа выбрана по измерениям на самой плате, а не на глаз: строка загрузки лежит ниже (y=11..24), а цифры температуры не дотягиваются туда даже трёхзначными (49 px + градус = 56 из 72). Значок 11x11 не перекрывает ничего ни при каких значениях и не исчезает под нагрузкой. Co-Authored-By: Claude Opus 5 --- CPU_temp/ui.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CPU_temp/ui.cpp b/CPU_temp/ui.cpp index b2a861d..4c0c206 100644 --- a/CPU_temp/ui.cpp +++ b/CPU_temp/ui.cpp @@ -12,6 +12,15 @@ static const uint8_t GRAPH_W = 72; // по пикселю на отсчёт: 72 static const uint8_t GRAPH_TOP = 28; static const uint8_t GRAPH_H = 12; +// Значок процессора в правом верхнем углу. Полоса y=0..10 выбрана не случайно: +// строка загрузки лежит ниже (y=11..24), а цифры температуры не дотягиваются +// сюда даже в трёхзначном виде (49 px + градус = 56). Значит значок не перекроет +// ничего ни при каких значениях. Размеры измерены на плате, не на глаз. +static const uint8_t ICON_W = 11; +static const uint8_t ICON_H = 11; +static const uint8_t ICON_X = 72 - ICON_W; +static const uint8_t ICON_Y = 0; + static uint8_t history[GRAPH_W]; // 0 = нет данных, иначе высота столбика 1..GRAPH_H void uiBegin() { @@ -42,6 +51,19 @@ static void drawGraph() { } } +// Микросхема: корпус, ядро внутри и по три вывода с каждой стороны. +static void drawCpuIcon(uint8_t x, uint8_t y) { + display.drawFrame(x + 1, y + 1, ICON_W - 2, ICON_H - 2); + display.drawBox(x + 4, y + 4, 3, 3); + for (uint8_t i = 0; i < 3; i++) { + const uint8_t o = 3 + i * 2; + display.drawPixel(x + o, y); + display.drawPixel(x + o, y + ICON_H - 1); + display.drawPixel(x, y + o); + display.drawPixel(x + ICON_W - 1, y + o); + } +} + // Негатив всего кадра. Через буфер, а не командой контроллера: так поведение // не зависит от конкретной микросхемы дисплея. static void invertBuffer() { @@ -79,6 +101,8 @@ void uiRender(bool fresh, float tempC, int loadPct, bool invert) { snprintf(buf, sizeof(buf), "%d%%", loadPct); display.drawStr(numWidth + 2, 24, buf); + drawCpuIcon(ICON_X, ICON_Y); + drawGraph(); if (invert) invertBuffer();