А Вам приходилось где-нибудь в жизни использовать прозу?
В жизни…?, только прозу жизни.
Спойлер
//ПЕЧАТЬ БУКВ И СЛОВ виды почерка
#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
#include "ris_fun_.h"//файл хранения массивов букв и функций их обработки
uint16_t color=tft.color565(0,0,0);
//uint16_t color=tft.color565(238,206,155);
float m=0.25;//масштаб букв
void setup(){
tft.init();
tft.setRotation(3); // Переводим дисплей в альбомную ориентацию
tft.fillScreen(color);
//пример вывода слов
ris_str(0,0,"До свиданья, друг мой, до свиданья.",m,2,tft.color565(150,150,150));//
ris_str(0,35,"Милый мой, ты у меня в груди.",m,2,tft.color565(150,150,150));//
ris_str(0,70,"Предназначенное расставанье",m,2,tft.color565(150,150,150));//
ris_str(0,105,"Обещает встречу впереди.",m,2,tft.color565(150,150,150));//
ris_str(0,135,"До свиданья, друг мой, без руки, без слова,",m,10,tft.color565(200,0,0));//
ris_str(0,150,"До свиданья, друг мой, без руки, без слова,",m,2,tft.color565(255,255,0));//
ris_str(0,170,"Не грусти и не печаль бровей,-",m,10,tft.color565(200,0,0));//
ris_str(0,185,"Не грусти и не печаль бровей,-",m,2,tft.color565(255,255,0));//
ris_str(0,220,"В этой жизни умирать не ново,",m,2,tft.color565(150,150,150));//
ris_str(0,255,"Но и жить, конечно, не новей.",m,2,tft.color565(150,150,150));//
ris_str(0,275," С.А.Есенин 1925 ",m,10,tft.color565(200,0,0));//
ris_str(0,285," С.А.Есенин 1925 ",m,2,tft.color565(255,255,0));//
}
void loop()
{
}
////////////////////
//почерк бисером
//m=0.10;
//b=2.3;
//c=1.3;
//a=200;
//почерк столбиком
//m=0.10;
//b=2.3;
//c=4.0;
//a=200;
//почерк вытянутый
//m=0.10;
//b=2.3;
//c=2.0;
//a=250;
//почерк раздельный
//m=0.15;
//b=1.0;
//c=2.0;
//a=140;
Спойлер
const int buk_0[] = { // А
-32,80,-31,81,-29,84,-27,88,-22,89,-14,85,-6,79,2,71,10,60,17,46,22,32,28,22,36,12,43,7,44,6,47,7,47,14,46,22,
42,35,35,49,29,64,25,74,23,82,21,85,21,87,20,91,20,90,666,666,25,57,24,50,17,43,7,37,1,39,-3,41,-8,47,-10,55,-9,66,-6,
75,2,81,10,83,22,85,34,83,45,79,49,75,50,75,51,75,51,75,333
};
const int buk_1[] = { // Б
-33,80,-33,79,-32,81,-31,83,-28,85,-22,85,-14,82,-10,75,-3,67,1,60,9,46,12,37,17,27,21,20,23,16,24,14,24,13,24,
13,666,666,4,38,0,36,-4,31,-5,26,-4,21,-1,14,8,10,22,7,43,7,64,5,75,3,72,4,666,666,14,45,20,40,24,37,30,35,35,37,39,41,
43,47,45,54,46,60,44,65,42,73,38,77,34,83,30,88,25,90,20,91,15,91,11,88,7,86,7,86,8,83,15,80,23,78,31,78,40,76,44,78,43,77,44,78,333
};
const int buk_2[] = { // В
-34,78,-33,78,-32,80,-28,85,-23,83,-14,72,-1,51,25,2,26,0,666,666,-1,26,14,15,28,8,42,7,49,13,45,26,34,36,15,46,12,48,23,42,
31,41,38,46,42,56,38,68,31,77,20,86,9,91,-3,88,-7,79,-2,73,9,68,21,65,35,69,45,75,45,76,44,76,333
};
const int buk_3[] = { // Г
-33,77,-31,80,-29,84,-23,88,-11,80,2,66,21,35,29,17,30,15,30,15,666,666,-7,38,-10,34,-9,27,-8,24,0,20,13,15,35,10,56,6,68,2,
69,1,70,1,666,666,8,87,8,86,11,84,21,81,31,78,44,74,45,74,45,74,333
};
const int buk_4[] = { // Д
63,8,61,7,56,6,54,6,51,9,45,17,38,25,33,34,25,45,21,53,12,63,6,71,-3,77,-9,82,-15,86,-22,88,-27,87,-31,85,-32,78,
-30,74,-25,72,-17,71,-11,72,-1,77,6,82,17,84,24,85,35,83,43,78,50,69,53,60,53,50,53,39,44,29,29,18,16,15,3,16,-7,
21,-7,26,-7,39,8,48,333
};
const int buk_5[] = { // Е
60,17,55,12,45,7,33,8,22,14,13,23,10,29,14,35,22,38,32,39,40,39,40,37,31,32,21,31,5,33,-11,39,-20,47,-25,56,-28,
67,-27,75,-24,85,-16,90,-4,94,11,92,23,88,38,82,43,79,43,79,43,79,44,79,666,666,-35,79,-33,78,-29,74,-30,75,-29,73,333
};
const int buk_6[] = { // Ж
-2,15,-1,11,2,5,9,2,13,0,15,2,17,8,18,17,15,29,11,42,7,51,2,61,-2,73,-8,78,-11,82,-14,86,-17,88,-21,91,-22,90,-28,85,-31,80,
-33,75,666,666,70,5,73,1,60,1,53,7,45,17,36,31,31,41,26,50,22,56,20,66,20,72,19,75,19,80,19,83,21,86,23,87,27,84,35,83,43,80,48,
76,46,76,666,666,31,15,25,28,22,39,19,50,15,61,12,71,10,78,7,84,7,86,8,85,666,666,-8,67,-8,68,-5,64,6,56,31,42,47,31,46,32,44,33,333
};
const int buk_7[] = { // З
13,10,20,6,26,4,36,4,41,6,43,11,43,15,38,22,30,29,20,35,13,36,12,36,19,33,28,31,37,33,42,37,47,43,51,49,52,54,51,
58,49,65,48,68,45,74,42,79,33,82,21,88,13,89,4,89,-6,90,-15,88,-25,84,-32,80,-36,79,-36,79,-36,79,333
};
const int buk_8[] = { // И
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,333
};
const int buk_9[] = { // Й
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,666,666,22,-1,23,2,30,2,35,0,42,-7,333
};
const int buk_10[] = { // К
-33,79,-32,82,-29,86,-22,85,-14,80,-4,62,4,43,13,23,19,11,24,4,26,3,666,666,8,48,17,33,31,20,45,10,58,5,62,5,62,10,
666,666,14,40,19,40,22,42,24,51,22,58,19,68,16,75,17,81,19,86,23,84,27,83,35,81,43,76,43,76,333
};
const int buk_11[] = { // Л
-31,80,-31,81,-31,81,-30,82,-26,86,-21,86,-12,83,-8,78,-3,71,3,59,12,45,19,33,26,18,32,12,37,5,43,3,45,3,49,5,
51,7,52,13,51,18,49,26,46,33,43,39,41,47,36,56,33,65,30,71,28,77,26,81,27,83,28,84,31,86,35,85,41,80,48,76,47,75,333
};
const int buk_12[] = { // М
-32,78,-33,79,-34,87,-29,91,-15,83,-3,65,11,42,28,13,30,6,27,10,24,17,19,28,9,48,4,65,1,76,0,82,2,83,11,77,30,
58,53,23,68,2,68,0,64,6,63,11,53,27,45,45,34,62,27,75,25,81,24,85,26,86,33,84,44,78,45,78,333
};
const int buk_13[] = { // Н
-32,80,-34,82,-32,88,-29,91,-23,88,-15,75,-5,58,22,5,22,1,22,1,22,3,666,666,57,8,52,20,46,31,40,45,33,58,29,66,
26,77,22,86,24,87,29,83,41,78,47,75,46,74,666,666,-9,58,4,55,31,45,43,42,48,39,50,38,666,666,-1,18,8,11,21,0,21,1,333
};
const int buk_14[] = { // О
30,4,24,7,18,10,8,19,1,26,-7,37,-15,54,-20,64,-20,73,-16,80,-8,84,8,81,19,76,27,68,35,58,44,45,52,31,54,19,54,10,
51,4,43,0,17,8,666,666,8,84,10,84,22,82,35,78,44,77,46,76,666,666,-35,78,-33,75,-25,70,-21,65,-21,63,333
};
const int buk_15[] = { // П
-32,78,-35,81,-36,85,-33,88,-27,88,-15,76,-5,59,14,30,15,25,14,24,14,25,666,666,49,24,38,39,27,58,17,79,13,83,13,84,
13,84,13,84,13,84,14,87,22,87,35,83,45,80,50,79,46,79,666,666,0,37,-7,35,-10,32,-9,29,-3,25,6,21,24,17,48,12,69,6,78,1,76,3,333
};
const int buk_16[] = { // Р
0,91,0,90,8,88,27,80,41,77,43,77,43,77,44,77,666,666,-36,80,-34,81,-30,85,-23,88,-10,76,-1,57,8,31,11,20,11,19,12,18,11,18,
666,666,-11,39,-6,28,2,15,9,8,21,5,33,4,44,9,53,16,55,25,53,38,49,46,41,53,28,58,10,62,4,59,6,58,333
};
const int buk_17[] = { // С
55,29,58,24,60,17,58,11,51,5,44,4,34,6,21,7,14,12,4,20,-7,30,-16,41,-25,53,-29,63,-31,70,-30,79,-24,86,-14,91,3,87,20,83,
35,76,44,74,43,74,45,78,333
};
const int buk_18[] = { // Т
-31,81,-34,82,-35,83,-31,91,-25,90,-13,83,-3,68,11,39,12,34,12,33,666,666,-13,53,-16,48,-17,45,-11,39,3,32,25,23,58,9,67,
4,68,4,66,4,666,666,51,29,43,42,33,58,25,73,22,79,21,85,22,85,26,82,45,78,666,666,21,51,6,84,1,96,1,96,333
};
const int buk_19[] = { // У
-36,80,-37,79,-36,80,-34,81,-28,83,-19,84,-7,83,7,75,17,71,29,59,44,43,60,25,69,10,73,4,72,3,73,3,72,5,71,6,666,666,11,7,
12,8,8,14,2,22,-2,31,-3,41,0,47,10,50,25,50,36,47,37,46,38,47,37,47,37,47,37,47,666,666,15,86,13,88,13,86,13,86,15,87,21,85,30,80,42,78,49,78,48,77,48,77,48,77,333
};
const int buk_20[] = { // Ф
51,5,40,7,27,14,14,20,-1,33,-11,42,-17,49,-22,59,-22,66,-11,66,8,60,24,54,44,43,58,31,66,20,71,9,65,5,54,5,666,666,-34,80,-30,83,
-23,88,-14,90,-5,83,4,69,14,49,27,20,36,2,38,1,666,666,11,91,11,91,16,88,31,80,43,79,46,77,46,78,45,78,333
};
const int buk_21[] = { // Х
2,7,3,7,6,5,12,3,20,1,25,3,27,12,27,26,22,38,17,52,8,64,-3,76,-9,83,-13,85,-17,84,-20,82,-24,82,-28,78,-32,78,-32,78,-33,78,666,666,69,8,
63,6,56,7,48,11,38,19,29,29,21,41,15,53,10,64,9,75,11,86,17,91,26,86,37,82,43,78,46,76,48,73,49,74,333
};
const int buk_22[] = { // Ц
12,5,20,3,21,14,16,24,5,39,-8,55,-15,68,-19,79,-16,86,-9,88,4,82,24,56,40,37,53,22,58,14,56,15,53,20,50,26,43,39,40,54,35,68,35,75,36,82,
36,88,33,95,30,100,25,106,20,107,16,108,15,106,17,100,21,95,31,87,40,81,44,79,46,80,45,79,46,79,666,666,-37,80,-37,79,-37,78,-37,78,-33,76,-28,72,-22,67,-18,65,-17,65,333
};
const int buk_23[] = { // Ч
9,2,8,3,2,11,-5,27,-13,43,-14,57,-6,66,5,69,22,64,47,41,58,23,66,11,66,10,66,11,65,12,63,15,58,22,49,33,42,44,33,54,29,63,23,70,19,76,16,82,14,89,17,
90,21,89,27,89,36,83,44,78,47,74,48,74,47,75,47,74,666,666,-33,74,-30,71,-24,64,-15,53,-12,48,333
};
const int buk_24[] = { // Ш
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,333
};
const int buk_25[] = { // Щ
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,
666,666,31,80,31,82,32,89,33,94,33,97,31,104,29,108,24,110,18,112,14,110,12,109,12,105,14,99,16,98,20,96,29,91,33,89,33,90,33,89,333
};
const int buk_26[] = { // Ъ
};
const int buk_27[] = { // Ы
9,10,3,24,-6,40,-16,59,-22,72,-21,79,-13,81,0,73,14,58,23,42,20,35,6,38,-8,51,666,666,-31,74,-32,73,-31,74,-32,73,-34,75,-34,77,-30,72,-22,64,-13,57,
-11,53,666,666,47,17,41,29,31,45,26,56,21,68,18,76,16,82,16,89,17,89,23,86,33,78,45,74,45,74,333
};
const int buk_28[] = { // Ь
};
const int buk_29[] = { // Э
8,19,16,10,28,4,43,2,52,5,54,19,53,37,44,55,35,66,23,75,13,80,-2,84,-16,89,-25,86,-30,82,-31,77,-31,77,666,666,-1,90,0,90,5,88,10,85,21,83,31,79,
44,76,49,75,49,75,666,666,2,57,13,52,27,48,42,44,50,42,333
};
const int buk_30[] = { // Ю
-34,78,-34,79,-33,86,-28,90,-18,80,21,4,21,4,23,4,666,666,49,5,47,6,40,11,30,20,21,32,11,48,4,67,1,76,4,83,8,85,21,75,35,64,48,40,55,23,58,11,
56,3,52,3,666,666,9,87,11,86,21,82,37,75,44,76,46,76,666,666,-10,68,-10,68,-5,63,10,54,19,49,19,50,666,666,-7,30,1,21,13,11,20,3,20,4,333
};
const int buk_31[] = { // Я
-31,78,-30,76,-28,83,-20,86,-14,83,-7,81,3,73,13,64,21,54,27,44,33,35,37,21,40,14,40,5,35,2,32,2,22,6,11,17,0,26,-8,37,-10,45,-6,49,10,50,25,47,40,39,
52,27,60,16,64,10,62,7,62,7,56,13,50,22,41,33,33,45,26,59,22,70,21,80,21,86,22,88,25,89,32,88,38,84,45,80,49,78,49,79,49,78,333
};
/////////////////////////////////////////
const int buk_32[] = { // а
46,79,43,80,40,84,37,86,36,86,34,86,32,84,31,81,32,76,36,69,43,58,46,49,46,48,47,49,46,49,47,49,666,666,42,
54,41,52,38,51,34,49,29,50,24,54,19,58,13,63,9,69,5,74,3,81,1,88,3,89,9,89,19,82,27,79,29,78,29,78,333
};
const int buk_33[] = { // б
33,52,25,55,20,61,14,68,10,77,12,82,18,83,26,80,37,71,41,59,37,53,24,56,666,666,38,72,44,63,48,54,
45,47,40,41,34,39,31,37,29,33,31,28,43,15,666,666,53,8,58,4,666,666,25,83,34,80,44,76,46,75,333
};
const int buk_34[] = { // в
9,77,12,75,19,71,26,65,35,56,43,45,52,34,56,24,59,15,59,12,58,6,56,4,51,6,44,17,32,36,24,51,
18,67,13,78,10,85,12,88,18,89,29,81,40,71,46,62,47,57,42,50,32,48,25,61,666,666,20,90,25,86,44,75,333
};
const int buk_35[] = { // г
9,74,10,70,17,59,25,51,33,47,37,48,37,54,31,66,25,76,20,85,17,92,16,96,16,96,18,96,27,89,36,83,45,77,45,76,47,77,333
};
const int buk_36[] = { // д
30,51,19,59,14,65,10,79,15,83,26,80,38,72,47,63,46,51,35,50,25,59,666,666,31,96,25,109,21,120,17,128,
-9,131,-15,128,-13,125,-7,118,7,109,25,97,40,85,46,78,47,77,47,78,333
};
const int buk_37[] = { // е
9,77,12,77,22,71,42,59,49,50,45,48,43,47,36,50,27,62,21,73,17,84,14,93,15,94,23,87,38,78,46,74,46,75,333
};
const int buk_38[] = { // ж
22,45,22,50,24,64,27,78,31,84,32,86,32,87,33,85,666,666,2,91,1,90,2,89,9,82,21,70,35,59,45,50,50,48,50,48,50,47,50,47,666,666,34,47,
34,47,31,50,25,64,21,75,16,90,15,93,15,92,16,92,666,666,3,81,2,80,2,81,3,89,4,91,4,90,666,666,45,79,44,80,39,84,35,89,33,89,36,88,333
};
const int buk_39[] = { // з
6,78,10,73,19,60,28,49,35,49,35,54,31,63,21,71,21,72,26,63,35,65,37,67,37,72,33,82,24,102,15,113,7,120,-4,126,-12,131,
-15,132,-16,129,-10,118,2,106,18,95,40,77,47,75,46,75,47,74,333
};
const int buk_40[] = { // и
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,333
};
const int buk_41[] = { // й
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,666,666,22,35,26,40,35,32,41,24,333
};
const int buk_42[] = { // к
8,73,8,73,9,73,16,64,28,48,34,41,32,42,32,43,28,48,19,72,10,91,8,94,9,92,10,91,10,92,666,666,19,83,
28,64,47,47,58,37,57,39,666,666,28,66,31,74,30,82,28,93,35,86,45,75,45,74,333
};
const int buk_43[] = { // л
10,77,9,78,7,83,9,86,12,84,23,74,35,59,42,46,43,45,45,43,43,47,37,56,28,74,26,80,25,85,26,85,33,83,42,79,49,73,50,71,49,73,333
};
const int buk_44[] = { // м
8,79,8,81,7,85,8,89,14,82,25,61,32,48,33,47,33,47,33,46,29,56,22,70,21,81,21,87,21,87,25,84,36,66,46,51,49,47,48,48,47,50,
41,63,33,79,30,88,31,90,32,89,42,80,44,77,45,77,45,77,333
};
const int buk_45[] = { // н
10,76,10,75,15,68,20,64,24,59,26,54,26,53,26,52,25,52,23,54,19,64,14,73,9,81,5,89,3,91,6,91,4,90,6,86,10,80,14,78,20,76,26,
74,29,75,30,74,35,69,40,62,46,54,49,51,48,50,47,48,45,50,38,60,31,72,25,82,23,86,24,88,25,88,32,84,43,79,47,75,47,75,45,76,333
};
const int buk_46[] = { // о
34,52,23,58,17,64,13,73,10,79,10,82,11,87,15,90,20,88,28,84,34,80,43,74,47,65,47,59,45,56,38,52,32,52,666,666,25,87,34,82,
44,79,48,78,48,78,49,78,48,78,666,666,11,74,16,67,19,64,333
};
const int buk_47[] = { // п
2,94,2,92,6,86,13,68,22,49,27,39,26,39,27,40,27,41,666,666,18,65,20,59,27,54,35,50,42,47,42,47,45,50,42,58,35,70,28,
81,25,86,24,89,25,90,27,90,34,86,43,78,44,77,44,76,45,76,44,75,333
};
const int buk_48[] = { // р
4,84,3,83,9,78,21,56,29,44,31,39,30,41,25,54,18,74,9,99,-2,124,-5,130,-4,128,666,666,24,63,29,57,41,50,49,49,53,52,53,60,47,73,37,83,21,86,11,88,11,86,333
};
const int buk_49[] = { // с
35,46,24,49,18,55,12,62,6,74,4,85,9,89,18,91,25,88,39,81,45,77,46,77,46,76,333
};
const int buk_50[] = { // т
19,49,18,50,16,57,12,68,7,79,1,88,0,92,0,93,1,92,666,666,17,66,27,55,31,49,31,49,32,50,29,60,25,70,21,77,18,84,17,85,20,81,24,69,29,62,34,58,36,
56,37,59,35,68,29,78,28,84,27,84,30,85,37,79,44,76,43,75,44,75,666,666,20,42,20,41,35,40,45,38,45,37,45,38,46,38,333
};
const int buk_51[] = { // у
10,74,18,60,22,53,23,50,22,50,21,54,17,69,15,77,18,79,27,73,35,66,43,54,45,50,44,51,38,65,32,79,28,94,25,106,20,
118,14,124,6,129,-4,130,-11,126,-10,122,-7,115,2,107,12,99,28,86,45,79,52,73,52,73,52,73,333
};
const int buk_52[] = { // ф
44,49,42,50,37,49,33,50,27,54,21,58,18,62,14,65,10,70,8,72,6,76,5,82,5,83,6,86,10,87,19,86,24,85,31,82,37,78,43,75,49,69,53,
61,54,54,53,49,42,47,27,57,666,666,41,42,37,49,32,58,25,77,16,97,8,116,4,126,4,126,4,124,333
};
const int buk_53[] = { // х
27,44,28,45,27,45,28,48,30,56,30,64,30,74,32,81,32,87,33,88,33,88,33,88,33,88,666,666,9,87,8,86,8,86,8,89,8,87,8,88,8,88,8,87,10,87,17,80,
27,70,40,60,49,54,53,50,53,50,53,49,53,50,666,666,33,89,33,89,35,89,39,85,45,80,46,79,47,79,47,78,666,666,6,81,6,81,6,82,8,87,9,88,9,86,333
};
const int buk_54[] = { // ц
18,48,18,51,14,60,9,76,7,85,8,89,12,91,20,87,30,80,41,65,49,52,49,48,49,48,48,47,46,57,43,62,38,71,35,76,33,86,31,93,31,94,31,93,31,94,31,94,
31,92,31,94,32,94,31,94,32,94,31,94,31,94,32,94,33,94,34,96,35,102,34,103,32,105,24,107,20,105,17,104,18,102,18,102,20,100,26,95,35,88,43,81,46,80,46,79,333
};
const int buk_55[] = { // ч
22,47,20,51,15,59,13,67,16,77,24,75,33,71,44,60,49,50,50,47,50,48,49,49,44,57,37,69,29,78,27,83,25,93,26,93,29,94,38,85,46,75,47,74,48,76,333
};
const int buk_56[] = { // ш
22,47,22,47,20,49,17,54,13,63,7,76,4,86,5,86,13,82,22,72,31,59,33,56,33,52,33,52,33,52,34,53,30,59,25,70,23,75,21,83,22,85,27,86,30,80,37,68,46,
56,47,49,47,49,47,49,46,49,45,49,47,50,45,49,43,53,39,63,35,71,33,76,32,81,31,82,31,83,32,85,32,85,34,87,36,86,40,82,43,78,44,77,44,77,44,77,44,77,
666,666,3,101,3,101,5,100,11,98,21,96,30,96,33,94,33,95,33,95,32,95,333
};
const int buk_57[] = { // щ
22,46,21,47,21,52,18,58,16,68,12,78,13,80,15,81,18,81,25,71,33,59,38,48,41,47,41,47,40,47,37,51,34,58,31,67,29,76,30,81,32,81,35,83,41,75,
47,64,53,54,55,50,54,50,53,52,49,59,45,73,40,83,36,89,34,96,36,99,34,107,32,108,26,108,21,105,20,102,20,103,21,100,28,93,41,82,51,71,51,72,52,72,333
};
const int buk_58[] = { // ъ
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,
666,666,17,52,17,52,16,50,17,48,19,48,22,48,25,51,29,50,35,45,36,44,666,666,11,56,12,57,16,52,17,52,19,50,21,50,333
};
const int buk_59[] = { // ы
49,45,49,47,45,51,40,63,35,72,30,81,28,90,28,92,39,84,47,74,46,75,47,75,666,666,25,47,24,46,23,45,22,47,21,48,17,58,11,67,7,76,3,85,4,90,5,91,
14,89,20,84,22,79,22,74,21,71,20,70,11,72,333
};
const int buk_60[] = { // ь
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,333
};
const int buk_61[] = { // э
23,51,35,44,45,43,50,49,49,58,43,71,36,82,29,84,23,89,15,90,9,87,6,82,10,75,11,76,666,666,18,71,21,70,35,66,45,64,44,64,45,64,333
};
const int buk_62[] = { // ю
10,76,10,77,13,74,19,66,26,57,26,55,25,53,26,51,27,51,27,52,25,51,26,51,27,51,26,51,25,51,26,51,25,51,21,62,15,75,9,92,7,96,11,87,12,81,14,81,
17,80,25,69,29,65,29,66,29,65,29,65,35,58,28,66,22,77,23,90,32,87,44,74,51,61,49,53,39,55,30,64,333
};
const int buk_63[] = { // я
9,80,8,81,8,86,12,91,17,90,24,82,35,71,43,59,43,49,40,48,32,47,25,51,20,56,16,64,18,67,22,69,33,63,45,57,51,48,50,46,48,47,43,
52,35,65,30,75,27,83,26,89,27,90,30,91,35,85,42,79,46,74,47,73,47,74,48,74,333
};
const int buk_64[] = { // !
29,77,29,76,27,76,27,76,25,76,25,79,29,78,30,75,29,73,26,72,23,75,25,76,31,74,31,74,27,74,24,75,25,79,30,77,31,76,28,76,26,78,
31,78,34,73,30,74,27,77,28,75,666,666,44,26,36,37,33,49,33,55,32,58,40,51,45,40,48,23,52,18,47,21,38,36,36,48,37,51,44,45,49,
27,52,18,52,17,44,34,38,47,40,47,49,30,51,19,48,23,43,37,40,44,45,38,49,22,48,17,38,37,333
};
const int buk_65[] = { //
};
const int buk_66[] = { //
};
const int buk_67[] = { //
};
const int buk_68[] = { //
};
const int buk_69[] = { //
};
const int buk_70[] = { //
};
const int buk_71[] = { // (
35,38,35,39,35,39,35,40,33,40,30,44,26,50,24,51,22,57,19,65,16,72,14,77,13,81,12,84,13,89,12,93,13,96,14,97,14,97,13,96,
13,93,13,84,16,78,18,70,21,62,23,57,27,49,32,43,33,41,35,40,36,40,32,41,27,47,20,57,17,64,15,73,14,79,14,83,13,91,13,94,15,
98,14,99,16,98,14,91,15,82,16,76,17,70,19,63,23,56,26,49,30,45,32,41,34,39,35,40,35,39,30,43,24,53,20,63,17,70,16,77,17,80,17,85,15,91,14,92,14,92,333
};
const int buk_72[] = { // )
48,36,48,36,49,38,48,44,48,47,48,54,47,63,46,67,44,76,43,80,40,88,35,92,32,96,31,99,28,100,25,106,24,107,24,108,26,108,28,103,
32,98,37,91,43,85,47,76,49,69,50,62,50,56,50,49,50,45,48,42,48,38,49,37,49,35,48,34,49,35,49,38,50,45,333
};
const int buk_73[] = { // *
24,63,25,67,29,77,31,79,666,666,20,81,26,72,33,63,666,666,29,63,29,78,29,79,666,666,21,72,30,74,37,72,42,70,333
};
const int buk_74[] = { // +
37,54,36,55,31,61,26,75,22,84,21,84,21,88,666,666,15,74,17,73,28,71,37,72,42,71,42,72,333
};
const int buk_75[] = { // ,
22,82,21,82,22,83,21,84,21,86,21,85,23,86,26,83,25,81,22,81,21,84,21,86,22,85,24,81,22,84,21,83,25,82,24,81,24,84,24,89,23,93,22,94,21,97,20,99,19,
100,19,99,19,100,19,100,19,99,21,98,24,94,24,91,25,89,23,89,24,90,24,89,25,93,22,96,21,98,21,98,21,99,21,98,21,98,22,97,24,92,24,91,25,89,24,90,25,89,23,91,23,97,21,99,21,99,20,99,333
};
const int buk_76[] = { // -
16,71,16,71,16,71,16,71,16,71,21,70,31,71,40,71,45,72,45,71,45,71,44,71,45,70,45,70,45,71,44,71,333
};
const int buk_77[] = { // .
24,82,24,83,23,83,22,83,22,85,23,86,25,86,29,81,27,80,23,79,21,83,22,86,24,86,26,83,23,80,21,80,21,82,25,83,27,80,26,78,22,78,20,83,23,85,25,83,23,81,21,
81,20,84,22,85,25,82,24,80,23,83,25,83,25,82,23,81,23,85,24,84,25,86,23,85,22,88,23,87,24,87,23,84,333
};
const int buk_78[] = { //
};
const int buk_79[] = { // 0
34,46,34,45,32,44,32,45,28,49,23,56,19,67,15,79,17,84,21,85,30,79,42,69,49,56,49,46,44,43,30,48,21,63,333
};
const int buk_80[] = { // 1
21,57,21,57,21,58,21,58,24,55,33,45,42,37,44,32,44,32,43,37,37,50,31,68,26,76,26,78,25,79,666,666,11,89,16,86,25,83,33,84,35,85,35,85,333
};
const int buk_81[] = { // 2
25,46,26,43,27,38,34,34,41,34,46,38,42,47,36,57,26,65,18,73,11,80,5,86,5,87,7,83,14,77,19,76,24,81,29,83,33,82,36,79,38,79,333
};
const int buk_82[] = { // 3
23,51,25,49,27,44,30,41,36,39,43,37,45,40,44,44,39,53,33,58,30,61,29,61,29,60,34,58,40,59,43,65,40,72,36,79,34,82,31,82,23,86,18,84,15,80,15,78,333
};
const int buk_83[] = { // 4
37,36,32,45,24,60,19,74,22,72,32,68,40,68,666,666,44,59,34,81,28,97,27,98,29,97,333
};
const int buk_84[] = { // 5
24,40,37,37,49,33,51,34,666,666,24,51,21,58,22,57,28,50,36,54,41,65,40,73,30,80,17,83,11,82,10,80,333
};
const int buk_85[] = { // 6
52,40,47,40,41,43,33,49,25,58,21,64,18,71,14,79,16,83,19,87,29,83,37,81,43,72,44,63,34,60,25,66,333
};
const int buk_86[] = { // 7
25,50,25,49,25,50,25,44,29,42,34,41,41,43,47,44,54,38,58,37,57,37,53,42,44,57,35,70,26,82,20,94,15,98,17,98,666,666,20,72,17,74,17,74,25,71,45,64,48,64,333
};
const int buk_87[] = { // 8
28,42,33,36,41,34,47,34,47,43,41,55,34,61,26,67,21,73,15,79,15,84,21,88,27,86,35,82,39,73,37,61,27,50,27,42,333
};
const int buk_88[] = { // 9
35,36,30,40,25,46,23,54,24,62,29,66,40,64,46,56,49,42,44,37,38,40,37,42,666,666,50,48,46,58,43,64,38,72,33,77,25,81,18,85,11,81,11,78,333
};
const int buk_89[] = { //
};
const int buk_90[] = { //
};
const int buk_91[] = { //
};
const int buk_92[] = { // =
19,69,16,68,17,68,23,67,36,66,42,65,666,666,11,85,18,86,29,83,35,83,37,84,333
};
const int buk_93[] = { //
};
const int buk_94[] = { // ?
34,29,34,29,34,27,33,24,34,20,37,17,43,16,49,17,51,20,52,25,52,31,49,38,47,43,43,48,41,50,37,51,31,55,27,59,24,64,24,67,23,67,
24,67,24,67,666,666,28,80,25,82,24,86,27,84,29,82,27,81,21,82,21,84,25,84,28,82,26,82,25,82,25,81,666,666,35,26,36,21,40,17,43,
18,47,18,51,21,51,26,49,32,46,39,42,46,37,49,32,53,28,57,25,62,23,64,24,67,25,69,25,68,24,67,333
};
/////////////////////////
const struct {//структура массивов букв алфавита
const int *bitmap;
}
bukvi[]={buk_0,buk_1,buk_2,buk_3,buk_4,buk_5,buk_6,buk_7,buk_8,buk_9,buk_10,buk_11,buk_12,buk_13,buk_14,buk_15,buk_16,buk_17,buk_18,buk_19,
buk_20,buk_21,buk_22,buk_23,buk_24,buk_25,buk_26,buk_27,buk_28,buk_29,buk_30,buk_31,buk_32,buk_33,buk_34,buk_35,buk_36,buk_37,buk_38,buk_39,
buk_40,buk_41,buk_42,buk_43,buk_44,buk_45,buk_46,buk_47,buk_48,buk_49,buk_50,buk_51,buk_52,buk_53,buk_54,buk_55,buk_56,buk_57,buk_58,buk_59,
buk_60,buk_61,buk_62,buk_63,buk_64,buk_65,buk_66,buk_67,buk_68,buk_69,buk_70,buk_71,buk_72,buk_73,buk_74,buk_75,buk_76,buk_77,buk_78,buk_79,
buk_80,buk_81,buk_82,buk_83,buk_84,buk_85,buk_86,buk_87,buk_88,buk_89,buk_90,buk_91,buk_92,buk_93,buk_94,};
/////////////////////////
//функция рисования буквы из массива данных
void ris_bukvu(int Xb,int Yb,const int *massiv,float M, byte S,uint16_t color_){
float b=1.0;//коэф. сжатия-растяжения по осям
float c=1.3;//
// S - размывание
int i=0;
while (massiv[i+2]!=333) {
if(massiv[i+2]!=666){
tft.drawLine(Xb+b*M*(massiv[i]),Yb+c*M*(massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,S+Yb+c*M*(massiv[i+3]) ,color_);
tft.drawLine(Xb+b*M*(massiv[i]),S+Yb+c*M*(massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,Yb+c*M*(massiv[i+3]) ,color_);
}
else{i=i+2;}
i=i+2;
}
}
///////////////////
// Функция рисования букв строки
void ris_str(int x,int y,String source,float Ms,byte S,uint16_t color_)
{
int a=80;//базовый размер в пикселях шаблона в сканере букв
int ii,k;
// String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); ii = 0;
while (ii < k) {
n = source[ii]; ii++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[ii]; ii++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[ii]; ii++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n;
//
if(n>=192&&n<=255){//условия сопоставления кодов символов и массивов символов для русских букв
if(n<224){x=x+a*Ms;}else{x=x+a*Ms/2;}
ris_bukvu(x,y,bukvi[n-192].bitmap,Ms,S,color_);
}
if(n==32){x=x+a*Ms/2;}//для пробела
if(n>32&&n<64){//для цифр и знаков препинания
x=x+a*Ms/2;
ris_bukvu(x,y,bukvi[n+31].bitmap,Ms,S,color_);
}
//
}
}
//////////////////////
Ещё фантазии.
Спойлер
//ПЕЧАТЬ БУКВ И СЛОВ виды почерка
#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
#include "ris_fun_.h"//файл хранения массивов букв и функций их обработки
uint16_t color=tft.color565(0,100,100);
//uint16_t color=tft.color565(238,206,155);
float m=0.10;//масштаб букв
void setup(){
tft.init();
tft.setRotation(3); // Переводим дисплей в альбомную ориентацию
tft.fillScreen(color);
/*
//пример вывода слов
ris_str(0,0,"До свиданья, друг мой, до свиданья.",m,2,tft.color565(150,150,150));//
ris_str(0,35,"Милый мой, ты у меня в груди.",m,2,tft.color565(150,150,150));//
ris_str(0,70,"Предназначенное расставанье",m,2,tft.color565(150,150,150));//
ris_str(0,105,"Обещает встречу впереди.",m,2,tft.color565(150,150,150));//
ris_str(0,135,"До свиданья, друг мой, без руки, без слова,",m,10,tft.color565(200,0,0));//
ris_str(0,150,"До свиданья, друг мой, без руки, без слова,",m,2,tft.color565(255,255,0));//
ris_str(0,170,"Не грусти и не печаль бровей,-",m,10,tft.color565(200,0,0));//
ris_str(0,185,"Не грусти и не печаль бровей,-",m,2,tft.color565(255,255,0));//
ris_str(0,220,"В этой жизни умирать не ново,",m,2,tft.color565(150,150,150));//
ris_str(0,255,"Но и жить, конечно, не новей.",m,2,tft.color565(150,150,150));//
ris_str(0,275," С.А.Есенин 1925 ",m,10,tft.color565(200,0,0));//
ris_str(0,285," С.А.Есенин 1925 ",m,2,tft.color565(255,255,0));//
// m=0.25;b=1.0;c=1.3;a=80;
//uint16_t color=tft.color565(0,0,0);
//пример вывода слов
ris_str(0,3,"До свиданья, друг мой, до свиданья.",m,5,tft.color565(0,150,0));//
ris_str(0,0,"До свиданья, друг мой, до свиданья.",m,0,tft.color565(255,255,200));//
ris_str(0,38,"Милый мой, ты у меня в груди.",m,5,tft.color565(0,150,0));//
ris_str(0,35,"Милый мой, ты у меня в груди.",m,0,tft.color565(255,255,200));//
ris_str(0,73,"Предназначенное расставанье",m,5,tft.color565(0,150,0));//
ris_str(0,70,"Предназначенное расставанье",m,0,tft.color565(255,255,200));//
ris_str(0,108,"Обещает встречу впереди.",m,5,tft.color565(0,150,0));//
ris_str(0,105,"Обещает встречу впереди.",m,0,tft.color565(255,255,200));//
ris_str(0,150,"До свиданья, друг мой, без руки, без слова,",m,5,tft.color565(0,150,0));//
ris_str(0,147,"До свиданья, друг мой, без руки, без слова,",m,0,tft.color565(255,255,200));//
ris_str(0,185,"Не грусти и не печаль бровей,-",m,5,tft.color565(0,150,0));//
ris_str(0,182,"Не грусти и не печаль бровей,-",m,0,tft.color565(255,255,200));//
ris_str(0,223,"В этой жизни умирать не ново,",m,5,tft.color565(0,150,0));//
ris_str(0,220,"В этой жизни умирать не ново,",m,0,tft.color565(255,255,200));//
ris_str(0,258,"Но и жить, конечно, не новей.",m,5,tft.color565(0,150,0));//
ris_str(0,255,"Но и жить, конечно, не новей.",m,0,tft.color565(255,255,200));//
ris_str(0,288," С.А.Есенин 1925 ",m,5,tft.color565(0,150,0));//
ris_str(0,285," С.А.Есенин 1925 ",m,0,tft.color565(255,255,200));//
// m=0.10;b=2.3;c=1.3;a=200;
//uint16_t color=tft.color565(0,0,0);
*/
//пример вывода слов
ris_str(0,10,"До свиданья, друг мой, до свиданья.",m,0,tft.color565(0,255,255));//
ris_str(15,45,"До свиданья, друг мой, до свиданья.",m,-3,tft.color565(0,75,75));//
ris_str(0,45,"Милый мой, ты у меня в груди.",m,0,tft.color565(0,255,255));//
ris_str(15,80,"Милый мой, ты у меня в груди.",m,-3,tft.color565(0,75,75));//
ris_str(0,80,"Предназначенное расставанье",m,0,tft.color565(0,255,255));//
ris_str(15,115,"Предназначенное расставанье",m,-3,tft.color565(0,75,75));//
ris_str(0,115,"Обещает встречу впереди.",m,0,tft.color565(0,255,255));//
ris_str(15,150,"Обещает встречу впереди.",m,-3,tft.color565(0,75,75));//
ris_str(0,150,"До свиданья, друг мой, без руки, без слова,",m,0,tft.color565(0,255,255));//
ris_str(15,185,"До свиданья, друг мой, без руки, без слова,",m,-3,tft.color565(0,75,75));//
ris_str(0,185,"Не грусти и не печаль бровей,-",m,0,tft.color565(0,255,255));//
ris_str(15,220,"Не грусти и не печаль бровей,-",m,-3,tft.color565(0,75,75));//
ris_str(0,220,"В этой жизни умирать не ново,",m,0,tft.color565(0,255,255));//
ris_str(15,255,"В этой жизни умирать не ново,",m,-3,tft.color565(0,75,75));//
ris_str(0,255,"Но и жить, конечно, не новей.",m,0,tft.color565(0,255,255));//
ris_str(15,290,"Но и жить, конечно, не новей.",m,-3,tft.color565(0,75,75));//
ris_str(0,290," С.А.Есенин 1925 ",m,0,tft.color565(0,255,255));//
// m=0.10;b=2.3;c=1.3;a=200;
// uint16_t color=tft.color565(0,100,100);
}
void loop()
{
}
////////////////////
//почерк бисером
//m=0.10;
//b=2.3;
//c=1.3;
//a=200;
//почерк столбиком
//m=0.10;
//b=2.3;
//c=4.0;
//a=200;
//почерк вытянутый
//m=0.10;
//b=2.3;
//c=2.0;
//a=250;
//почерк раздельный
//m=0.15;
//b=1.0;
//c=2.0;
//a=140;
Спойлер
const int buk_0[] = { // А
-32,80,-31,81,-29,84,-27,88,-22,89,-14,85,-6,79,2,71,10,60,17,46,22,32,28,22,36,12,43,7,44,6,47,7,47,14,46,22,
42,35,35,49,29,64,25,74,23,82,21,85,21,87,20,91,20,90,666,666,25,57,24,50,17,43,7,37,1,39,-3,41,-8,47,-10,55,-9,66,-6,
75,2,81,10,83,22,85,34,83,45,79,49,75,50,75,51,75,51,75,333
};
const int buk_1[] = { // Б
-33,80,-33,79,-32,81,-31,83,-28,85,-22,85,-14,82,-10,75,-3,67,1,60,9,46,12,37,17,27,21,20,23,16,24,14,24,13,24,
13,666,666,4,38,0,36,-4,31,-5,26,-4,21,-1,14,8,10,22,7,43,7,64,5,75,3,72,4,666,666,14,45,20,40,24,37,30,35,35,37,39,41,
43,47,45,54,46,60,44,65,42,73,38,77,34,83,30,88,25,90,20,91,15,91,11,88,7,86,7,86,8,83,15,80,23,78,31,78,40,76,44,78,43,77,44,78,333
};
const int buk_2[] = { // В
-34,78,-33,78,-32,80,-28,85,-23,83,-14,72,-1,51,25,2,26,0,666,666,-1,26,14,15,28,8,42,7,49,13,45,26,34,36,15,46,12,48,23,42,
31,41,38,46,42,56,38,68,31,77,20,86,9,91,-3,88,-7,79,-2,73,9,68,21,65,35,69,45,75,45,76,44,76,333
};
const int buk_3[] = { // Г
-33,77,-31,80,-29,84,-23,88,-11,80,2,66,21,35,29,17,30,15,30,15,666,666,-7,38,-10,34,-9,27,-8,24,0,20,13,15,35,10,56,6,68,2,
69,1,70,1,666,666,8,87,8,86,11,84,21,81,31,78,44,74,45,74,45,74,333
};
const int buk_4[] = { // Д
63,8,61,7,56,6,54,6,51,9,45,17,38,25,33,34,25,45,21,53,12,63,6,71,-3,77,-9,82,-15,86,-22,88,-27,87,-31,85,-32,78,
-30,74,-25,72,-17,71,-11,72,-1,77,6,82,17,84,24,85,35,83,43,78,50,69,53,60,53,50,53,39,44,29,29,18,16,15,3,16,-7,
21,-7,26,-7,39,8,48,333
};
const int buk_5[] = { // Е
60,17,55,12,45,7,33,8,22,14,13,23,10,29,14,35,22,38,32,39,40,39,40,37,31,32,21,31,5,33,-11,39,-20,47,-25,56,-28,
67,-27,75,-24,85,-16,90,-4,94,11,92,23,88,38,82,43,79,43,79,43,79,44,79,666,666,-35,79,-33,78,-29,74,-30,75,-29,73,333
};
const int buk_6[] = { // Ж
-2,15,-1,11,2,5,9,2,13,0,15,2,17,8,18,17,15,29,11,42,7,51,2,61,-2,73,-8,78,-11,82,-14,86,-17,88,-21,91,-22,90,-28,85,-31,80,
-33,75,666,666,70,5,73,1,60,1,53,7,45,17,36,31,31,41,26,50,22,56,20,66,20,72,19,75,19,80,19,83,21,86,23,87,27,84,35,83,43,80,48,
76,46,76,666,666,31,15,25,28,22,39,19,50,15,61,12,71,10,78,7,84,7,86,8,85,666,666,-8,67,-8,68,-5,64,6,56,31,42,47,31,46,32,44,33,333
};
const int buk_7[] = { // З
13,10,20,6,26,4,36,4,41,6,43,11,43,15,38,22,30,29,20,35,13,36,12,36,19,33,28,31,37,33,42,37,47,43,51,49,52,54,51,
58,49,65,48,68,45,74,42,79,33,82,21,88,13,89,4,89,-6,90,-15,88,-25,84,-32,80,-36,79,-36,79,-36,79,333
};
const int buk_8[] = { // И
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,333
};
const int buk_9[] = { // Й
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,666,666,22,-1,23,2,30,2,35,0,42,-7,333
};
const int buk_10[] = { // К
-33,79,-32,82,-29,86,-22,85,-14,80,-4,62,4,43,13,23,19,11,24,4,26,3,666,666,8,48,17,33,31,20,45,10,58,5,62,5,62,10,
666,666,14,40,19,40,22,42,24,51,22,58,19,68,16,75,17,81,19,86,23,84,27,83,35,81,43,76,43,76,333
};
const int buk_11[] = { // Л
-31,80,-31,81,-31,81,-30,82,-26,86,-21,86,-12,83,-8,78,-3,71,3,59,12,45,19,33,26,18,32,12,37,5,43,3,45,3,49,5,
51,7,52,13,51,18,49,26,46,33,43,39,41,47,36,56,33,65,30,71,28,77,26,81,27,83,28,84,31,86,35,85,41,80,48,76,47,75,333
};
const int buk_12[] = { // М
-32,78,-33,79,-34,87,-29,91,-15,83,-3,65,11,42,28,13,30,6,27,10,24,17,19,28,9,48,4,65,1,76,0,82,2,83,11,77,30,
58,53,23,68,2,68,0,64,6,63,11,53,27,45,45,34,62,27,75,25,81,24,85,26,86,33,84,44,78,45,78,333
};
const int buk_13[] = { // Н
-32,80,-34,82,-32,88,-29,91,-23,88,-15,75,-5,58,22,5,22,1,22,1,22,3,666,666,57,8,52,20,46,31,40,45,33,58,29,66,
26,77,22,86,24,87,29,83,41,78,47,75,46,74,666,666,-9,58,4,55,31,45,43,42,48,39,50,38,666,666,-1,18,8,11,21,0,21,1,333
};
const int buk_14[] = { // О
30,4,24,7,18,10,8,19,1,26,-7,37,-15,54,-20,64,-20,73,-16,80,-8,84,8,81,19,76,27,68,35,58,44,45,52,31,54,19,54,10,
51,4,43,0,17,8,666,666,8,84,10,84,22,82,35,78,44,77,46,76,666,666,-35,78,-33,75,-25,70,-21,65,-21,63,333
};
const int buk_15[] = { // П
-32,78,-35,81,-36,85,-33,88,-27,88,-15,76,-5,59,14,30,15,25,14,24,14,25,666,666,49,24,38,39,27,58,17,79,13,83,13,84,
13,84,13,84,13,84,14,87,22,87,35,83,45,80,50,79,46,79,666,666,0,37,-7,35,-10,32,-9,29,-3,25,6,21,24,17,48,12,69,6,78,1,76,3,333
};
const int buk_16[] = { // Р
0,91,0,90,8,88,27,80,41,77,43,77,43,77,44,77,666,666,-36,80,-34,81,-30,85,-23,88,-10,76,-1,57,8,31,11,20,11,19,12,18,11,18,
666,666,-11,39,-6,28,2,15,9,8,21,5,33,4,44,9,53,16,55,25,53,38,49,46,41,53,28,58,10,62,4,59,6,58,333
};
const int buk_17[] = { // С
55,29,58,24,60,17,58,11,51,5,44,4,34,6,21,7,14,12,4,20,-7,30,-16,41,-25,53,-29,63,-31,70,-30,79,-24,86,-14,91,3,87,20,83,
35,76,44,74,43,74,45,78,333
};
const int buk_18[] = { // Т
-31,81,-34,82,-35,83,-31,91,-25,90,-13,83,-3,68,11,39,12,34,12,33,666,666,-13,53,-16,48,-17,45,-11,39,3,32,25,23,58,9,67,
4,68,4,66,4,666,666,51,29,43,42,33,58,25,73,22,79,21,85,22,85,26,82,45,78,666,666,21,51,6,84,1,96,1,96,333
};
const int buk_19[] = { // У
-36,80,-37,79,-36,80,-34,81,-28,83,-19,84,-7,83,7,75,17,71,29,59,44,43,60,25,69,10,73,4,72,3,73,3,72,5,71,6,666,666,11,7,
12,8,8,14,2,22,-2,31,-3,41,0,47,10,50,25,50,36,47,37,46,38,47,37,47,37,47,37,47,666,666,15,86,13,88,13,86,13,86,15,87,21,85,30,80,42,78,49,78,48,77,48,77,48,77,333
};
const int buk_20[] = { // Ф
51,5,40,7,27,14,14,20,-1,33,-11,42,-17,49,-22,59,-22,66,-11,66,8,60,24,54,44,43,58,31,66,20,71,9,65,5,54,5,666,666,-34,80,-30,83,
-23,88,-14,90,-5,83,4,69,14,49,27,20,36,2,38,1,666,666,11,91,11,91,16,88,31,80,43,79,46,77,46,78,45,78,333
};
const int buk_21[] = { // Х
2,7,3,7,6,5,12,3,20,1,25,3,27,12,27,26,22,38,17,52,8,64,-3,76,-9,83,-13,85,-17,84,-20,82,-24,82,-28,78,-32,78,-32,78,-33,78,666,666,69,8,
63,6,56,7,48,11,38,19,29,29,21,41,15,53,10,64,9,75,11,86,17,91,26,86,37,82,43,78,46,76,48,73,49,74,333
};
const int buk_22[] = { // Ц
12,5,20,3,21,14,16,24,5,39,-8,55,-15,68,-19,79,-16,86,-9,88,4,82,24,56,40,37,53,22,58,14,56,15,53,20,50,26,43,39,40,54,35,68,35,75,36,82,
36,88,33,95,30,100,25,106,20,107,16,108,15,106,17,100,21,95,31,87,40,81,44,79,46,80,45,79,46,79,666,666,-37,80,-37,79,-37,78,-37,78,-33,76,-28,72,-22,67,-18,65,-17,65,333
};
const int buk_23[] = { // Ч
9,2,8,3,2,11,-5,27,-13,43,-14,57,-6,66,5,69,22,64,47,41,58,23,66,11,66,10,66,11,65,12,63,15,58,22,49,33,42,44,33,54,29,63,23,70,19,76,16,82,14,89,17,
90,21,89,27,89,36,83,44,78,47,74,48,74,47,75,47,74,666,666,-33,74,-30,71,-24,64,-15,53,-12,48,333
};
const int buk_24[] = { // Ш
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,333
};
const int buk_25[] = { // Щ
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,
666,666,31,80,31,82,32,89,33,94,33,97,31,104,29,108,24,110,18,112,14,110,12,109,12,105,14,99,16,98,20,96,29,91,33,89,33,90,33,89,333
};
const int buk_26[] = { // Ъ
};
const int buk_27[] = { // Ы
9,10,3,24,-6,40,-16,59,-22,72,-21,79,-13,81,0,73,14,58,23,42,20,35,6,38,-8,51,666,666,-31,74,-32,73,-31,74,-32,73,-34,75,-34,77,-30,72,-22,64,-13,57,
-11,53,666,666,47,17,41,29,31,45,26,56,21,68,18,76,16,82,16,89,17,89,23,86,33,78,45,74,45,74,333
};
const int buk_28[] = { // Ь
};
const int buk_29[] = { // Э
8,19,16,10,28,4,43,2,52,5,54,19,53,37,44,55,35,66,23,75,13,80,-2,84,-16,89,-25,86,-30,82,-31,77,-31,77,666,666,-1,90,0,90,5,88,10,85,21,83,31,79,
44,76,49,75,49,75,666,666,2,57,13,52,27,48,42,44,50,42,333
};
const int buk_30[] = { // Ю
-34,78,-34,79,-33,86,-28,90,-18,80,21,4,21,4,23,4,666,666,49,5,47,6,40,11,30,20,21,32,11,48,4,67,1,76,4,83,8,85,21,75,35,64,48,40,55,23,58,11,
56,3,52,3,666,666,9,87,11,86,21,82,37,75,44,76,46,76,666,666,-10,68,-10,68,-5,63,10,54,19,49,19,50,666,666,-7,30,1,21,13,11,20,3,20,4,333
};
const int buk_31[] = { // Я
-31,78,-30,76,-28,83,-20,86,-14,83,-7,81,3,73,13,64,21,54,27,44,33,35,37,21,40,14,40,5,35,2,32,2,22,6,11,17,0,26,-8,37,-10,45,-6,49,10,50,25,47,40,39,
52,27,60,16,64,10,62,7,62,7,56,13,50,22,41,33,33,45,26,59,22,70,21,80,21,86,22,88,25,89,32,88,38,84,45,80,49,78,49,79,49,78,333
};
/////////////////////////////////////////
const int buk_32[] = { // а
46,79,43,80,40,84,37,86,36,86,34,86,32,84,31,81,32,76,36,69,43,58,46,49,46,48,47,49,46,49,47,49,666,666,42,
54,41,52,38,51,34,49,29,50,24,54,19,58,13,63,9,69,5,74,3,81,1,88,3,89,9,89,19,82,27,79,29,78,29,78,333
};
const int buk_33[] = { // б
33,52,25,55,20,61,14,68,10,77,12,82,18,83,26,80,37,71,41,59,37,53,24,56,666,666,38,72,44,63,48,54,
45,47,40,41,34,39,31,37,29,33,31,28,43,15,666,666,53,8,58,4,666,666,25,83,34,80,44,76,46,75,333
};
const int buk_34[] = { // в
9,77,12,75,19,71,26,65,35,56,43,45,52,34,56,24,59,15,59,12,58,6,56,4,51,6,44,17,32,36,24,51,
18,67,13,78,10,85,12,88,18,89,29,81,40,71,46,62,47,57,42,50,32,48,25,61,666,666,20,90,25,86,44,75,333
};
const int buk_35[] = { // г
9,74,10,70,17,59,25,51,33,47,37,48,37,54,31,66,25,76,20,85,17,92,16,96,16,96,18,96,27,89,36,83,45,77,45,76,47,77,333
};
const int buk_36[] = { // д
30,51,19,59,14,65,10,79,15,83,26,80,38,72,47,63,46,51,35,50,25,59,666,666,31,96,25,109,21,120,17,128,
-9,131,-15,128,-13,125,-7,118,7,109,25,97,40,85,46,78,47,77,47,78,333
};
const int buk_37[] = { // е
9,77,12,77,22,71,42,59,49,50,45,48,43,47,36,50,27,62,21,73,17,84,14,93,15,94,23,87,38,78,46,74,46,75,333
};
const int buk_38[] = { // ж
22,45,22,50,24,64,27,78,31,84,32,86,32,87,33,85,666,666,2,91,1,90,2,89,9,82,21,70,35,59,45,50,50,48,50,48,50,47,50,47,666,666,34,47,
34,47,31,50,25,64,21,75,16,90,15,93,15,92,16,92,666,666,3,81,2,80,2,81,3,89,4,91,4,90,666,666,45,79,44,80,39,84,35,89,33,89,36,88,333
};
const int buk_39[] = { // з
6,78,10,73,19,60,28,49,35,49,35,54,31,63,21,71,21,72,26,63,35,65,37,67,37,72,33,82,24,102,15,113,7,120,-4,126,-12,131,
-15,132,-16,129,-10,118,2,106,18,95,40,77,47,75,46,75,47,74,333
};
const int buk_40[] = { // и
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,333
};
const int buk_41[] = { // й
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,666,666,22,35,26,40,35,32,41,24,333
};
const int buk_42[] = { // к
8,73,8,73,9,73,16,64,28,48,34,41,32,42,32,43,28,48,19,72,10,91,8,94,9,92,10,91,10,92,666,666,19,83,
28,64,47,47,58,37,57,39,666,666,28,66,31,74,30,82,28,93,35,86,45,75,45,74,333
};
const int buk_43[] = { // л
10,77,9,78,7,83,9,86,12,84,23,74,35,59,42,46,43,45,45,43,43,47,37,56,28,74,26,80,25,85,26,85,33,83,42,79,49,73,50,71,49,73,333
};
const int buk_44[] = { // м
8,79,8,81,7,85,8,89,14,82,25,61,32,48,33,47,33,47,33,46,29,56,22,70,21,81,21,87,21,87,25,84,36,66,46,51,49,47,48,48,47,50,
41,63,33,79,30,88,31,90,32,89,42,80,44,77,45,77,45,77,333
};
const int buk_45[] = { // н
10,76,10,75,15,68,20,64,24,59,26,54,26,53,26,52,25,52,23,54,19,64,14,73,9,81,5,89,3,91,6,91,4,90,6,86,10,80,14,78,20,76,26,
74,29,75,30,74,35,69,40,62,46,54,49,51,48,50,47,48,45,50,38,60,31,72,25,82,23,86,24,88,25,88,32,84,43,79,47,75,47,75,45,76,333
};
const int buk_46[] = { // о
34,52,23,58,17,64,13,73,10,79,10,82,11,87,15,90,20,88,28,84,34,80,43,74,47,65,47,59,45,56,38,52,32,52,666,666,25,87,34,82,
44,79,48,78,48,78,49,78,48,78,666,666,11,74,16,67,19,64,333
};
const int buk_47[] = { // п
2,94,2,92,6,86,13,68,22,49,27,39,26,39,27,40,27,41,666,666,18,65,20,59,27,54,35,50,42,47,42,47,45,50,42,58,35,70,28,
81,25,86,24,89,25,90,27,90,34,86,43,78,44,77,44,76,45,76,44,75,333
};
const int buk_48[] = { // р
4,84,3,83,9,78,21,56,29,44,31,39,30,41,25,54,18,74,9,99,-2,124,-5,130,-4,128,666,666,24,63,29,57,41,50,49,49,53,52,53,60,47,73,37,83,21,86,11,88,11,86,333
};
const int buk_49[] = { // с
35,46,24,49,18,55,12,62,6,74,4,85,9,89,18,91,25,88,39,81,45,77,46,77,46,76,333
};
const int buk_50[] = { // т
19,49,18,50,16,57,12,68,7,79,1,88,0,92,0,93,1,92,666,666,17,66,27,55,31,49,31,49,32,50,29,60,25,70,21,77,18,84,17,85,20,81,24,69,29,62,34,58,36,
56,37,59,35,68,29,78,28,84,27,84,30,85,37,79,44,76,43,75,44,75,666,666,20,42,20,41,35,40,45,38,45,37,45,38,46,38,333
};
const int buk_51[] = { // у
10,74,18,60,22,53,23,50,22,50,21,54,17,69,15,77,18,79,27,73,35,66,43,54,45,50,44,51,38,65,32,79,28,94,25,106,20,
118,14,124,6,129,-4,130,-11,126,-10,122,-7,115,2,107,12,99,28,86,45,79,52,73,52,73,52,73,333
};
const int buk_52[] = { // ф
44,49,42,50,37,49,33,50,27,54,21,58,18,62,14,65,10,70,8,72,6,76,5,82,5,83,6,86,10,87,19,86,24,85,31,82,37,78,43,75,49,69,53,
61,54,54,53,49,42,47,27,57,666,666,41,42,37,49,32,58,25,77,16,97,8,116,4,126,4,126,4,124,333
};
const int buk_53[] = { // х
27,44,28,45,27,45,28,48,30,56,30,64,30,74,32,81,32,87,33,88,33,88,33,88,33,88,666,666,9,87,8,86,8,86,8,89,8,87,8,88,8,88,8,87,10,87,17,80,
27,70,40,60,49,54,53,50,53,50,53,49,53,50,666,666,33,89,33,89,35,89,39,85,45,80,46,79,47,79,47,78,666,666,6,81,6,81,6,82,8,87,9,88,9,86,333
};
const int buk_54[] = { // ц
18,48,18,51,14,60,9,76,7,85,8,89,12,91,20,87,30,80,41,65,49,52,49,48,49,48,48,47,46,57,43,62,38,71,35,76,33,86,31,93,31,94,31,93,31,94,31,94,
31,92,31,94,32,94,31,94,32,94,31,94,31,94,32,94,33,94,34,96,35,102,34,103,32,105,24,107,20,105,17,104,18,102,18,102,20,100,26,95,35,88,43,81,46,80,46,79,333
};
const int buk_55[] = { // ч
22,47,20,51,15,59,13,67,16,77,24,75,33,71,44,60,49,50,50,47,50,48,49,49,44,57,37,69,29,78,27,83,25,93,26,93,29,94,38,85,46,75,47,74,48,76,333
};
const int buk_56[] = { // ш
22,47,22,47,20,49,17,54,13,63,7,76,4,86,5,86,13,82,22,72,31,59,33,56,33,52,33,52,33,52,34,53,30,59,25,70,23,75,21,83,22,85,27,86,30,80,37,68,46,
56,47,49,47,49,47,49,46,49,45,49,47,50,45,49,43,53,39,63,35,71,33,76,32,81,31,82,31,83,32,85,32,85,34,87,36,86,40,82,43,78,44,77,44,77,44,77,44,77,
666,666,3,101,3,101,5,100,11,98,21,96,30,96,33,94,33,95,33,95,32,95,333
};
const int buk_57[] = { // щ
22,46,21,47,21,52,18,58,16,68,12,78,13,80,15,81,18,81,25,71,33,59,38,48,41,47,41,47,40,47,37,51,34,58,31,67,29,76,30,81,32,81,35,83,41,75,
47,64,53,54,55,50,54,50,53,52,49,59,45,73,40,83,36,89,34,96,36,99,34,107,32,108,26,108,21,105,20,102,20,103,21,100,28,93,41,82,51,71,51,72,52,72,333
};
const int buk_58[] = { // ъ
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,
666,666,17,52,17,52,16,50,17,48,19,48,22,48,25,51,29,50,35,45,36,44,666,666,11,56,12,57,16,52,17,52,19,50,21,50,333
};
const int buk_59[] = { // ы
49,45,49,47,45,51,40,63,35,72,30,81,28,90,28,92,39,84,47,74,46,75,47,75,666,666,25,47,24,46,23,45,22,47,21,48,17,58,11,67,7,76,3,85,4,90,5,91,
14,89,20,84,22,79,22,74,21,71,20,70,11,72,333
};
const int buk_60[] = { // ь
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,333
};
const int buk_61[] = { // э
23,51,35,44,45,43,50,49,49,58,43,71,36,82,29,84,23,89,15,90,9,87,6,82,10,75,11,76,666,666,18,71,21,70,35,66,45,64,44,64,45,64,333
};
const int buk_62[] = { // ю
10,76,10,77,13,74,19,66,26,57,26,55,25,53,26,51,27,51,27,52,25,51,26,51,27,51,26,51,25,51,26,51,25,51,21,62,15,75,9,92,7,96,11,87,12,81,14,81,
17,80,25,69,29,65,29,66,29,65,29,65,35,58,28,66,22,77,23,90,32,87,44,74,51,61,49,53,39,55,30,64,333
};
const int buk_63[] = { // я
9,80,8,81,8,86,12,91,17,90,24,82,35,71,43,59,43,49,40,48,32,47,25,51,20,56,16,64,18,67,22,69,33,63,45,57,51,48,50,46,48,47,43,
52,35,65,30,75,27,83,26,89,27,90,30,91,35,85,42,79,46,74,47,73,47,74,48,74,333
};
const int buk_64[] = { // !
29,77,29,76,27,76,27,76,25,76,25,79,29,78,30,75,29,73,26,72,23,75,25,76,31,74,31,74,27,74,24,75,25,79,30,77,31,76,28,76,26,78,
31,78,34,73,30,74,27,77,28,75,666,666,44,26,36,37,33,49,33,55,32,58,40,51,45,40,48,23,52,18,47,21,38,36,36,48,37,51,44,45,49,
27,52,18,52,17,44,34,38,47,40,47,49,30,51,19,48,23,43,37,40,44,45,38,49,22,48,17,38,37,333
};
const int buk_65[] = { //
};
const int buk_66[] = { //
};
const int buk_67[] = { //
};
const int buk_68[] = { //
};
const int buk_69[] = { //
};
const int buk_70[] = { //
};
const int buk_71[] = { // (
35,38,35,39,35,39,35,40,33,40,30,44,26,50,24,51,22,57,19,65,16,72,14,77,13,81,12,84,13,89,12,93,13,96,14,97,14,97,13,96,
13,93,13,84,16,78,18,70,21,62,23,57,27,49,32,43,33,41,35,40,36,40,32,41,27,47,20,57,17,64,15,73,14,79,14,83,13,91,13,94,15,
98,14,99,16,98,14,91,15,82,16,76,17,70,19,63,23,56,26,49,30,45,32,41,34,39,35,40,35,39,30,43,24,53,20,63,17,70,16,77,17,80,17,85,15,91,14,92,14,92,333
};
const int buk_72[] = { // )
48,36,48,36,49,38,48,44,48,47,48,54,47,63,46,67,44,76,43,80,40,88,35,92,32,96,31,99,28,100,25,106,24,107,24,108,26,108,28,103,
32,98,37,91,43,85,47,76,49,69,50,62,50,56,50,49,50,45,48,42,48,38,49,37,49,35,48,34,49,35,49,38,50,45,333
};
const int buk_73[] = { // *
24,63,25,67,29,77,31,79,666,666,20,81,26,72,33,63,666,666,29,63,29,78,29,79,666,666,21,72,30,74,37,72,42,70,333
};
const int buk_74[] = { // +
37,54,36,55,31,61,26,75,22,84,21,84,21,88,666,666,15,74,17,73,28,71,37,72,42,71,42,72,333
};
const int buk_75[] = { // ,
22,82,21,82,22,83,21,84,21,86,21,85,23,86,26,83,25,81,22,81,21,84,21,86,22,85,24,81,22,84,21,83,25,82,24,81,24,84,24,89,23,93,22,94,21,97,20,99,19,
100,19,99,19,100,19,100,19,99,21,98,24,94,24,91,25,89,23,89,24,90,24,89,25,93,22,96,21,98,21,98,21,99,21,98,21,98,22,97,24,92,24,91,25,89,24,90,25,89,23,91,23,97,21,99,21,99,20,99,333
};
const int buk_76[] = { // -
16,71,16,71,16,71,16,71,16,71,21,70,31,71,40,71,45,72,45,71,45,71,44,71,45,70,45,70,45,71,44,71,333
};
const int buk_77[] = { // .
24,82,24,83,23,83,22,83,22,85,23,86,25,86,29,81,27,80,23,79,21,83,22,86,24,86,26,83,23,80,21,80,21,82,25,83,27,80,26,78,22,78,20,83,23,85,25,83,23,81,21,
81,20,84,22,85,25,82,24,80,23,83,25,83,25,82,23,81,23,85,24,84,25,86,23,85,22,88,23,87,24,87,23,84,333
};
const int buk_78[] = { //
};
const int buk_79[] = { // 0
34,46,34,45,32,44,32,45,28,49,23,56,19,67,15,79,17,84,21,85,30,79,42,69,49,56,49,46,44,43,30,48,21,63,333
};
const int buk_80[] = { // 1
21,57,21,57,21,58,21,58,24,55,33,45,42,37,44,32,44,32,43,37,37,50,31,68,26,76,26,78,25,79,666,666,11,89,16,86,25,83,33,84,35,85,35,85,333
};
const int buk_81[] = { // 2
25,46,26,43,27,38,34,34,41,34,46,38,42,47,36,57,26,65,18,73,11,80,5,86,5,87,7,83,14,77,19,76,24,81,29,83,33,82,36,79,38,79,333
};
const int buk_82[] = { // 3
23,51,25,49,27,44,30,41,36,39,43,37,45,40,44,44,39,53,33,58,30,61,29,61,29,60,34,58,40,59,43,65,40,72,36,79,34,82,31,82,23,86,18,84,15,80,15,78,333
};
const int buk_83[] = { // 4
37,36,32,45,24,60,19,74,22,72,32,68,40,68,666,666,44,59,34,81,28,97,27,98,29,97,333
};
const int buk_84[] = { // 5
24,40,37,37,49,33,51,34,666,666,24,51,21,58,22,57,28,50,36,54,41,65,40,73,30,80,17,83,11,82,10,80,333
};
const int buk_85[] = { // 6
52,40,47,40,41,43,33,49,25,58,21,64,18,71,14,79,16,83,19,87,29,83,37,81,43,72,44,63,34,60,25,66,333
};
const int buk_86[] = { // 7
25,50,25,49,25,50,25,44,29,42,34,41,41,43,47,44,54,38,58,37,57,37,53,42,44,57,35,70,26,82,20,94,15,98,17,98,666,666,20,72,17,74,17,74,25,71,45,64,48,64,333
};
const int buk_87[] = { // 8
28,42,33,36,41,34,47,34,47,43,41,55,34,61,26,67,21,73,15,79,15,84,21,88,27,86,35,82,39,73,37,61,27,50,27,42,333
};
const int buk_88[] = { // 9
35,36,30,40,25,46,23,54,24,62,29,66,40,64,46,56,49,42,44,37,38,40,37,42,666,666,50,48,46,58,43,64,38,72,33,77,25,81,18,85,11,81,11,78,333
};
const int buk_89[] = { //
};
const int buk_90[] = { //
};
const int buk_91[] = { //
};
const int buk_92[] = { // =
19,69,16,68,17,68,23,67,36,66,42,65,666,666,11,85,18,86,29,83,35,83,37,84,333
};
const int buk_93[] = { //
};
const int buk_94[] = { // ?
34,29,34,29,34,27,33,24,34,20,37,17,43,16,49,17,51,20,52,25,52,31,49,38,47,43,43,48,41,50,37,51,31,55,27,59,24,64,24,67,23,67,
24,67,24,67,666,666,28,80,25,82,24,86,27,84,29,82,27,81,21,82,21,84,25,84,28,82,26,82,25,82,25,81,666,666,35,26,36,21,40,17,43,
18,47,18,51,21,51,26,49,32,46,39,42,46,37,49,32,53,28,57,25,62,23,64,24,67,25,69,25,68,24,67,333
};
/////////////////////////
const struct {//структура массивов букв алфавита
const int *bitmap;
}
bukvi[]={buk_0,buk_1,buk_2,buk_3,buk_4,buk_5,buk_6,buk_7,buk_8,buk_9,buk_10,buk_11,buk_12,buk_13,buk_14,buk_15,buk_16,buk_17,buk_18,buk_19,
buk_20,buk_21,buk_22,buk_23,buk_24,buk_25,buk_26,buk_27,buk_28,buk_29,buk_30,buk_31,buk_32,buk_33,buk_34,buk_35,buk_36,buk_37,buk_38,buk_39,
buk_40,buk_41,buk_42,buk_43,buk_44,buk_45,buk_46,buk_47,buk_48,buk_49,buk_50,buk_51,buk_52,buk_53,buk_54,buk_55,buk_56,buk_57,buk_58,buk_59,
buk_60,buk_61,buk_62,buk_63,buk_64,buk_65,buk_66,buk_67,buk_68,buk_69,buk_70,buk_71,buk_72,buk_73,buk_74,buk_75,buk_76,buk_77,buk_78,buk_79,
buk_80,buk_81,buk_82,buk_83,buk_84,buk_85,buk_86,buk_87,buk_88,buk_89,buk_90,buk_91,buk_92,buk_93,buk_94,};
/////////////////////////
//функция рисования буквы из массива данных
void ris_bukvu(int Xb,int Yb,const int *massiv,float M, int S,uint16_t color_){
float b=2.3;//коэф. сжатия-растяжения по осям
float c=1.3;//
// S - размывание и отзеркаливание
int i=0;
while (massiv[i+2]!=333) {
if(massiv[i+2]!=666){
if(S>=0){
tft.drawLine(Xb+b*M*(massiv[i]),Yb+c*M*(massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,S+Yb+c*M*(massiv[i+3]) ,color_);
tft.drawLine(Xb+b*M*(massiv[i]),S+Yb+c*M*(massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,Yb+c*M*(massiv[i+3]) ,color_);
}
else{
tft.drawLine(Xb+b*M*(massiv[i]),Yb+0.9*c*M*(-massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,abs(S)+Yb+0.9*c*M*(-massiv[i+3]) ,color_);
tft.drawLine(Xb+b*M*(massiv[i]),abs(S)+Yb+0.9*c*M*(-massiv[i+1]) ,Xb+b*M*(massiv[i+2]) ,Yb+0.9*c*M*(-massiv[i+3]) ,color_);
}
}
else{i=i+2;}
i=i+2;
}
}
///////////////////
// Функция рисования букв строки
void ris_str(int x,int y,String source,float Ms,int S,uint16_t color_)
{
int a=200;//базовый размер в пикселях шаблона в сканере букв
int ii,k;
// String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); ii = 0;
while (ii < k) {
n = source[ii]; ii++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[ii]; ii++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[ii]; ii++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n;
//
if(n>=192&&n<=255){//условия сопоставления кодов символов и массивов символов для русских букв
if(n<224){x=x+a*Ms;}else{x=x+a*Ms/2;}
ris_bukvu(x,y,bukvi[n-192].bitmap,Ms,S,color_);
}
if(n==32){x=x+a*Ms/2;}//для пробела
if(n>32&&n<64){//для цифр и знаков препинания
x=x+a*Ms/2;
ris_bukvu(x,y,bukvi[n+31].bitmap,Ms,S,color_);
}
//
}
}
//////////////////////
А не находил никто на али экспресс экраны побольше чем 3.95 дюйма и 320Х480 с такой же 14 выводной распиновкой?
С rp2040 пора на HDMI переходить !!! Ну в край на VGA …
Загуглите МУРМУЛЯТОР
…
VGA и уно пробовал
Типа такого, но хотелось бы не паять, а готовый переходник RP2040 - монитор, библиотеку под управление :)… хотя бы рисовать точки и отрезки.
Хотя надо подробнее про мурмулятор, может там это уже всё есть.
купите себе уже какую нибудь OrangePI, воткните в HDMI 4K монитор и наслаждайтесь свободой…
Для подключения есть несколько проектов типа HDMI shield для ардуино
Ох, не знаю…мониторы от пк VGA уже хлам, для них бы адаптацию под RP2040. малинки-апельсинки это же уже не платки с мк…
Шрифт портится при повороте почему-то
Осталось научится по кругу выводить текст.
Закажите собранный мульмулятор. HDMI там реализован на одном ядре и выводит буфер на экран. Вторым ядром можно в этот буфер хоть черта лысого поместить … или же залить прошивку какого-нибудь пк из 90х и из него на Ваське писать … там и moveto lineto circle есть …
что это
Спойлер
//ПЕЧАТЬ БУКВ И СЛОВ виды почерка
#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
#include "ris_fun_.h"//файл хранения массивов букв и функций их обработки
//uint16_t color=tft.color565(0,0,0);
uint16_t color=tft.color565(238,206,155);
float m=0.25;//масштаб букв
void setup(){
tft.init();
tft.setRotation(3); // Переводим дисплей в альбомную ориентацию
tft.fillScreen(color);
//пример вывода слов
ris_str_krug(240,160,160,"Текст выводится по половине круга и дальше..1234567890..",m,1,tft.color565(0,50,200));//
ris_str_krug(240,160,195,"выводится по половине круга и дальше..12345..Текст ",1.3*m,2,tft.color565(255,0,0));//
ris_str_krug(240,160,130,"выводится по половине круга и дальше...1234567890...Текст ",0.8*m,0,tft.color565(0,100,0));//
ris_str_krug(240,660,530," КРУГИ",1.6*m,3,tft.color565(0,0,0));//
}
void loop()
{
}
////////////////////
//почерк бисером
//m=0.10;
//b=2.3;
//c=1.3;
//a=200;
//почерк столбиком
//m=0.10;
//b=2.3;
//c=4.0;
//a=200;
//почерк вытянутый
//m=0.10;
//b=2.3;
//c=2.0;
//a=250;
//почерк раздельный
//m=0.15;
//b=1.0;
//c=2.0;
//a=140;
Спойлер
const int buk_0[] = { // А
-32,80,-31,81,-29,84,-27,88,-22,89,-14,85,-6,79,2,71,10,60,17,46,22,32,28,22,36,12,43,7,44,6,47,7,47,14,46,22,
42,35,35,49,29,64,25,74,23,82,21,85,21,87,20,91,20,90,666,666,25,57,24,50,17,43,7,37,1,39,-3,41,-8,47,-10,55,-9,66,-6,
75,2,81,10,83,22,85,34,83,45,79,49,75,50,75,51,75,51,75,333
};
const int buk_1[] = { // Б
-33,80,-33,79,-32,81,-31,83,-28,85,-22,85,-14,82,-10,75,-3,67,1,60,9,46,12,37,17,27,21,20,23,16,24,14,24,13,24,
13,666,666,4,38,0,36,-4,31,-5,26,-4,21,-1,14,8,10,22,7,43,7,64,5,75,3,72,4,666,666,14,45,20,40,24,37,30,35,35,37,39,41,
43,47,45,54,46,60,44,65,42,73,38,77,34,83,30,88,25,90,20,91,15,91,11,88,7,86,7,86,8,83,15,80,23,78,31,78,40,76,44,78,43,77,44,78,333
};
const int buk_2[] = { // В
-34,78,-33,78,-32,80,-28,85,-23,83,-14,72,-1,51,25,2,26,0,666,666,-1,26,14,15,28,8,42,7,49,13,45,26,34,36,15,46,12,48,23,42,
31,41,38,46,42,56,38,68,31,77,20,86,9,91,-3,88,-7,79,-2,73,9,68,21,65,35,69,45,75,45,76,44,76,333
};
const int buk_3[] = { // Г
-33,77,-31,80,-29,84,-23,88,-11,80,2,66,21,35,29,17,30,15,30,15,666,666,-7,38,-10,34,-9,27,-8,24,0,20,13,15,35,10,56,6,68,2,
69,1,70,1,666,666,8,87,8,86,11,84,21,81,31,78,44,74,45,74,45,74,333
};
const int buk_4[] = { // Д
63,8,61,7,56,6,54,6,51,9,45,17,38,25,33,34,25,45,21,53,12,63,6,71,-3,77,-9,82,-15,86,-22,88,-27,87,-31,85,-32,78,
-30,74,-25,72,-17,71,-11,72,-1,77,6,82,17,84,24,85,35,83,43,78,50,69,53,60,53,50,53,39,44,29,29,18,16,15,3,16,-7,
21,-7,26,-7,39,8,48,333
};
const int buk_5[] = { // Е
60,17,55,12,45,7,33,8,22,14,13,23,10,29,14,35,22,38,32,39,40,39,40,37,31,32,21,31,5,33,-11,39,-20,47,-25,56,-28,
67,-27,75,-24,85,-16,90,-4,94,11,92,23,88,38,82,43,79,43,79,43,79,44,79,666,666,-35,79,-33,78,-29,74,-30,75,-29,73,333
};
const int buk_6[] = { // Ж
-2,15,-1,11,2,5,9,2,13,0,15,2,17,8,18,17,15,29,11,42,7,51,2,61,-2,73,-8,78,-11,82,-14,86,-17,88,-21,91,-22,90,-28,85,-31,80,
-33,75,666,666,70,5,73,1,60,1,53,7,45,17,36,31,31,41,26,50,22,56,20,66,20,72,19,75,19,80,19,83,21,86,23,87,27,84,35,83,43,80,48,
76,46,76,666,666,31,15,25,28,22,39,19,50,15,61,12,71,10,78,7,84,7,86,8,85,666,666,-8,67,-8,68,-5,64,6,56,31,42,47,31,46,32,44,33,333
};
const int buk_7[] = { // З
13,10,20,6,26,4,36,4,41,6,43,11,43,15,38,22,30,29,20,35,13,36,12,36,19,33,28,31,37,33,42,37,47,43,51,49,52,54,51,
58,49,65,48,68,45,74,42,79,33,82,21,88,13,89,4,89,-6,90,-15,88,-25,84,-32,80,-36,79,-36,79,-36,79,333
};
const int buk_8[] = { // И
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,333
};
const int buk_9[] = { // Й
3,7,9,4,12,6,12,10,8,20,3,29,-3,38,-8,47,-11,55,-16,62,-18,68,-19,76,-18,80,-13,81,-6,80,1,78,10,70,17,63,25,51,33,37,42,26,48,
18,52,9,53,6,53,6,53,6,50,9,45,18,40,28,35,38,30,49,26,58,24,64,23,70,24,74,24,79,25,83,27,83,30,83,34,85,38,84,44,80,45,80,45,
79,46,78,666,666,-35,77,-31,76,-24,73,-18,67,-15,65,666,666,22,-1,23,2,30,2,35,0,42,-7,333
};
const int buk_10[] = { // К
-33,79,-32,82,-29,86,-22,85,-14,80,-4,62,4,43,13,23,19,11,24,4,26,3,666,666,8,48,17,33,31,20,45,10,58,5,62,5,62,10,
666,666,14,40,19,40,22,42,24,51,22,58,19,68,16,75,17,81,19,86,23,84,27,83,35,81,43,76,43,76,333
};
const int buk_11[] = { // Л
-31,80,-31,81,-31,81,-30,82,-26,86,-21,86,-12,83,-8,78,-3,71,3,59,12,45,19,33,26,18,32,12,37,5,43,3,45,3,49,5,
51,7,52,13,51,18,49,26,46,33,43,39,41,47,36,56,33,65,30,71,28,77,26,81,27,83,28,84,31,86,35,85,41,80,48,76,47,75,333
};
const int buk_12[] = { // М
-32,78,-33,79,-34,87,-29,91,-15,83,-3,65,11,42,28,13,30,6,27,10,24,17,19,28,9,48,4,65,1,76,0,82,2,83,11,77,30,
58,53,23,68,2,68,0,64,6,63,11,53,27,45,45,34,62,27,75,25,81,24,85,26,86,33,84,44,78,45,78,333
};
const int buk_13[] = { // Н
-32,80,-34,82,-32,88,-29,91,-23,88,-15,75,-5,58,22,5,22,1,22,1,22,3,666,666,57,8,52,20,46,31,40,45,33,58,29,66,
26,77,22,86,24,87,29,83,41,78,47,75,46,74,666,666,-9,58,4,55,31,45,43,42,48,39,50,38,666,666,-1,18,8,11,21,0,21,1,333
};
const int buk_14[] = { // О
30,4,24,7,18,10,8,19,1,26,-7,37,-15,54,-20,64,-20,73,-16,80,-8,84,8,81,19,76,27,68,35,58,44,45,52,31,54,19,54,10,
51,4,43,0,17,8,666,666,8,84,10,84,22,82,35,78,44,77,46,76,666,666,-35,78,-33,75,-25,70,-21,65,-21,63,333
};
const int buk_15[] = { // П
-32,78,-35,81,-36,85,-33,88,-27,88,-15,76,-5,59,14,30,15,25,14,24,14,25,666,666,49,24,38,39,27,58,17,79,13,83,13,84,
13,84,13,84,13,84,14,87,22,87,35,83,45,80,50,79,46,79,666,666,0,37,-7,35,-10,32,-9,29,-3,25,6,21,24,17,48,12,69,6,78,1,76,3,333
};
const int buk_16[] = { // Р
0,91,0,90,8,88,27,80,41,77,43,77,43,77,44,77,666,666,-36,80,-34,81,-30,85,-23,88,-10,76,-1,57,8,31,11,20,11,19,12,18,11,18,
666,666,-11,39,-6,28,2,15,9,8,21,5,33,4,44,9,53,16,55,25,53,38,49,46,41,53,28,58,10,62,4,59,6,58,333
};
const int buk_17[] = { // С
55,29,58,24,60,17,58,11,51,5,44,4,34,6,21,7,14,12,4,20,-7,30,-16,41,-25,53,-29,63,-31,70,-30,79,-24,86,-14,91,3,87,20,83,
35,76,44,74,43,74,45,78,333
};
const int buk_18[] = { // Т
-31,81,-34,82,-35,83,-31,91,-25,90,-13,83,-3,68,11,39,12,34,12,33,666,666,-13,53,-16,48,-17,45,-11,39,3,32,25,23,58,9,67,
4,68,4,66,4,666,666,51,29,43,42,33,58,25,73,22,79,21,85,22,85,26,82,45,78,666,666,21,51,6,84,1,96,1,96,333
};
const int buk_19[] = { // У
-36,80,-37,79,-36,80,-34,81,-28,83,-19,84,-7,83,7,75,17,71,29,59,44,43,60,25,69,10,73,4,72,3,73,3,72,5,71,6,666,666,11,7,
12,8,8,14,2,22,-2,31,-3,41,0,47,10,50,25,50,36,47,37,46,38,47,37,47,37,47,37,47,666,666,15,86,13,88,13,86,13,86,15,87,21,85,30,80,42,78,49,78,48,77,48,77,48,77,333
};
const int buk_20[] = { // Ф
51,5,40,7,27,14,14,20,-1,33,-11,42,-17,49,-22,59,-22,66,-11,66,8,60,24,54,44,43,58,31,66,20,71,9,65,5,54,5,666,666,-34,80,-30,83,
-23,88,-14,90,-5,83,4,69,14,49,27,20,36,2,38,1,666,666,11,91,11,91,16,88,31,80,43,79,46,77,46,78,45,78,333
};
const int buk_21[] = { // Х
2,7,3,7,6,5,12,3,20,1,25,3,27,12,27,26,22,38,17,52,8,64,-3,76,-9,83,-13,85,-17,84,-20,82,-24,82,-28,78,-32,78,-32,78,-33,78,666,666,69,8,
63,6,56,7,48,11,38,19,29,29,21,41,15,53,10,64,9,75,11,86,17,91,26,86,37,82,43,78,46,76,48,73,49,74,333
};
const int buk_22[] = { // Ц
12,5,20,3,21,14,16,24,5,39,-8,55,-15,68,-19,79,-16,86,-9,88,4,82,24,56,40,37,53,22,58,14,56,15,53,20,50,26,43,39,40,54,35,68,35,75,36,82,
36,88,33,95,30,100,25,106,20,107,16,108,15,106,17,100,21,95,31,87,40,81,44,79,46,80,45,79,46,79,666,666,-37,80,-37,79,-37,78,-37,78,-33,76,-28,72,-22,67,-18,65,-17,65,333
};
const int buk_23[] = { // Ч
9,2,8,3,2,11,-5,27,-13,43,-14,57,-6,66,5,69,22,64,47,41,58,23,66,11,66,10,66,11,65,12,63,15,58,22,49,33,42,44,33,54,29,63,23,70,19,76,16,82,14,89,17,
90,21,89,27,89,36,83,44,78,47,74,48,74,47,75,47,74,666,666,-33,74,-30,71,-24,64,-15,53,-12,48,333
};
const int buk_24[] = { // Ш
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,333
};
const int buk_25[] = { // Щ
-2,11,-2,10,-2,8,2,2,13,8,8,22,-1,35,-11,52,-21,67,-24,80,-20,82,-11,79,0,68,14,49,27,29,37,13,41,7,41,6,40,9,33,18,23,34,15,50,7,66,4,75,6,80,13,
79,23,71,34,62,48,44,58,24,65,13,65,12,64,13,57,20,52,31,42,45,36,54,32,64,30,68,28,75,28,80,30,82,33,88,38,87,44,81,48,78,48,77,49,78,48,77,
666,666,31,80,31,82,32,89,33,94,33,97,31,104,29,108,24,110,18,112,14,110,12,109,12,105,14,99,16,98,20,96,29,91,33,89,33,90,33,89,333
};
const int buk_26[] = { // Ъ
};
const int buk_27[] = { // Ы
9,10,3,24,-6,40,-16,59,-22,72,-21,79,-13,81,0,73,14,58,23,42,20,35,6,38,-8,51,666,666,-31,74,-32,73,-31,74,-32,73,-34,75,-34,77,-30,72,-22,64,-13,57,
-11,53,666,666,47,17,41,29,31,45,26,56,21,68,18,76,16,82,16,89,17,89,23,86,33,78,45,74,45,74,333
};
const int buk_28[] = { // Ь
};
const int buk_29[] = { // Э
8,19,16,10,28,4,43,2,52,5,54,19,53,37,44,55,35,66,23,75,13,80,-2,84,-16,89,-25,86,-30,82,-31,77,-31,77,666,666,-1,90,0,90,5,88,10,85,21,83,31,79,
44,76,49,75,49,75,666,666,2,57,13,52,27,48,42,44,50,42,333
};
const int buk_30[] = { // Ю
-34,78,-34,79,-33,86,-28,90,-18,80,21,4,21,4,23,4,666,666,49,5,47,6,40,11,30,20,21,32,11,48,4,67,1,76,4,83,8,85,21,75,35,64,48,40,55,23,58,11,
56,3,52,3,666,666,9,87,11,86,21,82,37,75,44,76,46,76,666,666,-10,68,-10,68,-5,63,10,54,19,49,19,50,666,666,-7,30,1,21,13,11,20,3,20,4,333
};
const int buk_31[] = { // Я
-31,78,-30,76,-28,83,-20,86,-14,83,-7,81,3,73,13,64,21,54,27,44,33,35,37,21,40,14,40,5,35,2,32,2,22,6,11,17,0,26,-8,37,-10,45,-6,49,10,50,25,47,40,39,
52,27,60,16,64,10,62,7,62,7,56,13,50,22,41,33,33,45,26,59,22,70,21,80,21,86,22,88,25,89,32,88,38,84,45,80,49,78,49,79,49,78,333
};
/////////////////////////////////////////
const int buk_32[] = { // а
46,79,43,80,40,84,37,86,36,86,34,86,32,84,31,81,32,76,36,69,43,58,46,49,46,48,47,49,46,49,47,49,666,666,42,
54,41,52,38,51,34,49,29,50,24,54,19,58,13,63,9,69,5,74,3,81,1,88,3,89,9,89,19,82,27,79,29,78,29,78,333
};
const int buk_33[] = { // б
33,52,25,55,20,61,14,68,10,77,12,82,18,83,26,80,37,71,41,59,37,53,24,56,666,666,38,72,44,63,48,54,
45,47,40,41,34,39,31,37,29,33,31,28,43,15,666,666,53,8,58,4,666,666,25,83,34,80,44,76,46,75,333
};
const int buk_34[] = { // в
9,77,12,75,19,71,26,65,35,56,43,45,52,34,56,24,59,15,59,12,58,6,56,4,51,6,44,17,32,36,24,51,
18,67,13,78,10,85,12,88,18,89,29,81,40,71,46,62,47,57,42,50,32,48,25,61,666,666,20,90,25,86,44,75,333
};
const int buk_35[] = { // г
9,74,10,70,17,59,25,51,33,47,37,48,37,54,31,66,25,76,20,85,17,92,16,96,16,96,18,96,27,89,36,83,45,77,45,76,47,77,333
};
const int buk_36[] = { // д
30,51,19,59,14,65,10,79,15,83,26,80,38,72,47,63,46,51,35,50,25,59,666,666,31,96,25,109,21,120,17,128,
-9,131,-15,128,-13,125,-7,118,7,109,25,97,40,85,46,78,47,77,47,78,333
};
const int buk_37[] = { // е
9,77,12,77,22,71,42,59,49,50,45,48,43,47,36,50,27,62,21,73,17,84,14,93,15,94,23,87,38,78,46,74,46,75,333
};
const int buk_38[] = { // ж
22,45,22,50,24,64,27,78,31,84,32,86,32,87,33,85,666,666,2,91,1,90,2,89,9,82,21,70,35,59,45,50,50,48,50,48,50,47,50,47,666,666,34,47,
34,47,31,50,25,64,21,75,16,90,15,93,15,92,16,92,666,666,3,81,2,80,2,81,3,89,4,91,4,90,666,666,45,79,44,80,39,84,35,89,33,89,36,88,333
};
const int buk_39[] = { // з
6,78,10,73,19,60,28,49,35,49,35,54,31,63,21,71,21,72,26,63,35,65,37,67,37,72,33,82,24,102,15,113,7,120,-4,126,-12,131,
-15,132,-16,129,-10,118,2,106,18,95,40,77,47,75,46,75,47,74,333
};
const int buk_40[] = { // и
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,333
};
const int buk_41[] = { // й
23,49,24,50,23,49,23,49,22,50,20,56,15,63,12,73,8,81,6,89,8,92,16,85,27,72,35,58,38,49,41,45,39,48,34,56,29,66,25,
76,24,86,23,90,24,90,31,88,41,79,45,77,45,77,45,77,666,666,22,35,26,40,35,32,41,24,333
};
const int buk_42[] = { // к
8,73,8,73,9,73,16,64,28,48,34,41,32,42,32,43,28,48,19,72,10,91,8,94,9,92,10,91,10,92,666,666,19,83,
28,64,47,47,58,37,57,39,666,666,28,66,31,74,30,82,28,93,35,86,45,75,45,74,333
};
const int buk_43[] = { // л
10,77,9,78,7,83,9,86,12,84,23,74,35,59,42,46,43,45,45,43,43,47,37,56,28,74,26,80,25,85,26,85,33,83,42,79,49,73,50,71,49,73,333
};
const int buk_44[] = { // м
8,79,8,81,7,85,8,89,14,82,25,61,32,48,33,47,33,47,33,46,29,56,22,70,21,81,21,87,21,87,25,84,36,66,46,51,49,47,48,48,47,50,
41,63,33,79,30,88,31,90,32,89,42,80,44,77,45,77,45,77,333
};
const int buk_45[] = { // н
10,76,10,75,15,68,20,64,24,59,26,54,26,53,26,52,25,52,23,54,19,64,14,73,9,81,5,89,3,91,6,91,4,90,6,86,10,80,14,78,20,76,26,
74,29,75,30,74,35,69,40,62,46,54,49,51,48,50,47,48,45,50,38,60,31,72,25,82,23,86,24,88,25,88,32,84,43,79,47,75,47,75,45,76,333
};
const int buk_46[] = { // о
34,52,23,58,17,64,13,73,10,79,10,82,11,87,15,90,20,88,28,84,34,80,43,74,47,65,47,59,45,56,38,52,32,52,666,666,25,87,34,82,
44,79,48,78,48,78,49,78,48,78,666,666,11,74,16,67,19,64,333
};
const int buk_47[] = { // п
2,94,2,92,6,86,13,68,22,49,27,39,26,39,27,40,27,41,666,666,18,65,20,59,27,54,35,50,42,47,42,47,45,50,42,58,35,70,28,
81,25,86,24,89,25,90,27,90,34,86,43,78,44,77,44,76,45,76,44,75,333
};
const int buk_48[] = { // р
4,84,3,83,9,78,21,56,29,44,31,39,30,41,25,54,18,74,9,99,-2,124,-5,130,-4,128,666,666,24,63,29,57,41,50,49,49,53,52,53,60,47,73,37,83,21,86,11,88,11,86,333
};
const int buk_49[] = { // с
35,46,24,49,18,55,12,62,6,74,4,85,9,89,18,91,25,88,39,81,45,77,46,77,46,76,333
};
const int buk_50[] = { // т
19,49,18,50,16,57,12,68,7,79,1,88,0,92,0,93,1,92,666,666,17,66,27,55,31,49,31,49,32,50,29,60,25,70,21,77,18,84,17,85,20,81,24,69,29,62,34,58,36,
56,37,59,35,68,29,78,28,84,27,84,30,85,37,79,44,76,43,75,44,75,666,666,20,42,20,41,35,40,45,38,45,37,45,38,46,38,333
};
const int buk_51[] = { // у
10,74,18,60,22,53,23,50,22,50,21,54,17,69,15,77,18,79,27,73,35,66,43,54,45,50,44,51,38,65,32,79,28,94,25,106,20,
118,14,124,6,129,-4,130,-11,126,-10,122,-7,115,2,107,12,99,28,86,45,79,52,73,52,73,52,73,333
};
const int buk_52[] = { // ф
44,49,42,50,37,49,33,50,27,54,21,58,18,62,14,65,10,70,8,72,6,76,5,82,5,83,6,86,10,87,19,86,24,85,31,82,37,78,43,75,49,69,53,
61,54,54,53,49,42,47,27,57,666,666,41,42,37,49,32,58,25,77,16,97,8,116,4,126,4,126,4,124,333
};
const int buk_53[] = { // х
27,44,28,45,27,45,28,48,30,56,30,64,30,74,32,81,32,87,33,88,33,88,33,88,33,88,666,666,9,87,8,86,8,86,8,89,8,87,8,88,8,88,8,87,10,87,17,80,
27,70,40,60,49,54,53,50,53,50,53,49,53,50,666,666,33,89,33,89,35,89,39,85,45,80,46,79,47,79,47,78,666,666,6,81,6,81,6,82,8,87,9,88,9,86,333
};
const int buk_54[] = { // ц
18,48,18,51,14,60,9,76,7,85,8,89,12,91,20,87,30,80,41,65,49,52,49,48,49,48,48,47,46,57,43,62,38,71,35,76,33,86,31,93,31,94,31,93,31,94,31,94,
31,92,31,94,32,94,31,94,32,94,31,94,31,94,32,94,33,94,34,96,35,102,34,103,32,105,24,107,20,105,17,104,18,102,18,102,20,100,26,95,35,88,43,81,46,80,46,79,333
};
const int buk_55[] = { // ч
22,47,20,51,15,59,13,67,16,77,24,75,33,71,44,60,49,50,50,47,50,48,49,49,44,57,37,69,29,78,27,83,25,93,26,93,29,94,38,85,46,75,47,74,48,76,333
};
const int buk_56[] = { // ш
22,47,22,47,20,49,17,54,13,63,7,76,4,86,5,86,13,82,22,72,31,59,33,56,33,52,33,52,33,52,34,53,30,59,25,70,23,75,21,83,22,85,27,86,30,80,37,68,46,
56,47,49,47,49,47,49,46,49,45,49,47,50,45,49,43,53,39,63,35,71,33,76,32,81,31,82,31,83,32,85,32,85,34,87,36,86,40,82,43,78,44,77,44,77,44,77,44,77,
666,666,3,101,3,101,5,100,11,98,21,96,30,96,33,94,33,95,33,95,32,95,333
};
const int buk_57[] = { // щ
22,46,21,47,21,52,18,58,16,68,12,78,13,80,15,81,18,81,25,71,33,59,38,48,41,47,41,47,40,47,37,51,34,58,31,67,29,76,30,81,32,81,35,83,41,75,
47,64,53,54,55,50,54,50,53,52,49,59,45,73,40,83,36,89,34,96,36,99,34,107,32,108,26,108,21,105,20,102,20,103,21,100,28,93,41,82,51,71,51,72,52,72,333
};
const int buk_58[] = { // ъ
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,
666,666,17,52,17,52,16,50,17,48,19,48,22,48,25,51,29,50,35,45,36,44,666,666,11,56,12,57,16,52,17,52,19,50,21,50,333
};
const int buk_59[] = { // ы
49,45,49,47,45,51,40,63,35,72,30,81,28,90,28,92,39,84,47,74,46,75,47,75,666,666,25,47,24,46,23,45,22,47,21,48,17,58,11,67,7,76,3,85,4,90,5,91,
14,89,20,84,22,79,22,74,21,71,20,70,11,72,333
};
const int buk_60[] = { // ь
4,79,10,77,18,67,25,55,33,46,33,44,33,44,30,47,27,53,22,65,16,76,10,88,10,93,16,94,27,91,36,84,42,79,42,74,42,72,33,71,21,73,18,78,333
};
const int buk_61[] = { // э
23,51,35,44,45,43,50,49,49,58,43,71,36,82,29,84,23,89,15,90,9,87,6,82,10,75,11,76,666,666,18,71,21,70,35,66,45,64,44,64,45,64,333
};
const int buk_62[] = { // ю
10,76,10,77,13,74,19,66,26,57,26,55,25,53,26,51,27,51,27,52,25,51,26,51,27,51,26,51,25,51,26,51,25,51,21,62,15,75,9,92,7,96,11,87,12,81,14,81,
17,80,25,69,29,65,29,66,29,65,29,65,35,58,28,66,22,77,23,90,32,87,44,74,51,61,49,53,39,55,30,64,333
};
const int buk_63[] = { // я
9,80,8,81,8,86,12,91,17,90,24,82,35,71,43,59,43,49,40,48,32,47,25,51,20,56,16,64,18,67,22,69,33,63,45,57,51,48,50,46,48,47,43,
52,35,65,30,75,27,83,26,89,27,90,30,91,35,85,42,79,46,74,47,73,47,74,48,74,333
};
const int buk_64[] = { // !
29,77,29,76,27,76,27,76,25,76,25,79,29,78,30,75,29,73,26,72,23,75,25,76,31,74,31,74,27,74,24,75,25,79,30,77,31,76,28,76,26,78,
31,78,34,73,30,74,27,77,28,75,666,666,44,26,36,37,33,49,33,55,32,58,40,51,45,40,48,23,52,18,47,21,38,36,36,48,37,51,44,45,49,
27,52,18,52,17,44,34,38,47,40,47,49,30,51,19,48,23,43,37,40,44,45,38,49,22,48,17,38,37,333
};
const int buk_65[] = { //
};
const int buk_66[] = { //
};
const int buk_67[] = { //
};
const int buk_68[] = { //
};
const int buk_69[] = { //
};
const int buk_70[] = { //
};
const int buk_71[] = { // (
35,38,35,39,35,39,35,40,33,40,30,44,26,50,24,51,22,57,19,65,16,72,14,77,13,81,12,84,13,89,12,93,13,96,14,97,14,97,13,96,
13,93,13,84,16,78,18,70,21,62,23,57,27,49,32,43,33,41,35,40,36,40,32,41,27,47,20,57,17,64,15,73,14,79,14,83,13,91,13,94,15,
98,14,99,16,98,14,91,15,82,16,76,17,70,19,63,23,56,26,49,30,45,32,41,34,39,35,40,35,39,30,43,24,53,20,63,17,70,16,77,17,80,17,85,15,91,14,92,14,92,333
};
const int buk_72[] = { // )
48,36,48,36,49,38,48,44,48,47,48,54,47,63,46,67,44,76,43,80,40,88,35,92,32,96,31,99,28,100,25,106,24,107,24,108,26,108,28,103,
32,98,37,91,43,85,47,76,49,69,50,62,50,56,50,49,50,45,48,42,48,38,49,37,49,35,48,34,49,35,49,38,50,45,333
};
const int buk_73[] = { // *
24,63,25,67,29,77,31,79,666,666,20,81,26,72,33,63,666,666,29,63,29,78,29,79,666,666,21,72,30,74,37,72,42,70,333
};
const int buk_74[] = { // +
37,54,36,55,31,61,26,75,22,84,21,84,21,88,666,666,15,74,17,73,28,71,37,72,42,71,42,72,333
};
const int buk_75[] = { // ,
22,82,21,82,22,83,21,84,21,86,21,85,23,86,26,83,25,81,22,81,21,84,21,86,22,85,24,81,22,84,21,83,25,82,24,81,24,84,24,89,23,93,22,94,21,97,20,99,19,
100,19,99,19,100,19,100,19,99,21,98,24,94,24,91,25,89,23,89,24,90,24,89,25,93,22,96,21,98,21,98,21,99,21,98,21,98,22,97,24,92,24,91,25,89,24,90,25,89,23,91,23,97,21,99,21,99,20,99,333
};
const int buk_76[] = { // -
16,71,16,71,16,71,16,71,16,71,21,70,31,71,40,71,45,72,45,71,45,71,44,71,45,70,45,70,45,71,44,71,333
};
const int buk_77[] = { // .
24,82,24,83,23,83,22,83,22,85,23,86,25,86,29,81,27,80,23,79,21,83,22,86,24,86,26,83,23,80,21,80,21,82,25,83,27,80,26,78,22,78,20,83,23,85,25,83,23,81,21,
81,20,84,22,85,25,82,24,80,23,83,25,83,25,82,23,81,23,85,24,84,25,86,23,85,22,88,23,87,24,87,23,84,333
};
const int buk_78[] = { //
};
const int buk_79[] = { // 0
34,46,34,45,32,44,32,45,28,49,23,56,19,67,15,79,17,84,21,85,30,79,42,69,49,56,49,46,44,43,30,48,21,63,333
};
const int buk_80[] = { // 1
21,57,21,57,21,58,21,58,24,55,33,45,42,37,44,32,44,32,43,37,37,50,31,68,26,76,26,78,25,79,666,666,11,89,16,86,25,83,33,84,35,85,35,85,333
};
const int buk_81[] = { // 2
25,46,26,43,27,38,34,34,41,34,46,38,42,47,36,57,26,65,18,73,11,80,5,86,5,87,7,83,14,77,19,76,24,81,29,83,33,82,36,79,38,79,333
};
const int buk_82[] = { // 3
23,51,25,49,27,44,30,41,36,39,43,37,45,40,44,44,39,53,33,58,30,61,29,61,29,60,34,58,40,59,43,65,40,72,36,79,34,82,31,82,23,86,18,84,15,80,15,78,333
};
const int buk_83[] = { // 4
37,36,32,45,24,60,19,74,22,72,32,68,40,68,666,666,44,59,34,81,28,97,27,98,29,97,333
};
const int buk_84[] = { // 5
24,40,37,37,49,33,51,34,666,666,24,51,21,58,22,57,28,50,36,54,41,65,40,73,30,80,17,83,11,82,10,80,333
};
const int buk_85[] = { // 6
52,40,47,40,41,43,33,49,25,58,21,64,18,71,14,79,16,83,19,87,29,83,37,81,43,72,44,63,34,60,25,66,333
};
const int buk_86[] = { // 7
25,50,25,49,25,50,25,44,29,42,34,41,41,43,47,44,54,38,58,37,57,37,53,42,44,57,35,70,26,82,20,94,15,98,17,98,666,666,20,72,17,74,17,74,25,71,45,64,48,64,333
};
const int buk_87[] = { // 8
28,42,33,36,41,34,47,34,47,43,41,55,34,61,26,67,21,73,15,79,15,84,21,88,27,86,35,82,39,73,37,61,27,50,27,42,333
};
const int buk_88[] = { // 9
35,36,30,40,25,46,23,54,24,62,29,66,40,64,46,56,49,42,44,37,38,40,37,42,666,666,50,48,46,58,43,64,38,72,33,77,25,81,18,85,11,81,11,78,333
};
const int buk_89[] = { //
};
const int buk_90[] = { //
};
const int buk_91[] = { //
};
const int buk_92[] = { // =
19,69,16,68,17,68,23,67,36,66,42,65,666,666,11,85,18,86,29,83,35,83,37,84,333
};
const int buk_93[] = { //
};
const int buk_94[] = { // ?
34,29,34,29,34,27,33,24,34,20,37,17,43,16,49,17,51,20,52,25,52,31,49,38,47,43,43,48,41,50,37,51,31,55,27,59,24,64,24,67,23,67,
24,67,24,67,666,666,28,80,25,82,24,86,27,84,29,82,27,81,21,82,21,84,25,84,28,82,26,82,25,82,25,81,666,666,35,26,36,21,40,17,43,
18,47,18,51,21,51,26,49,32,46,39,42,46,37,49,32,53,28,57,25,62,23,64,24,67,25,69,25,68,24,67,333
};
/////////////////////////
const struct {//структура массивов букв алфавита
const int *bitmap;
}
bukvi[]={buk_0,buk_1,buk_2,buk_3,buk_4,buk_5,buk_6,buk_7,buk_8,buk_9,buk_10,buk_11,buk_12,buk_13,buk_14,buk_15,buk_16,buk_17,buk_18,buk_19,
buk_20,buk_21,buk_22,buk_23,buk_24,buk_25,buk_26,buk_27,buk_28,buk_29,buk_30,buk_31,buk_32,buk_33,buk_34,buk_35,buk_36,buk_37,buk_38,buk_39,
buk_40,buk_41,buk_42,buk_43,buk_44,buk_45,buk_46,buk_47,buk_48,buk_49,buk_50,buk_51,buk_52,buk_53,buk_54,buk_55,buk_56,buk_57,buk_58,buk_59,
buk_60,buk_61,buk_62,buk_63,buk_64,buk_65,buk_66,buk_67,buk_68,buk_69,buk_70,buk_71,buk_72,buk_73,buk_74,buk_75,buk_76,buk_77,buk_78,buk_79,
buk_80,buk_81,buk_82,buk_83,buk_84,buk_85,buk_86,buk_87,buk_88,buk_89,buk_90,buk_91,buk_92,buk_93,buk_94,};
/////////////////////////
void otrezok(int X1,int X11,int Y1,int X2,int X22,int Y2,int Xo,int Yo,float aa,uint16_t color_){
X11=Xo+(X1-Xo)*cos(aa)-(Y1-Yo)*sin(aa);
Y1=Yo+(X1-Xo)*sin(aa)+(Y1-Yo)*cos(aa);X1=X11;
X22=Xo+(X2-Xo)*cos(aa)-(Y2-Yo)*sin(aa);
Y2=Yo+(X2-Xo)*sin(aa)+(Y2-Yo)*cos(aa);X2=X22;
tft.drawLine(X1,Y1,X2,Y2,color_);
}
/////////////////////
//функция рисования буквы из массива данных
void ris_bukvu(int Xb,int Yb,const int *massiv,float M,int Xo,int Yo,float aa,int S,uint16_t color_){
float b=1.7;//коэф. сжатия-растяжения по осям
float c=0.8;//
// S - размывание и отзеркаливание
int i=0;
int X1,X11,Y1,X2,X22,Y2;//
while (massiv[i+2]!=333) {
if(massiv[i+2]!=666){
if(S>=0){
X1=Xb+b*M*(massiv[i]);Y1=Yb+c*M*(massiv[i+1]);X2=Xb+b*M*(massiv[i+2]);Y2=S+Yb+c*M*(massiv[i+3]);
otrezok(X1,X11,Y1,X2,X22,Y2,Xo,Yo,aa,color_);//
X1=Xb+b*M*(massiv[i]);Y1=S+Yb+c*M*(massiv[i+1]);X2=Xb+b*M*(massiv[i+2]);Y2=Yb+c*M*(massiv[i+3]);
otrezok(X1,X11,Y1,X2,X22,Y2,Xo,Yo,aa,color_);//
}
else{
X1=Xb+b*M*(massiv[i]);Y1=Yb+0.9*c*M*(-massiv[i+1]);X2=Xb+b*M*(massiv[i+2]);Y2=abs(S)+Yb+0.9*c*M*(-massiv[i+3]);
otrezok(X1,X11,Y1,X2,X22,Y2,Xo,Yo,aa,color_);//
X1=Xb+b*M*(massiv[i]);Y1=abs(S)+Yb+0.9*c*M*(-massiv[i+1]);X2=Xb+b*M*(massiv[i+2]);Y2=Yb+0.9*c*M*(-massiv[i+3]);
otrezok(X1,X11,Y1,X2,X22,Y2,Xo,Yo,aa,color_);//
}
}
else{i=i+2;}
i=i+2;
}
}
///////////////////
// Функция рисования букв строки
void ris_str_krug(int x,int y,int R,String source,float Ms,int S,uint16_t color_)//
{
float aa=-PI/2;
int xg=0;int yg=0;//
int a=140;//базовый размер в пикселях шаблона в сканере букв
int ii,k;
// String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); ii = 0;
while (ii < k) {
n = source[ii]; ii++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[ii]; ii++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[ii]; ii++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n;
//
if(n>=192&&n<=255){//условия сопоставления кодов символов и массивов символов для русских букв
if(n<224){aa=aa+2*asin((a*Ms)/(2*R));xg=-R*sin(aa)+x;yg=-R*cos(aa)+y;}else{aa=aa+2*asin((a*Ms)/(4*R));xg=-R*sin(aa)+x;yg=-R*cos(aa)+y;}
ris_bukvu(480-xg,yg,bukvi[n-192].bitmap,Ms,480-xg,yg,aa,S,color_);
}
if(n==32){aa=aa+2*asin((a*Ms)/(4*R));xg=-R*sin(aa)+x;yg=-R*cos(aa)+y;}//для пробела
if(n>32&&n<64){//для цифр и знаков препинания
aa=aa+2*asin((a*Ms)/(4*R));xg=-R*sin(aa)+x;yg=-R*cos(aa)+y;
ris_bukvu(480-xg,yg,bukvi[n+31].bitmap,Ms,480-xg,yg,aa,S,color_);
}
//
}
}
Жаль, математика забудется через неделю, слишком много аргументов в функциях. Проверять все вариации вывода текста лень. Про продажу мурмуляторов не нашёл, схему внятную и библиотеку под работу экрана VGA не нашёл, сложный ресурс энтузиастов этих
разработчик есть в телеге, можно спросить, там жеж и схема была
Мульмуляторы есть на авито и в телеге профильной. Исходники то же есть. Просто там 9изначально упор был в эмуляцию Z80 ака Синклер и формат буфера экрана своеобразный (количество цветов и т.п. ) … Но по исходникам можно вкурить как программируются PIO модули для вывода на VGA и HDMI. Градаций цвета по минимуму конечно же …
Для тех Синклеры не застал/не паял видимо не вставит …
Есть аналог в плане игр, как я понимаю попроще, на ESP32:
и варианты-ссылки библиотек под плату.
VGA - анахронизм.
HDMI можно в телек воткнуть 4K …
Да, только телека для баловства мне не хватает… Пока с HDMI в хлам не сбрасывают…Не знаю, коллега молодой всего за 1200 р. купил экран на замену в смартфон. Нет на али адаптаций под ардуино смартфоновских экранов? Непонятно почему SPI экраны на 4 дюймах стали? Мне кажется, всякие сенсорные управлялки не требуют одновременного быстрого обновления данных на всём поле экрана.
Патамушта spi медленный для передачи какого нибудь 30и кадрового видео.
Ещё из анахронизмов - подключить плату с МК к смартфону.