// Индикатор температуры CPU: плата принимает строки "T=67.0;L=34" по USB-COM // от агента на ПК и рисует их на встроенном OLED 72x40. Сама ничего не меряет. #include "link.h" #include "ui.h" static const uint32_t STALE_MS = 5000; // после этого молчания показываем NO DATA static const uint32_t SAMPLE_MS = 1000; // шаг истории графика static const uint32_t DRAW_MS = 200; // период перерисовки static CpuStats stats = {0.0f, 0}; static uint32_t lastData = 0; static uint32_t lastSample = 0; static uint32_t lastDraw = 0; static bool everGot = false; void setup() { linkBegin(); uiBegin(); } void loop() { CpuStats fresh; if (linkPoll(fresh)) { stats = fresh; lastData = millis(); everGot = true; } const bool isFresh = everGot && (millis() - lastData < STALE_MS); // Историю дописываем только при живой связи: пауза не должна рисоваться провалом. if (isFresh && millis() - lastSample >= SAMPLE_MS) { lastSample = millis(); uiPushSample(stats.tempC); } if (millis() - lastDraw >= DRAW_MS) { lastDraw = millis(); uiRender(isFresh, stats.tempC, stats.loadPct); } }