ILI9488 3,95 дюйма, сенсорный экран

:slight_smile:
Только сейчас заметил, вы мне ещёё и Ё в функцию вставили, я на неё просто забил.


А
175,235,172,240,171,247,176,250,190,242,204,224,216,200,247,147,256,127,263,111,265,106,267,105,267,105,267,115,265,130,263,148,259,170,257,189,256,202,255,215,255,223,256,235,255,241,256,243,256,242,256,225,254,205,250,187,243,174,232,167,219,165,205,168,191,177,186,186,184,193,192,198,208,200,227,201,255,198,276,196,277,196,274,198,275,197,
ВАСЯ
128,161,130,170,129,191,129,213,130,236,130,251,130,253,131,166,148,149,167,141,170,154,144,203,124,218,140,202,167,187,178,197,173,222,152,235,133,245,134,246,202,172,193,181,187,199,192,212,206,202,215,186,220,168,213,159,200,165,197,178,204,188,216,180,229,157,228,154,222,168,222,186,227,192,229,190,233,176,241,158,252,146,259,140,256,142,244,159,241,176,250,183,263,175,274,165,276,158,275,163,283,166,299,158,309,144,302,121,288,119,280,132,284,139,305,128,315,113,316,110,317,108,313,121,316,136,336,135,350,119,

Чего то не сообразил, записка и есть почти готовый сканер векторных символов. Только человек нужен с ровной рукой, не моей.
…и правильная разметка под символ.

Такого типа клетка-шаблон с красными точками входа-выхода под строчные и заглавные буквы… По идее надо параметризировать координаты через а.

Красивый италик != косому регуляру

Ну, а как разметку для экрана сделать?



Вот мой италик! И это лучше чем на бумаге.
…Забыл нижний уровень.

Посмотри здесь
https://forum.easyelectronics.ru/viewtopic.php?f=16&t=42306
Конвертирует ttf в битмап и выводит на oled дисплей. Можно любой шрифт из винды превратить в шрифт для дисплея.

Дисплейные шрифты выводят буквы в одинаковых по размеру прямоугольных полях каждую, и большую и маленькую, в рукописных этот вариант не пройдёт из-за связей между буквами, разными их размерами и наклоном. Хотя если есть готовый вариант прописной русификации для замены файла glcdfont.с в TFT_eSPI-2.5.43 поделитесь пожалуйста…
… Нарисовал трафарет.


Как я понял, меняя пропорции сторон, размеры и наклоны можно менять внешний вид букв при их общей похожести.


Ну вот. Принцип работает. Огорчает неясность как определять длины массивов. Внутри функции строка 2 не работает. Ей нужен конкретный массив. Как эту нелепицу сделать изящней?

//пример вывода буквы, после просмотра нажмите кнопку очистки
   int dl=sizeof(buk_A)/sizeof(buk_A[0]);
  for(int q=0;q<15;q++){ 
   ris_bukvu(50+q*26,50,buk_A,dl,0.35);
  }
  ris_bukvu(xr,yr,buk_A,dl,1.00);
  //
void ris_bukvu(int Xb,int Yb,const int *massiv, int DL,float M){
for(int i=0;i<DL-2;i=i+2){
tft.drawLine(Xb+M*massiv[i],Yb+M*massiv[i+1] ,Xb+M*massiv[i+2] ,Yb+M*massiv[i+3] ,tft.color565(255,255,255));    
}
}

Передать размер массива отдельным параметром в функцию.
Или в чем вопрос? Не верно понял?

Да это ясно, а как его считать? Не вводить же 60-70 переменных хранения длин? Или в файле картинок рядом с каждым массивом писать int dl_А=sizeof(buk_A)/sizeof(buk_A[0]);

Я не сильно в этом разбираюсь, но ничего страшного в этом не вижу. Оно посчитается еще на этапе компиляции.

ЗЫ: Размер не может быть отрицательным числом… )))

Интересно, а такой вариант пройдёт:

const int massiv_dlin[]={sizeof(buk_A)/sizeof(buk_A[0],sizeof(buk_B)/sizeof(buk_B[0],.....}

Не пройдет такой вариант, закрывающих скобок не хватает.

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

Массив структур сформирует таблицу символов.

1 лайк

Работоспособность проверить сейчас нечем, но вот такое вполне даже компилируется без ошибок :slight_smile: :

const int buk_A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const int buk_B[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const int buk_C[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const int buk_D[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const int buk_E[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

const int massiv_dlin[]={sizeof(buk_A)/sizeof(buk_A[0]),sizeof(buk_B)/sizeof(buk_B[0]), sizeof(buk_C)/sizeof(buk_C[0]), sizeof(buk_D)/sizeof(buk_D[0]), sizeof(buk_E)/sizeof(buk_E[0])};

void setup() {
  Serial.begin(9600);
  Serial.println("Mass lenght:");
  for (uint8_t i = 0; i < 5; i++) {
    Serial.print(" ");
    Serial.print(massiv_dlin[i]);
  }
}

void loop() {}

ЗЫ: Садман “красивое решение” через структуры предложил…

Зачем изобретать велосипед?
В один общий массив -глифы символов. В другой - индексы.
Так устроен фонт библиотеки Адафруит.

И делайте хоть каждый символ своего размера

Хотя я вижу, что вы и так с ним работаете:

зачем его менять? Этот файл именно то, что вам нужно

1 лайк

Точно, копирование как всегда меня подводит.

Попробую в структуру массивы букв собрать и в массиве другом длины, что бы обращение к букве шло по индексу 0,1,2,3…

Я хочу уйти от привязки к библиотекам. Одна лишь связь - рисование отрезка по координатам начала и конца. И эти буквы векторные, они любой размер могут иметь в пикселях.

Ну и не привязывайтесь. Но зачем изобретать свой формат, когда есть готовый?

Индекс начала буквы?

Адрес начала данных в общем массиве.