Готовлюсь писать “GUI”

Наша служба и опасна и трудна,
И на первый взгляд, как будто не видна.

Это как раз про написание кода, который пока не производит видимых эффектов.

Я тут переконфигурил макетку для работы с дисплеем. Теперь кнопки – это не музыкальные клавиши, а управляющие кнопки с панели управления (хорошо, что это очень легко перенастраивается в прошивке). Зато теперь у меня есть кнопки, которые можно назначить на “вверх”, “вниз”, “вправо”, “влево” и ещё 2 кнопки, которые будут в разное время выполнять разные роли.

И заодно немного причесал ранее написанное. Оформил в полноценную нормальную ардуино-библиотеку класс, работающий со светодиодами. Вытащил в отдельные .h/.cpp файлы класс с очередью событий приложения.

И доработал класс “кнопки/клавиши”, чтобы можно было для управляющих кнопок включать режим “быстрого автоповтора”, как на обычной компьютерной клавиатуре. Т.е. при удерживании кнопки (но не сразу, а через 0.7 с после начала удерживания), кнопка автоматически генерирует события “нажато”/”отпущено” с частотой примерно по 20 событий в секунду. Самое то, что нужно, для настройки численных параметров с помощью стрелок.

И я немного офигел, когда увидел, что библиотека для работы с экраном сожрала аж целый килобайт с лишним ОЗУ (под буфер обмена с дисплеем). Для моих нужд мне осталось всего порядка 300 байт теперь. Ну, по идее, этого должно хватить, учитывая, что я всё-всё, что можно размещаю во флеш-памяти (см. ключевое слово PROGMEM). Экран нужен, и русские буквы на нём тоже нужны; придётся терпеть.

По плану, следующий шаг – это утащить во флэш-память кое-какие константы для клавиатурного класса. Планирую освободить в ОЗУ порядка 20 байт, может чуть больше.

Рис. 1

Добавить комментарий