Всем привет.
Небольшая доработка фоторамки - ручное и автоматическое (в зависимости от внешней освещённости) изменение яркости подсветки дисплея.
Яркость изменяется плавно.
Доработано по просьбе сделать "ночной режим", когда яркость уменьшается до необходимого минимума. В режиме "день" при автоматической яркости - яркость всегда на max.
В Настройках появились дополнительные пункты для этого режима, которые запоминаются.
Появился пункт "Яркость экрана".
Там можно установить ручную яркость с шагом 10% и АВТО, когда регулировка производится от внешней освещённости.
Так же есть пункт "Яркость экрана ночью", где можно выставить желаемое затемнение экрана.
Ну и пункт "Порог включения режима НОЧЬ" - это уровень внешней освещённости, когда произойдёт переключение яркости экрана на затемнение.
В
main.cpp можно настроить:
#define BRIGHT_THRESHOLD_HYSTER 50 // гистерезис (в отсчётах). зона нечувствительности внешней освещённости
#define BRIGHT_CHANGE_STEP 20 // шаг изменения яркости (в отсчётах)
#define PWM_FREQ 100 // частота ШИМ в Гц (100...40000), сейчас на 100 Гц - вполне достаточно.
#define PWM_RES 10 // разрядность ШИМ (4...16 бит), сейчас 10 бит.
Сделано только для 4.0' TFT на ST7796S.
Контакт LED дисплея отключается от контакта VCC (+5В) и подключается к контакту D1 ESP8266.
Это первая аппаратная доработка. С вывода D1 ESP8266 будет подаваться ШИМ-сигнал на вход
LED дисплея (база транзистора, который включён в цепь катода светодиода подсветки).
Схема 4.0 дисплея.
Из дополнительных деталей понадобиться только фоторезистор 5518 (с другими не проверял!) и резистор на 10 кОм (только такой номинал!).
Фоторезистор одним выводом подключается к +3.3В (на плате ESP8266), вторым выводом подключается к контакту А0 ESP8266, к А0 так же подключается резистор на 10 кОм, второй конец резистора идёт на GND (общий).

Я это сделал на кусочке макетной платы с тремя отверстиями (шаг 2.54мм). К платке припаял 3х-проводной шлейф. Это вторая аппаратная доработка.
В верхней части корпуса фоторамки сверлится отверстие диаметром 5мм, в которое изнутри вставляется фоторезистор и изнутри же заливается термоклеем.
В исходнике использован
последний релиз с гитхаба от автора и правленый
Kandinsky.h от ув.
vadim352627
В проекте изменялись только файлы
db.h,
main.cpp и
settings.h.
Компилируется с такими настройками:
Подразумевается, что проект уже собирался и компилировался, и установлены все АКТУАЛЬНЫЕ версии библиотек для этого проекта!
За код сильно не ругайте, я очень сильно начинающий.
p.s. В
settings.h надо делать
db.update(); (строка 83) после каждого изменения настройки? Как правильно?