EspGammaCorrector

0

Описание

Простая и легковесная библиотека для применения гамма-коррекции к светодиодам (WS2812B, NeoPixel и др.) на платформе ESP8266.

Языки

  • C++100%
6 месяцев назад
6 месяцев назад
6 месяцев назад
6 месяцев назад
6 месяцев назад
README.md

EspGammaCorrector

ESP8266 Dynamic Gamma Correction Library

Простая и легковесная библиотека для применения гамма-коррекции к светодиодам (WS2812B, NeoPixel и др.) на платформе ESP8266.

Ключевая особенность — динамическое создание таблицы коррекции, что позволяет изменять значение гаммы "на лету", без необходимости перекомпиляции кода.

В чем преимущество этого подхода?

Светодиоды имеют нелинейную зависимость между значением ШИМ (0-255) и воспринимаемой яркостью. Например, значение 128 не выглядит как 50% от максимальной яркости, а гораздо тусклее. Гамма-коррекция исправляет это, делая градиенты плавными и естественными для человеческого глаза.

Стандартный подход: Обычно для ускорения процесса используют заранее вычисленную таблицу (Lookup Table, LUT), зашитую в коде. Это быстро и экономит оперативную память (RAM), так как таблица хранится во флеш-памяти (PROGMEM). Однако, если вы захотите изменить коэффициент гаммы, вам придется редактировать код и перепрошивать устройство.

Подход этой библиотеки (Динамический): Эта библиотека создает таблицу гамма-коррекции в оперативной памяти (RAM) при запуске или по команде.

Преимущества:

  1. Гибкость: Вы можете изменить значение гаммы в любой момент работы программы, вызвав метод
    begin(new_gamma_value)
    . Это идеально для интерактивных проектов, где нужно настраивать "сочность" картинки через веб-интерфейс, физический регулятор или в зависимости от внешних условий.
  2. Простота: Не нужно заранее генерировать таблицы на компьютере и вставлять их в код.

Компромисс: За эту гибкость мы платим небольшим объемом оперативной памяти (~256 байт), который занимается под таблицу. Для ESP8266 с его ~80 КБ RAM это, как правило, не является проблемой.

Установка

  1. Скачайте этот репозиторий как ZIP-архив (
    Code
    ->
    Download ZIP
    ).
  2. В Arduino IDE перейдите в
    Скетч
    ->
    Подключить библиотеку
    ->
    Добавить .ZIP библиотеку...
  3. Выберите скачанный ZIP-файл.

Как использовать

API

  • GammaCorrector()
    - Конструктор.
  • ~GammaCorrector()
    - Деструктор, автоматически освобождает память.
  • void begin(float gammaValue = 2.8)
    - Создает или пересчитывает таблицу коррекции с указанным значением гаммы.
  • uint8_t correct(uint8_t value)
    - Корректирует один 8-битный канал.
  • uint32_t correct(uint8_t r, uint8_t g, uint8_t b)
    - Корректирует три канала и возвращает готовое 32-битное значение цвета.