// Все настройки проекта в одном месте: пины, пороги, шкалы, периоды. // Менять поведение прошивки здесь, а не по коду модулей. #pragma once #include // --- Дисплей --------------------------------------------------------------- // Пины 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 градус, // пока ничего не происходит. Единица - один принятый замер, а агент шлёт раз // в секунду, поэтому 5 означает "среднее за последние 5 секунд". // Загрузка сознательно не сглаживается: её скачки настоящие, ради них на неё // и смотрят. static const uint8_t TEMP_AVG_SAMPLES = 5; // --- График ---------------------------------------------------------------- // Шкала фиксированная: при автомасштабе шум +-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; // период перерисовки экрана