feat(ui): тревога по перегреву и config.h со всеми настройками

Настройки собраны в config.h: пины, ориентация, пороги тревоги, шкала
графика, тайминги и скорость Serial. Раньше они были раскиданы по
модулям, и подстройка требовала лазить по коду.

Тревога включается на ALARM_ON_C и отпускает только на ALARM_OFF_C
(85 и 82 градуса). Один порог заставлял бы её дёргаться каждую секунду,
пока температура топчется на границе.

В тревоге экран мигает негативом (инверсия буфера, а не команда
контроллера - не зависит от микросхемы дисплея), светодиод GPIO8 мигает
с ним в общей фазе. Без данных светодиод горит ровно, в норме погашен.
Зажигается низким уровнем: проверено опытом, заодно в простое пин стоит
высоким, что безопасно для GPIO8 как пина начальной загрузки.

Переменная alarm переименована в alarmActive: имя alarm занято функцией
из unistd.h, которая попадает в сборку ESP32.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
oskarvitaliiandClaude Opus 5 committed 2026-09-14 22:32:31 +07:00
1 parent db86597433
commit bd0a87ea49
6 files changed
+131 -21

No files matched your search

+29 -1
View File
@@ -16,7 +16,8 @@ LibreHardwareMonitorLib.dll ──> PowerShell-агент ──COM (USB CDC)─
| Путь | Что это |
|---|---|
| `CPU_temp.ino` | основной скетч: тайм-аут свежести данных, частота перерисовки |
| `config.h` | **все настройки**: пины, пороги тревоги, шкала графика, тайминги |
| `CPU_temp.ino` | основной скетч: свежесть данных, гистерезис тревоги, светодиод |
| `link.h` / `link.cpp` | неблокирующее чтение строки из Serial и её разбор |
| `ui.h` / `ui.cpp` | отрисовка через U8g2 и кольцевой буфер истории |
| `tools/i2c_scan/` | одноразовый скетч: поиск пинов встроенного дисплея |
@@ -73,6 +74,33 @@ T=67.0;L=34
Шкала графика фиксированная, 30–90 °C. Автомасштаб сознательно не используется:
при нём шум ±1 °C в простое рисовался бы горами и создавал ложную тревогу.
Ориентация задаётся константой `DISPLAY_ROTATION` в `config.h`: `U8G2_R0` —
как разведено на плате, `U8G2_R2` — поворот на 180°.
## Тревога по перегреву
Порогов два, `ALARM_ON_C` и `ALARM_OFF_C` (по умолчанию 85 и 82 °C). Тревога
включается на верхнем и отпускает только на нижнем — с одним порогом она
дёргалась бы каждую секунду, пока температура топчется на границе.
В тревоге экран мигает негативом, а светодиод на GPIO8 мигает с ним в такт
(общая фаза, период `ALARM_BLINK_MS`).
Светодиод по состояниям:
| Состояние | Светодиод |
|---|---|
| Норма | погашен |
| Тревога | мигает синхронно с экраном |
| `NO DATA` | горит ровно |
Светодиод зажигается **низким** уровнем (`LED_ACTIVE_LEVEL = LOW`, определено
опытом). Попутно это удобно: в обычном режиме пин удерживается высоким, а GPIO8
— пин начальной загрузки, которому высокий уровень и нужен.
Проверять тревогу можно, не трогая пороги: остановить агента и подать значения
вручную.
## Требования к ПК
Windows, LibreHardwareMonitor и драйвер PawnIO — порядок установки и разбор