Нехватка памяти с библиотекой U8Glib
- Войдите на сайт для отправки комментариев
Втр, 06/04/2021 - 23:22
Привет, друзья!
Встретился с проблемой нехвати памяти при использовании библиотеки U8glib, а точнее при добавлении большого шрифта. Пишу меню для своей самоделки, планировал сделать несколько экранов, а получается что уже первый экран занял 89 процентов памяти устройства
#include <U8glib.h> // Подключаем библиотеку U8glib U8GLIB_ST7920_128X64_1X u8g(10); // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI void MainScreen() { u8g.setColorIndex(1); // делаем курсор белого цвета u8g.setFont(rus5x8); u8g.setPrintPos(7, 8); u8g.print(F("ТРЕНИРОВКА")); u8g.setPrintPos(67, 8); u8g.print(F("РЕАБИЛИТАЦИЯ")); u8g.setFont(u8g_font_osb35); u8g.setPrintPos(15, 49); u8g.print(F("T")); u8g.setPrintPos(79, 49); u8g.print(F("P")); u8g.drawRFrame(5,10,54,45,10); // левый прямоугольник u8g.drawRFrame(69,10,54,45,10); // правый прямоугольник } void setup(){} void loop (){ u8g.firstPage(); do { MainScreen(); } while( u8g.nextPage() );
Если убрать из кода строку u8g.setFont(u8g_font_osb35);,
то программа сразу занимает 30 % памяти, а с этой строкой 89.
Можно ли как-то сэкономить память используя этот шрифт? Возможно что-нибудь посоветуете для экономии памяти?
В подобной ситуации делал "свой" шрифт нужного размера. Но требовались только некоторые символы и цифры.
Возможно что-нибудь посоветуете для экономии памяти?
Использовать другой контроллер. Это будет, поверь, правильное решение. Можно, конечно, найти более компактный шрифт, но это совершенно временное лечение.
Использовать другой контроллер.
опередил...
У этого углиба есть версия 2. Может она пооптимальней слегонца?
Спасибо за ответы, вторую версию пробовал, сильных изменений не нашел.
Сам шрифт занимает 22097 байт памяти программ.
Если вы другие шрифты цеплять не будете, то в оставшееся место можно много чего вместить.
И еще одно замечание: шрифты с исключительно латиницей занимают гораздо меньше памяти, чем шрифты с кириллицей. Так что один из возможных вариантов - отказаться от кириллицы.