+8.85
Рейтинг
118.68
Сила

Арсений

Да, речь именно о шрифтах для больших цифр, которыми отображается время.

При распаковке «на лету» могут возникнуть проблемы с эффектами смены цифр. Почти для всех эффектов требуется выводить часть полного изображения цифры, а иногда и несколько частей, причём и старой цифры, и новой. На каждом кадре анимации полностью перерисовывается весь дисплей. Поэтому есть весьма жёсткие ограничения по скорости отрисовки графики.

При распаковке придётся, как минимум, каждый раз считывать bitmap цифры с самого начала, а сейчас есть возможность сразу читать его с того места, которое нужно для вывода куска цифры.

Лучше, мне кажется, распаковывать весь шрифт сразу в отдельный буфер в ОЗУ однократно при выборе нового шрифта. Оперативной памяти должно хватить — её тут 4 кБ, под буфер кадра выделено 512 байт, а все 20 цифр (по два варианта каждой — для часов/минут и секунд) шрифта занимают не более 880 байт. Остаётся ещё достаточно места под переменные и стек.

Чтобы плюсовать, нужен рейтинг не менее 1,1. Поставил Вам плюс в профиле — попробуйте теперь что-нибудь оценить.
Последний раз редактировалось
Нет, такая мысль пока не приходила.

А почему именно ARSENICUM-8? Всё-таки, число в названии должно иметь какой-то смысл (если это не просто набор случайных символов, конечно).
Ага, я заметил. :)
Спасибо! Приятно слышать такое от того, кто сам специализируется на наручных часах и близким к ним устройствам!

PSTR() я уже и так использую, конечно.
if(vars.first_question){
    draw_string_P(PSTR("Восстановить"), false, 28, 8);
    draw_string_P(PSTR("настройки по"), false, 28, 16);
    draw_string_P(PSTR("умолчанию?"), false, 28, 24);
  }
  else{
    draw_string_P(PSTR("Операция необ-"), false, 28, 8);
    draw_string_P(PSTR("ратима. Вы"), false, 28, 16);
    draw_string_P(PSTR("уверены?"), false, 28, 24);
  }


Это, скорее, позволяет экономить RAM. Строки-то так или иначе будут храниться во flash-памяти. Разве что будет экономия на отсутствии кода для их копирования в RAM.

Я в процессе оптимизации дошёл до того, что делал выбор между локальной или глобальной переменной в зависимости от того, где получается меньше размер прошивки. Много памяти занимают шрифты, иконки и прочая графика. Тут мог бы помочь какой-нибудь алгоритм сжатия, но тогда могут начаться трудности, связанные со скоростью распаковки сжатой графики.

Поэтому я просто решил, что пора остановиться с добавлением всяких функций часам, и так уже много чего наворочено. :)
Спасибо!
Благодарю!
  • avatar Trigger
  • 2
Обалденно! Объём проделанной работы и снятой с внутренней стороны пепелаца стружки впечатляет… +
Очень необычные и красивые часы! +
  • avatar Trigger
  • 1
Это только если снять ту стопку, которая сейчас наполняется. Если снять уже полностью налитую или пустую (а также если поставить новую), наливание не остановится.
  • avatar Trigger
  • 1
Эх, до чего же хорошо получилось! +
Спасибо!

Честно говоря, я не ожидал, что этот «функциональный механизм» вызовет столько интереса. :))
Спасибо!
Благодарю!
Спасибо!
Спасибо!
Спасибо, Ян!

Я для себя сразу решил, что если в часах будут шестерёнки, то они должны работать!
Спасибо!
Идея сделать какие-нибудь колпачки над лампами мне тоже приходила. Но, в итоге, я решил оставить всё как есть. Во-первых, часы и так уже получились сложные, а это моя первая работа такого уровня. А во-вторых, мне показалось, что эти колпачки и конструкция для их крепления получатся слишком громоздкими, и из-за них не будет видно элементы, расположенные за лампами.
Благодарю!
Спасибо!