Рукоделие, включая сварку и пайку у сексолога :-)

  • Автор темы Автор темы dok34.ru
  • Дата начала Дата начала
...стал гетеро потому, что не знал, что это нужно🙂
 
...подборка полезная 🙂
 
...🙂
 
"Основное, что надо выводить на дисплей в зарядном устройстве – это текст. Значит, снова идем в наш любимый Ардуино, чтобы подсмотреть вывод текста там (Adafruit_GFX_Library). Но то, что я увидел просто повергло меня в ужас. Вывод текста там реализован двумя вложенными циклами, внутри которых для каждого закрашенного пикселя шрифта вызывается отдельная функция drawPixel, которая выбирает на дисплее новое «окно» размером один пиксель, после чего заполняет его нужным цветом. Мало того, что это крайне медленно, так еще и не позволяет перетирать одну строчку текста другой – ведь на дисплей передаются только закрашенные пиксели и текст от двух строчек просто наложится. Сами авторы библиотеки об этом знают, но считают, что реализовать по-другому просто невозможно:

4e549d.png

Моргание измеряемых значений на экране неприемлемо, таким устройством будет невозможно пользоваться, надо делать что-то свое. Подумав, я решил взять из библиотеки Ардуино само графическое изображение открытого шрифта Open Sans (чтобы не изобретать велосипед), а весь код его вывода написать с нуля и на ассемблере, так как очевидно, что на Си он будет недостаточно быстрым.

Эксперименты с SPI показали, что помещать в регистр SPDR данные можно не чаще, чем один раз в 18 тактов, иначе передача сбивается. Это дает максимальную пропускную способность в 889 КБ/сек или 7.7 FPS на выбранном дисплее. Немного, но для зарядного устройства вполне хватит – большинство мультиметров производят всего 3 измерения в секунду и это всех устраивает, значит, здесь тоже можно ориентироваться на такую частоту. В общем, требуется написать такой код вывода символа, который будет выводить изображение вместе с заднем фоном и подавать очередной байт в регистр SPDR ровно через 18 тактов.

Ситуацию несколько усложняет формат, в котором хранится шрифт в Ардуино – для уменьшения места, занимаемого в памяти, от каждого символа хранится только центральный прямоугольник, где имеются закрашенные пиксели, и он для каждого символа свой. То есть, код вывода должен будет рисовать вокруг символа рамочку цветом заднего фона, рисовать сам символ и, что самое главное, делать это в реальном времени, подавая очередной байт в SPDR ровно через 18 тактов!

%symb%

И такой код был написан, это функция PrintGlyph в файле display_asm.S. Она устанавливает окно в контроллере дисплея по внешнему размеру символа, после чего попиксельно выводит символ в рамке слева-направо сверху-вниз. За счет того, что символ выводится с закрашенным задним фоном, становится возможно замещать на экране одну строку текста другой без моргания. А учитывая, что ширина всех цифр в шрифте Open Sans одинаковая, это позволяет красиво обновлять любые цифровые значения. Именно то, что было нужно."
... невозможное можно сделать возможным :))
С удовольствием🙂
 
"Эпиграф:
Во время перерыва в больнице, где я работаю врачом, я случайно услышал,
как медсестра даёт совет своей дочери-подростку.
— Ты должна очень тщательно выбирать себе мужа, — спокойным голосом
вещала медсестра. — Посмотри на своего отца: он может починить и помыть
машину, он разбирается в электричестве и может починить люстру. Кроме
этого, он может починить обувь, садовый инвентарь, сантехнику…
Сначала я подумал, что она даёт дочери вполне мудрые советы, пока не
услышал продолжение: "Никогда не выходи замуж за такого человека, потому
что у тебя никогда не будет ничего нового".
(Из всемирной паутины)"
...🙂 не моё🙂
Проблема не в рукоделии, а в сверхценности/ фанатизме - хоть избегающих ручной работы, хоть избегающих покупки нового, пока старая керосинка и ламповый телек ещё дышат 🙂
 

LGBT*

В связи с решением Верховного суда Российской Федерации (далее РФ) от 30 ноября 2023 года), движение ЛГБТ* признано экстремистским и запрещена его деятельность на территории РФ. Данное решение суда подлежит немедленному исполнению, исходя из чего на форуме будут приняты следующие меры - аббривеатура ЛГБТ* должна и будет применяться только со звездочкой (она означает иноагента или связанное с экстремизмом движение, которое запрещено в РФ), все ради того чтобы посетители и пользователи этого форума могли ознакомиться с данным запретом. Символика, картинки и атрибутика что связана с ныне запрещенным движением ЛГБТ* запрещены на этом форуме - исходя из решения Верховного суда, о котором было написано ранее - этот пункт внесен как экстренное дополнение к правилам форума части 4 параграфа 12 в настоящее время.

Назад
Сверху