Как выжать 30 FPS из читалки: гениальный трюк с зависшими частицами внутри экрана

leer en español

4209
Как выжать 30 FPS из читалки: гениальный трюк с зависшими частицами внутри экрана

Секрет оказался в коротких импульсах, выборочном обновлении пикселей и открытом коде InkBoy.

image

Разработчик заставил обычный экран на электронных чернилах показывать игры Game Boy примерно при 30 кадрах в секунду и выводить четыре оттенка серого. Для InkBoy не понадобилась специально изготовленная панель: автор взял серийную плату Waveshare с 1,54-дюймовым экраном и микроконтроллером ESP32-S3, а главные изменения внес в программу, которая управляет дисплеем.

Для электронной бумаги 30 кадров в секунду - необычно высокая скорость. Внутри каждого пикселя находятся заряженные черные и белые частицы, которые электрическое поле перемещает в жидкости. Экран хорошо держит неподвижную картинку почти без расхода энергии, но частицам нужно время, чтобы занять новое положение. На использованной панели обычное частичное обновление занимает около 360 мс, поэтому стандартное управление дает лишь два-три обновления в секунду.

InkBoy обходит ограничение за счет другого способа управления пикселями. Вместо полной штатной последовательности из 17 этапов программа использует один короткий импульс и воздействует только на точки, которым действительно нужно изменить цвет. Неизменившиеся пиксели остаются в покое. Разработчик также оставляет питание панели включенным между обновлениями и быстрее передает данные контроллеру, сокращая лишние задержки.

Самая любопытная часть проекта появилась из физики самого экрана. Черные и белые частицы не меняют положение мгновенно, поэтому движение можно остановить на полпути. InkBoy дозирует электрические импульсы и оставляет пиксель в промежуточном состоянии, получая темно-серый и светло-серый цвета в дополнение к черному и белому. В итоге экран воспроизводит четыре тона, которые нужны играм оригинального Game Boy.

Сам эмулятор работает примерно при 59,7 кадра в секунду, однако дисплей не пытается показать каждый кадр. InkBoy берет последний готовый кадр раз в 33,3 мс и отправляет его на панель, поэтому экран обновляется примерно 30 раз в секунду. В особенно насыщенных сценах частота может немного падать, а серые объекты иногда оставляют слабые следы предыдущего изображения.

Автор открыл код InkBoy. Проект поддерживает игры для обычного Game Boy, карту microSD, звук, сохранение состояния и отдельный контроллер на ESP32-C3. Цветные игры Game Boy Color пока не работают.

Экспериментировать с прошивкой стоит осторожно. Разработчик предупреждает, что нестандартные электрические импульсы и высокая частота обновления могут оставить постоянный след на экране или повредить панель. Долговечность дисплея при таком режиме никто не проверял, поэтому InkBoy пока скорее показывает скрытые возможности электронной бумаги, чем предлагает безопасный способ разогнать любой ридер.

Рекламодатель
Реклама. АО «Позитив Текнолоджиз». ИНН 7718668887. 18+
Сайт рекламодателя: ptsecurity.com↗️
АО «Позитив Текнолоджиз»