EspGammaCorrector
Описание
Простая и легковесная библиотека для применения гамма-коррекции к светодиодам (WS2812B, NeoPixel и др.) на платформе ESP8266.
Языки
- C++100%
EspGammaCorrector
ESP8266 Dynamic Gamma Correction Library
Простая и легковесная библиотека для применения гамма-коррекции к светодиодам (WS2812B, NeoPixel и др.) на платформе ESP8266.
Ключевая особенность — динамическое создание таблицы коррекции, что позволяет изменять значение гаммы "на лету", без необходимости перекомпиляции кода.
В чем преимущество этого подхода?
Светодиоды имеют нелинейную зависимость между значением ШИМ (0-255) и воспринимаемой яркостью. Например, значение 128 не выглядит как 50% от максимальной яркости, а гораздо тусклее. Гамма-коррекция исправляет это, делая градиенты плавными и естественными для человеческого глаза.
Стандартный подход: Обычно для ускорения процесса используют заранее вычисленную таблицу (Lookup Table, LUT), зашитую в коде. Это быстро и экономит оперативную память (RAM), так как таблица хранится во флеш-памяти (PROGMEM). Однако, если вы захотите изменить коэффициент гаммы, вам придется редактировать код и перепрошивать устройство.
Подход этой библиотеки (Динамический): Эта библиотека создает таблицу гамма-коррекции в оперативной памяти (RAM) при запуске или по команде.
Преимущества:
- Гибкость: Вы можете изменить значение гаммы в любой момент работы программы, вызвав метод
. Это идеально для интерактивных проектов, где нужно настраивать "сочность" картинки через веб-интерфейс, физический регулятор или в зависимости от внешних условий.begin(new_gamma_value) - Простота: Не нужно заранее генерировать таблицы на компьютере и вставлять их в код.
Компромисс: За эту гибкость мы платим небольшим объемом оперативной памяти (~256 байт), который занимается под таблицу. Для ESP8266 с его ~80 КБ RAM это, как правило, не является проблемой.
Установка
- Скачайте этот репозиторий как ZIP-архив (
->Code).Download ZIP - В Arduino IDE перейдите в
->Скетч->Подключить библиотекуДобавить .ZIP библиотеку... - Выберите скачанный ZIP-файл.
Как использовать
API
- Конструктор.GammaCorrector()- Деструктор, автоматически освобождает память.~GammaCorrector()- Создает или пересчитывает таблицу коррекции с указанным значением гаммы.void begin(float gammaValue = 2.8)- Корректирует один 8-битный канал.uint8_t correct(uint8_t value)- Корректирует три канала и возвращает готовое 32-битное значение цвета.uint32_t correct(uint8_t r, uint8_t g, uint8_t b)