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:
1 parent
db86597433
commit
bd0a87ea49
6 files changed
+131
-21
No files matched your search
@@ -0,0 +1,52 @@
|
||||
// Все настройки проекта в одном месте: пины, пороги, шкалы, периоды.
|
||||
// Менять поведение прошивки здесь, а не по коду модулей.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// --- Дисплей ---------------------------------------------------------------
|
||||
|
||||
// Пины I2C встроенного OLED. Подтверждены сканером tools/i2c_scan:
|
||||
// подписи GPIO8/GPIO9 на шелкографии - это дефолтные Wire-пины чипа,
|
||||
// а не разводка экрана.
|
||||
static const uint8_t PIN_SDA = 5;
|
||||
static const uint8_t PIN_SCL = 6;
|
||||
|
||||
// Ориентация: U8G2_R0 - как разведено на плате, U8G2_R2 - поворот на 180.
|
||||
#define DISPLAY_ROTATION U8G2_R2
|
||||
|
||||
// --- Тревога по перегреву --------------------------------------------------
|
||||
|
||||
// Два порога, а не один: с одним тревога дёргалась бы каждую секунду,
|
||||
// пока температура топчется на границе.
|
||||
static const float ALARM_ON_C = 85.0f; // включить тревогу при этой температуре
|
||||
static const float ALARM_OFF_C = 82.0f; // выключить, только опустившись до этой
|
||||
|
||||
// Период полуфазы мигания: экран и светодиод моргают синхронно.
|
||||
static const uint32_t ALARM_BLINK_MS = 500;
|
||||
|
||||
// --- Светодиод -------------------------------------------------------------
|
||||
|
||||
// Тревога - мигает, нет данных - горит ровно, норма - погашен.
|
||||
static const uint8_t PIN_LED = 8;
|
||||
|
||||
// Уровень, при котором светодиод горит. Определено опытом: светодиод на GPIO8
|
||||
// зажигается НИЗКИМ уровнем. Побочно это удобно - в обычном режиме пин стоит
|
||||
// в высоком уровне, а GPIO8 является пином начальной загрузки, которому
|
||||
// высокий уровень и нужен.
|
||||
static const uint8_t LED_ACTIVE_LEVEL = LOW;
|
||||
|
||||
// --- График ----------------------------------------------------------------
|
||||
|
||||
// Шкала фиксированная: при автомасштабе шум +-1 градус в простое
|
||||
// рисовался бы горами и создавал ложную тревогу.
|
||||
static const float SCALE_MIN = 30.0f;
|
||||
static const float SCALE_MAX = 90.0f;
|
||||
|
||||
// --- Связь и тайминги ------------------------------------------------------
|
||||
|
||||
static const uint32_t SERIAL_BAUD = 115200;
|
||||
static const uint32_t STALE_MS = 5000; // после этого молчания показываем NO DATA
|
||||
static const uint32_t SAMPLE_MS = 1000; // шаг истории графика
|
||||
static const uint32_t DRAW_MS = 200; // период перерисовки экрана
|
||||
Reference in new issue
Block a user