Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
В первую очередь это явно не весь код. а какой-то кусок. Сделал поиск в гугле - это копипаста кода Гайвера - вот у него и спрашивай.
Как минимум для этого тебе нужен украинский фонт - у гайвера его нет. А потом ищи программиста. который добавит фонт в этот код. С учетом того, что код гайвера - я бы меньше чем за 5-7 тыр не взялся бы. Устраивает цена - пиши.
ЗЫ Увидел, что я тебе уже третий или четвертый раз отвечаю, полгода назад ты спрашивал ровно тоже самое ...
Сруктура битмэпа должна повторять структуру экрана, т.е.:
- высота рисунка должна быть кратна 8,
- первые 4 байта - заголовок аналогичный таковому для шрифта, т.е. первый байт ширина (dx), а второй - высота (dy) в пикселях, третий байт в данном случае смысла не имеет, потому 0xff, а в четвертом - количество кадров изображения: в простейшем случае - 1,
- далее идет сам битмап: в первом байте содержится вертикальный столбец из 8 пикселей - левый верхний. Во втором байте - второй слева верхний, и так - до правого конца битмэпа, т.е. всего dx байтов. Соотвественно, когда мы все их заполонили, это верхние 8 строк растра,
- следующие dx байтов содержат следующие 8 строк растра - аналогично. Всего строк растра - dy штук, байтов в строке битмэпа - (dy/8), а байтов в битмэпе dx*(dy/8), плюс, как упомянуто выше, 4 байта заголовок.
Здравствуйте,очень понравилась библиотека, действительно очень компактная, немогу разобраться как рисовать символы, необходимо вывести графическую индикацию заряда батареи-заполненный прямоугольник в правом верхнем углу 8*8 пикселей, с уменьшением заряда прямоугольник пустеет, экранчик SH1106 обьясните пожалуйста подробнее как мне это сделать.
Я нарисовал для начала пустой прямоугольник в паинте правильного размера по пикселям, сохранил в BMP формате затем перевёл картинку в двоичный массив при помощи программы Image2Code, лишние скобки убрал, создал переменную const uint8_t bat0[] PROGMEM = {сюда вставил массив}, и вывел на экран командой LD.drawBitmap(bat0,116, 1, 8, 8); получилось непонятной формы... совершенно не то что хотел, подскажите что неправильно сделал и как исправить, я так понимаю что ответ в цитированном сообщение, только я его не понимаю можно подробне обьяснить?
Сруктура битмэпа должна повторять структуру экрана, т.е.:
- высота рисунка должна быть кратна 8,
- первые 4 байта - заголовок аналогичный таковому для шрифта, т.е. первый байт ширина (dx), а второй - высота (dy) в пикселях, третий байт в данном случае смысла не имеет, потому 0xff, а в четвертом - количество кадров изображения: в простейшем случае - 1,
- далее идет сам битмап: в первом байте содержится вертикальный столбец из 8 пикселей - левый верхний. Во втором байте - второй слева верхний, и так - до правого конца битмэпа, т.е. всего dx байтов. Соотвественно, когда мы все их заполонили, это верхние 8 строк растра,
- следующие dx байтов содержат следующие 8 строк растра - аналогично. Всего строк растра - dy штук, байтов в строке битмэпа - (dy/8), а байтов в битмэпе dx*(dy/8), плюс, как упомянуто выше, 4 байта заголовок.
Здравствуйте! Подскажите пожалуйста как из bmp получить буфер для вывода битмапа с помощью Вашей библиотеки? Изменено - разобрался
Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
001
// работа с бегущим текстом
002
003
// **************** НАСТРОЙКИ ****************
004
#define TEXT_DIRECTION 1 // 1 - по горизонтали, 0 - по вертикали
005
#define MIRR_V 0 // отразить текст по вертикали (0 / 1)
006
#define MIRR_H 1 // отразить текст по горизонтали (0 / 1)
007
008
#define TEXT_HEIGHT 0 // высота, на которой бежит текст (от низа матрицы)
009
#define LET_WIDTH 5 // ширина буквы шрифта
010
#define LET_HEIGHT 8 // высота буквы шрифта
011
#define SPACE 1 // пробел
012
013
// --------------------- ДЛЯ РАЗРАБОТЧИКОВ ----------------------
014
015
int
offset = WIDTH;
016
017
void
fillString(String text,
byte
color) {
018
if
(loadingFlag) {
019
offset = WIDTH;
// перемотка в правый край
020
loadingFlag =
false
;
021
fullTextFlag =
false
;
022
}
023
024
025
if
(scrollTimer.isReady()) {
026
if
(showText) {
027
matrix.fillScreen(LOW);
028
byte
i = 0, j = 0;
029
while
(text[i] !=
'\0'
) {
030
if
((
byte
)text[i] > 191) {
// работаем с русскими буквами!
031
i++;
032
}
else
{
033
drawLetter(j, text[i], offset + j * (LET_WIDTH + SPACE), color);
034
i++;
035
j++;
036
}
037
}
038
039
offset--;
040
if
(offset < -j * (LET_WIDTH + SPACE)) {
// строка убежала
041
offset = WIDTH + 3;
042
if
(!autoFlag) showText =
false
;
043
}
044
matrix.write();
045
}
046
}
047
}
048
049
void
drawLetter(uint8_t index, uint8_t letter, int16_t offset,
byte
color) {
050
int8_t start_pos = 0, finish_pos = LET_WIDTH;
051
052
if
(offset < -LET_WIDTH || offset > WIDTH)
return
;
053
if
(offset < 0) start_pos = -offset;
054
if
(offset > (WIDTH - LET_WIDTH)) finish_pos = WIDTH - offset;
055
056
for
(
byte
i = start_pos; i < finish_pos; i++) {
057
int
thisByte;
058
if
(MIRR_V) thisByte = getFont((
byte
)letter, LET_WIDTH - 1 - i);
059
else
thisByte = getFont((
byte
)letter, i);
060
061
for
(
byte
j = 0; j < LET_HEIGHT; j++) {
062
boolean thisBit;
063
064
if
(MIRR_H) thisBit = thisByte & (1 << j);
065
else
thisBit = thisByte & (1 << (LET_HEIGHT - 1 - j));
066
067
// рисуем столбец (i - горизонтальная позиция, j - вертикальная)
068
if
(TEXT_DIRECTION) {
069
if
(thisBit) matrix.drawPixel(offset + i, TEXT_HEIGHT + j, 1);
070
else
matrix.drawPixel(offset + i, TEXT_HEIGHT + j, 0);
071
}
else
{
072
if
(thisBit) matrix.drawPixel(i, offset + TEXT_HEIGHT + j, 1);
073
else
matrix.drawPixel(i, offset + TEXT_HEIGHT + j, 0);
074
}
075
}
076
}
077
}
078
079
// ------------- СЛУЖЕБНЫЕ ФУНКЦИИ --------------
080
081
// интерпретатор кода символа в массиве fontHEX (для Arduino IDE 1.8.* и выше)
082
uint8_t getFont(uint8_t font, uint8_t row) {
083
font = font -
'0'
+ 16;
// перевод код символа из таблицы ASCII в номер согласно нумерации массива
084
if
(font <= 90)
return
pgm_read_byte(&(fontHEX[font][row]));
// для английских букв и символов
085
else
if
(font >= 112 && font <= 159) {
// и пизд*ц ждя русских
086
return
pgm_read_byte(&(fontHEX[font - 17][row]));
087
}
else
if
(font >= 96 && font <= 111) {
088
return
pgm_read_byte(&(fontHEX[font + 47][row]));
089
}
090
}
091
092
093
/*
094
// интерпретатор кода символа по ASCII в его номер в массиве fontHEX (для Arduino IDE до 1.6.*)
095
uint8_t getFontOld(uint8_t font, uint8_t row) {
096
font = font - '0' + 16; // перевод код символа из таблицы ASCII в номер согласно нумерации массива
097
if (font < 126) return pgm_read_byte(&(fontHEX[font][row])); // для английских букв и символов
098
else return pgm_read_byte(&(fontHEX[font - 65][row])); // для русских букв и символов (смещение -65 по массиву)
099
}
100
*/
001
// шрифты для вывода текста
002
const
uint8_t fontHEX[][5] PROGMEM = {
003
{0x00, 0x00, 0x00, 0x00, 0x00},
// 0x20 32
004
{0x00, 0x00, 0x6f, 0x00, 0x00},
// ! 0x21 33
005
{0x00, 0x07, 0x00, 0x07, 0x00},
// " 0x22 34
006
{0x14, 0x7f, 0x14, 0x7f, 0x14},
// # 0x23 35
007
{0x00, 0x07, 0x04, 0x1e, 0x00},
// $ 0x24 36
008
{0x23, 0x13, 0x08, 0x64, 0x62},
// % 0x25 37
009
{0x36, 0x49, 0x56, 0x20, 0x50},
// & 0x26 38
010
{0x00, 0x00, 0x07, 0x00, 0x00},
// ' 0x27 39
011
{0x00, 0x1c, 0x22, 0x41, 0x00},
// ( 0x28 40
012
{0x00, 0x41, 0x22, 0x1c, 0x00},
// ) 0x29 41
013
{0x14, 0x08, 0x3e, 0x08, 0x14},
// * 0x2a 42
014
{0x08, 0x08, 0x3e, 0x08, 0x08},
// + 0x2b 43
015
{0x00, 0x50, 0x30, 0x00, 0x00},
// , 0x2c 44
016
{0x08, 0x08, 0x08, 0x08, 0x08},
// - 0x2d 45
017
{0x00, 0x60, 0x60, 0x00, 0x00},
// . 0x2e 46
018
{0x20, 0x10, 0x08, 0x04, 0x02},
// / 0x2f 47
019
{0x3e, 0x51, 0x49, 0x45, 0x3e},
// 0 0x30 48
020
{0x00, 0x42, 0x7f, 0x40, 0x00},
// 1 0x31 49
021
{0x42, 0x61, 0x51, 0x49, 0x46},
// 2 0x32 50
022
{0x21, 0x41, 0x45, 0x4b, 0x31},
// 3 0x33 51
023
{0x18, 0x14, 0x12, 0x7f, 0x10},
// 4 0x34 52
024
{0x27, 0x45, 0x45, 0x45, 0x39},
// 5 0x35 53
025
{0x3c, 0x4a, 0x49, 0x49, 0x30},
// 6 0x36 54
026
{0x01, 0x71, 0x09, 0x05, 0x03},
// 7 0x37 55
027
{0x36, 0x49, 0x49, 0x49, 0x36},
// 8 0x38 56
028
{0x06, 0x49, 0x49, 0x29, 0x1e},
// 9 0x39 57
029
{0x00, 0x36, 0x36, 0x00, 0x00},
// : 0x3a 58
030
{0x00, 0x56, 0x36, 0x00, 0x00},
// ; 0x3b 59
031
{0x08, 0x14, 0x22, 0x41, 0x00},
// < 0x3c 60
032
{0x14, 0x14, 0x14, 0x14, 0x14},
// = 0x3d 61
033
{0x00, 0x41, 0x22, 0x14, 0x08},
// > 0x3e 62
034
{0x02, 0x01, 0x51, 0x09, 0x06},
// ? 0x3f 63
035
{0x3e, 0x41, 0x5d, 0x49, 0x4e},
// @ 0x40 64
036
{0x7e, 0x09, 0x09, 0x09, 0x7e},
// A 0x41 65
037
{0x7f, 0x49, 0x49, 0x49, 0x36},
// B 0x42 66
038
{0x3e, 0x41, 0x41, 0x41, 0x22},
// C 0x43 67
039
{0x7f, 0x41, 0x41, 0x41, 0x3e},
// D 0x44 68
040
{0x7f, 0x49, 0x49, 0x49, 0x41},
// E 0x45 69
041
{0x7f, 0x09, 0x09, 0x09, 0x01},
// F 0x46 70
042
{0x3e, 0x41, 0x49, 0x49, 0x7a},
// G 0x47 71
043
{0x7f, 0x08, 0x08, 0x08, 0x7f},
// H 0x48 72
044
{0x00, 0x41, 0x7f, 0x41, 0x00},
// I 0x49 73
045
{0x20, 0x40, 0x41, 0x3f, 0x01},
// J 0x4a 74
046
{0x7f, 0x08, 0x14, 0x22, 0x41},
// K 0x4b 75
047
{0x7f, 0x40, 0x40, 0x40, 0x40},
// L 0x4c 76
048
{0x7f, 0x02, 0x0c, 0x02, 0x7f},
// M 0x4d 77
049
{0x7f, 0x04, 0x08, 0x10, 0x7f},
// N 0x4e 78
050
{0x3e, 0x41, 0x41, 0x41, 0x3e},
// O 0x4f 79
051
{0x7f, 0x09, 0x09, 0x09, 0x06},
// P 0x50 80
052
{0x3e, 0x41, 0x51, 0x21, 0x5e},
// Q 0x51 81
053
{0x7f, 0x09, 0x19, 0x29, 0x46},
// R 0x52 82
054
{0x46, 0x49, 0x49, 0x49, 0x31},
// S 0x53 83
055
{0x01, 0x01, 0x7f, 0x01, 0x01},
// T 0x54 84
056
{0x3f, 0x40, 0x40, 0x40, 0x3f},
// U 0x55 85
057
{0x0f, 0x30, 0x40, 0x30, 0x0f},
// V 0x56 86
058
{0x3f, 0x40, 0x30, 0x40, 0x3f},
// W 0x57 87
059
{0x63, 0x14, 0x08, 0x14, 0x63},
// X 0x58 88
060
{0x07, 0x08, 0x70, 0x08, 0x07},
// Y 0x59 89
061
{0x61, 0x51, 0x49, 0x45, 0x43},
// Z 0x5a 90
062
{0x3c, 0x4a, 0x49, 0x29, 0x1e},
// [ 0x5b 91
063
{0x02, 0x04, 0x08, 0x10, 0x20},
// \ 0x5c 92
064
{0x00, 0x41, 0x7f, 0x00, 0x00},
// ] 0x5d 93
065
{0x04, 0x02, 0x01, 0x02, 0x04},
// ^ 0x5e 94
066
{0x40, 0x40, 0x40, 0x40, 0x40},
// _ 0x5f 95
067
{0x00, 0x00, 0x03, 0x04, 0x00},
// ` 0x60 96
068
{0x20, 0x54, 0x54, 0x54, 0x78},
// a 0x61 97
069
{0x7f, 0x48, 0x44, 0x44, 0x38},
// b 0x62 98
070
{0x38, 0x44, 0x44, 0x44, 0x20},
// c 0x63 99
071
{0x38, 0x44, 0x44, 0x48, 0x7f},
// d 0x64 100
072
{0x38, 0x54, 0x54, 0x54, 0x18},
// e 0x65 101
073
{0x08, 0x7e, 0x09, 0x01, 0x02},
// f 0x66 102
074
{0x0c, 0x52, 0x52, 0x52, 0x3e},
// g 0x67 103
075
{0x7f, 0x08, 0x04, 0x04, 0x78},
// h 0x68 104
076
{0x00, 0x44, 0x7d, 0x40, 0x00},
// i 0x69 105
077
{0x20, 0x40, 0x44, 0x3d, 0x00},
// j 0x6a 106
078
{0x00, 0x7f, 0x10, 0x28, 0x44},
// k 0x6b 107
079
{0x00, 0x41, 0x7f, 0x40, 0x00},
// l 0x6c 108
080
{0x7c, 0x04, 0x18, 0x04, 0x78},
// m 0x6d 109
081
{0x7c, 0x08, 0x04, 0x04, 0x78},
// n 0x6e 110
082
{0x38, 0x44, 0x44, 0x44, 0x38},
// o 0x6f 111
083
{0x7c, 0x14, 0x14, 0x14, 0x08},
// p 0x70 112
084
{0x08, 0x14, 0x14, 0x18, 0x7c},
// q 0x71 113
085
{0x7c, 0x08, 0x04, 0x04, 0x08},
// r 0x72 114
086
{0x48, 0x54, 0x54, 0x54, 0x20},
// s 0x73 115
087
{0x04, 0x3f, 0x44, 0x40, 0x20},
// t 0x74 116
088
{0x3c, 0x40, 0x40, 0x20, 0x7c},
// u 0x75 117
089
{0x1c, 0x20, 0x40, 0x20, 0x1c},
// v 0x76 118
090
{0x3c, 0x40, 0x30, 0x40, 0x3c},
// w 0x77 119
091
{0x44, 0x28, 0x10, 0x28, 0x44},
// x 0x78 120
092
{0x0c, 0x50, 0x50, 0x50, 0x3c},
// y 0x79 121
093
{0x44, 0x64, 0x54, 0x4c, 0x44},
// z 0x7a 122
094
{0x00, 0x08, 0x36, 0x41, 0x41},
// { 0x7b 123
095
{0x00, 0x00, 0x7f, 0x00, 0x00},
// | 0x7c 124
096
{0x41, 0x41, 0x36, 0x08, 0x00},
// } 0x7d 125
097
{0x04, 0x02, 0x04, 0x08, 0x04},
// ~ 0x7e 126
098
099
{0x7E, 0x11, 0x11, 0x11, 0x7E},
//__А (0xC0).
100
{0x7F, 0x49, 0x49, 0x49, 0x33},
//__Б (0xC1).
101
{0x7F, 0x49, 0x49, 0x49, 0x36},
//__В (0xC2).
102
{0x7F, 0x01, 0x01, 0x01, 0x03},
//__Г (0xC3).
103
{0xE0, 0x51, 0x4F, 0x41, 0xFF},
//__Д (0xC4).
104
{0x7F, 0x49, 0x49, 0x49, 0x41},
//__Е (0xC5).
105
{0x77, 0x08, 0x7F, 0x08, 0x77},
//__Ж (0xC6).
106
{0x41, 0x49, 0x49, 0x49, 0x36},
//__З (0xC7).
107
{0x7F, 0x10, 0x08, 0x04, 0x7F},
//__И (0xC8).
108
{0x7C, 0x21, 0x12, 0x09, 0x7C},
//__Й (0xC9).
109
{0x7F, 0x08, 0x14, 0x22, 0x41},
//__К (0xCA).
110
{0x20, 0x41, 0x3F, 0x01, 0x7F},
//__Л (0xCB).
111
{0x7F, 0x02, 0x0C, 0x02, 0x7F},
//__М (0xCC).
112
{0x7F, 0x08, 0x08, 0x08, 0x7F},
//__Н (0xCD).
113
{0x3E, 0x41, 0x41, 0x41, 0x3E},
//__О (0xCE).
114
{0x7F, 0x01, 0x01, 0x01, 0x7F},
//__П (0xCF).
115
{0x7F, 0x09, 0x09, 0x09, 0x06},
//__Р (0xD0).
116
{0x3E, 0x41, 0x41, 0x41, 0x22},
//__С (0xD1).
117
{0x01, 0x01, 0x7F, 0x01, 0x01},
//__Т (0xD2).
118
{0x47, 0x28, 0x10, 0x08, 0x07},
//__У (0xD3).
119
{0x1C, 0x22, 0x7F, 0x22, 0x1C},
//__Ф (0xD4).
120
{0x63, 0x14, 0x08, 0x14, 0x63},
//__Х (0xD5).
121
{0x7F, 0x40, 0x40, 0x40, 0xFF},
//__Ц (0xD6).
122
{0x07, 0x08, 0x08, 0x08, 0x7F},
//__Ч (0xD7).
123
{0x7F, 0x40, 0x7F, 0x40, 0x7F},
//__Ш (0xD8).
124
{0x7F, 0x40, 0x7F, 0x40, 0xFF},
//__Щ (0xD9).
125
{0x01, 0x7F, 0x48, 0x48, 0x30},
//__Ъ (0xDA).
126
{0x7F, 0x48, 0x30, 0x00, 0x7F},
//__Ы (0xDB).
127
{0x00, 0x7F, 0x48, 0x48, 0x30},
//__Ь (0xDC).
128
{0x22, 0x41, 0x49, 0x49, 0x3E},
//__Э (0xDD).
129
{0x7F, 0x08, 0x3E, 0x41, 0x3E},
//__Ю (0xDE).
130
{0x46, 0x29, 0x19, 0x09, 0x7F},
//__Я (0xDF).
131
132
{0x20, 0x54, 0x54, 0x54, 0x78},
//__а (0xE0).
133
{0x3C, 0x4A, 0x4A, 0x49, 0x31},
//__б (0xE1).
134
{0x7C, 0x54, 0x54, 0x28, 0x00},
//__в (0xE2).
135
{0x7C, 0x04, 0x04, 0x0C, 0x00},
//__г (0xE3).
136
{0xE0, 0x54, 0x4C, 0x44, 0xFC},
//__д (0xE4).
137
{0x38, 0x54, 0x54, 0x54, 0x18},
//__е (0xE5).
138
{0x6C, 0x10, 0x7C, 0x10, 0x6C},
//__ж (0xE6).
139
{0x44, 0x54, 0x54, 0x28, 0x00},
//__з (0xE7).
140
{0x7C, 0x20, 0x10, 0x08, 0x7C},
//__и (0xE8).
141
{0x78, 0x42, 0x24, 0x12, 0x78},
//__й (0xE9).
142
{0x7C, 0x10, 0x28, 0x44, 0x00},
//__к (0xEA).
143
{0x20, 0x44, 0x3C, 0x04, 0x7C},
//__л (0xEB).
144
{0x7C, 0x08, 0x10, 0x08, 0x7C},
//__м (0xEC).
145
{0x7C, 0x10, 0x10, 0x10, 0x7C},
//__н (0xED).
146
{0x38, 0x44, 0x44, 0x44, 0x38},
//__о (0xEE).
147
{0x7C, 0x04, 0x04, 0x04, 0x7C},
//__п (0xEF).
148
{0x7C, 0x14, 0x14, 0x14, 0x08},
//__р (0xF0).
149
{0x38, 0x44, 0x44, 0x44, 0x00},
//__с (0xF1).
150
{0x04, 0x04, 0x7C, 0x04, 0x04},
//__т (0xF2).
151
{0x0C, 0x50, 0x50, 0x50, 0x3C},
//__у (0xF3).
152
{0x30, 0x48, 0xFE, 0x48, 0x30},
//__ф (0xF4).
153
{0x44, 0x28, 0x10, 0x28, 0x44},
//__х (0xF5).
154
{0x7C, 0x40, 0x40, 0x7C, 0xC0},
//__ц (0xF6).
155
{0x0C, 0x10, 0x10, 0x10, 0x7C},
//__ч (0xF7).
156
{0x7C, 0x40, 0x7C, 0x40, 0x7C},
//__ш (0xF8).
157
{0x7C, 0x40, 0x7C, 0x40, 0xFC},
//__щ (0xF9).
158
{0x04, 0x7C, 0x50, 0x50, 0x20},
//__ъ (0xFA).
159
{0x7C, 0x50, 0x50, 0x20, 0x7C},
//__ы (0xFB).
160
{0x7C, 0x50, 0x50, 0x20, 0x00},
//__ь (0xFC).
161
{0x28, 0x44, 0x54, 0x54, 0x38},
//__э (0xFD).
162
{0x7C, 0x10, 0x38, 0x44, 0x38},
//__ю (0xFE).
163
{0x08, 0x54, 0x34, 0x14, 0x7C},
//__я (0xFF).
164
165
{0x7C, 0x04, 0x05, 0x04, 0x00},
//81 129 Ґ 165 159
166
{0x00, 0x78, 0x0A, 0x09, 0x00},
//83 131 ґ 180 160
167
{0x3E, 0x49, 0x49, 0x41, 0x22},
//AA 170 Є 170 161
168
{0x38, 0x54, 0x54, 0x44, 0x28},
//BA 186 є 186 162
169
{0x00, 0x41, 0x7F, 0x41, 0x00},
//B2 178 І 178 163
170
{0x00, 0x44, 0x7D, 0x40, 0x00},
//B3 179 і 179 164
171
{0x00, 0x45, 0x7C, 0x45, 0x00},
//AF 175 Ї 175 165
172
{0x00, 0x45, 0x7C, 0x41, 0x00},
//BF 191 ї 191 166
173
/*
174
{0x7e, 0x09, 0x09, 0x09, 0x7e}, // А 192
175
{0x7F, 0x49, 0x49, 0x49, 0x71}, // Б
176
{0x7f, 0x49, 0x49, 0x49, 0x36}, // В
177
{0x7F, 0x01, 0x01, 0x01, 0x01}, // Г
178
{0x60, 0x3E, 0x21, 0x3F, 0x60}, // Д
179
{0x7f, 0x49, 0x49, 0x49, 0x41}, // Е
180
{0x76, 0x08, 0x7F, 0x08, 0x76}, // Ж
181
{0x21, 0x41, 0x45, 0x4b, 0x31}, // З
182
{0x7F, 0x20, 0x10, 0x08, 0x7F}, // И
183
{0x7E, 0x20, 0x11, 0x08, 0x7E}, // Й
184
{0x7f, 0x08, 0x14, 0x22, 0x41}, // К
185
{0x70, 0x0E, 0x01, 0x01, 0x7F}, // Л
186
{0x7f, 0x02, 0x0c, 0x02, 0x7f}, // М
187
{0x7f, 0x08, 0x08, 0x08, 0x7f}, // Н
188
{0x3e, 0x41, 0x41, 0x41, 0x3e}, // О
189
{0x7F, 0x01, 0x01, 0x01, 0x7F}, // П
190
{0x7f, 0x09, 0x09, 0x09, 0x06}, // Р
191
{0x3e, 0x41, 0x41, 0x41, 0x22}, // С
192
{0x01, 0x01, 0x7f, 0x01, 0x01}, // Т
193
{0x07, 0x48, 0x48, 0x48, 0x7F}, // У
194
{0x1C, 0x22, 0x7F, 0x22, 0x1C}, // Ф
195
{0x63, 0x14, 0x08, 0x14, 0x63}, // Х
196
{0x7F, 0x40, 0x40, 0x7F, 0xC0}, // Ц
197
{0x07, 0x08, 0x08, 0x08, 0x7F}, // Ч
198
{0x7F, 0x40, 0x7F, 0x40, 0x7F}, // Ш
199
{0x7F, 0x40, 0x7F, 0x40, 0xFF}, // Щ
200
{0x01, 0x7F, 0x48, 0x48, 0x70}, // Ъ
201
{0x7F, 0x48, 0x70, 0x00, 0x7F}, // Ы
202
{0x00, 0x7F, 0x48, 0x48, 0x70}, // Ь
203
{0x22, 0x41, 0x49, 0x49, 0x3E}, // Э
204
{0x7F, 0x08, 0x3E, 0x41, 0x3E}, // Ю
205
{0x46, 0x29, 0x19, 0x09, 0x7F}, // Я 223
206
207
{0x20, 0x54, 0x54, 0x54, 0x78}, //a 224
208
{0x3c, 0x4a, 0x4a, 0x49, 0x31}, //б
209
{0x7c, 0x54, 0x54, 0x28, 0x00}, //в
210
{0x7c, 0x04, 0x04, 0x04, 0x0c}, //г
211
{0xe0, 0x54, 0x4c, 0x44, 0xfc}, //д
212
{0x38, 0x54, 0x54, 0x54, 0x18}, //e
213
{0x6c, 0x10, 0x7c, 0x10, 0x6c}, //ж
214
{0x44, 0x44, 0x54, 0x54, 0x28}, //з
215
{0x7c, 0x20, 0x10, 0x08, 0x7c}, //и
216
{0x7c, 0x41, 0x22, 0x11, 0x7c}, //й
217
{0x7c, 0x10, 0x28, 0x44, 0x00}, //к
218
{0x20, 0x44, 0x3c, 0x04, 0x7c}, //л
219
{0x7c, 0x08, 0x10, 0x08, 0x7c}, //м
220
{0x7c, 0x10, 0x10, 0x10, 0x7c}, //н
221
{0x38, 0x44, 0x44, 0x44, 0x38}, //o
222
{0x7c, 0x04, 0x04, 0x04, 0x7c}, //п
223
{0x7C, 0x14, 0x14, 0x14, 0x08}, //p
224
{0x38, 0x44, 0x44, 0x44, 0x20}, //c
225
{0x04, 0x04, 0x7c, 0x04, 0x04}, //т
226
{0x0C, 0x50, 0x50, 0x50, 0x3C}, //у
227
{0x30, 0x48, 0xfc, 0x48, 0x30}, //ф
228
{0x44, 0x28, 0x10, 0x28, 0x44}, //x
229
{0x7c, 0x40, 0x40, 0x40, 0xfc}, //ц
230
{0x0c, 0x10, 0x10, 0x10, 0x7c}, //ч
231
{0x7c, 0x40, 0x7c, 0x40, 0x7c}, //ш
232
{0x7c, 0x40, 0x7c, 0x40, 0xfc}, //щ
233
{0x04, 0x7c, 0x50, 0x50, 0x20}, //ъ
234
{0x7c, 0x50, 0x50, 0x20, 0x7c}, //ы
235
{0x7c, 0x50, 0x50, 0x20, 0x00}, //ь
236
{0x28, 0x44, 0x54, 0x54, 0x38}, //э
237
{0x7c, 0x10, 0x38, 0x44, 0x38}, //ю
238
{0x08, 0x54, 0x34, 0x14, 0x7c}, //я 255
239
*/
240
};
Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
В первую очередь это явно не весь код. а какой-то кусок. Сделал поиск в гугле - это копипаста кода Гайвера - вот у него и спрашивай.
Как минимум для этого тебе нужен украинский фонт - у гайвера его нет. А потом ищи программиста. который добавит фонт в этот код. С учетом того, что код гайвера - я бы меньше чем за 5-7 тыр не взялся бы. Устраивает цена - пиши.
ЗЫ Увидел, что я тебе уже третий или четвертый раз отвечаю, полгода назад ты спрашивал ровно тоже самое ...
MSerega, в обсуждаемой в этой теме библиотеке украинский (а также русинский, белорусский, болгарский...) язык поддерживаются "из коробки".
Сруктура битмэпа должна повторять структуру экрана, т.е.:
- высота рисунка должна быть кратна 8,
- первые 4 байта - заголовок аналогичный таковому для шрифта, т.е. первый байт ширина (dx), а второй - высота (dy) в пикселях, третий байт в данном случае смысла не имеет, потому 0xff, а в четвертом - количество кадров изображения: в простейшем случае - 1,
- далее идет сам битмап: в первом байте содержится вертикальный столбец из 8 пикселей - левый верхний. Во втором байте - второй слева верхний, и так - до правого конца битмэпа, т.е. всего dx байтов. Соотвественно, когда мы все их заполонили, это верхние 8 строк растра,
- следующие dx байтов содержат следующие 8 строк растра - аналогично. Всего строк растра - dy штук, байтов в строке битмэпа - (dy/8), а байтов в битмэпе dx*(dy/8), плюс, как упомянуто выше, 4 байта заголовок.
Здравствуйте,очень понравилась библиотека, действительно очень компактная, немогу разобраться как рисовать символы, необходимо вывести графическую индикацию заряда батареи-заполненный прямоугольник в правом верхнем углу 8*8 пикселей, с уменьшением заряда прямоугольник пустеет, экранчик SH1106 обьясните пожалуйста подробнее как мне это сделать.
Я нарисовал для начала пустой прямоугольник в паинте правильного размера по пикселям, сохранил в BMP формате затем перевёл картинку в двоичный массив при помощи программы Image2Code, лишние скобки убрал, создал переменную const uint8_t bat0[] PROGMEM = {сюда вставил массив}, и вывел на экран командой LD.drawBitmap(bat0,116, 1, 8, 8); получилось непонятной формы... совершенно не то что хотел, подскажите что неправильно сделал и как исправить, я так понимаю что ответ в цитированном сообщение, только я его не понимаю можно подробне обьяснить?
подскажите что неправильно сделал и как исправить, я так понимаю что ответ в цитированном сообщение, только я его не понимаю можно подробне обьяснить?
Как же я могу подсказать, если не знаю, что именно Вы сделали?
Приведите код, который работает не так, как хотелось бы.
Сруктура битмэпа должна повторять структуру экрана, т.е.:
- высота рисунка должна быть кратна 8,
- первые 4 байта - заголовок аналогичный таковому для шрифта, т.е. первый байт ширина (dx), а второй - высота (dy) в пикселях, третий байт в данном случае смысла не имеет, потому 0xff, а в четвертом - количество кадров изображения: в простейшем случае - 1,
- далее идет сам битмап: в первом байте содержится вертикальный столбец из 8 пикселей - левый верхний. Во втором байте - второй слева верхний, и так - до правого конца битмэпа, т.е. всего dx байтов. Соотвественно, когда мы все их заполонили, это верхние 8 строк растра,
- следующие dx байтов содержат следующие 8 строк растра - аналогично. Всего строк растра - dy штук, байтов в строке битмэпа - (dy/8), а байтов в битмэпе dx*(dy/8), плюс, как упомянуто выше, 4 байта заголовок.
Спасибо за разъяснение.
Написал алгоритм преобразования картинки для программы lcd-image-converter (https://sourceforge.net/projects/lcd-image-converter/files/)
var bandY = 0;
do {
for (var x = 0; x < image.width; x++) {
for (var y = image.bandSize-1; y >=0; y--) {
image.addPoint(x, bandY + y);
}
}
bandY += image.bandSize;
} while (bandY < image.height);
Указываете в настройках "Монохромное", ставите галочку "Полосы" 8px и "свой алгоритм". Закидывайте туда этот алгоритм.
Картинка 128x64 конвертится без проблем, только префикс добавьте {0x80, 0x40, 0xFF, 0x01} как описал выше автор. Пользуйтесь.