Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
В первую очередь это явно не весь код. а какой-то кусок. Сделал поиск в гугле - это копипаста кода Гайвера - вот у него и спрашивай.
Как минимум для этого тебе нужен украинский фонт - у гайвера его нет. А потом ищи программиста. который добавит фонт в этот код. С учетом того, что код гайвера - я бы меньше чем за 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 получить буфер для вывода битмапа с помощью Вашей библиотеки? Изменено - разобрался
Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
// работа с бегущим текстом // **************** НАСТРОЙКИ **************** #define TEXT_DIRECTION 1 // 1 - по горизонтали, 0 - по вертикали #define MIRR_V 0 // отразить текст по вертикали (0 / 1) #define MIRR_H 1 // отразить текст по горизонтали (0 / 1) #define TEXT_HEIGHT 0 // высота, на которой бежит текст (от низа матрицы) #define LET_WIDTH 5 // ширина буквы шрифта #define LET_HEIGHT 8 // высота буквы шрифта #define SPACE 1 // пробел // --------------------- ДЛЯ РАЗРАБОТЧИКОВ ---------------------- int offset = WIDTH; void fillString(String text, byte color) { if (loadingFlag) { offset = WIDTH; // перемотка в правый край loadingFlag = false; fullTextFlag = false; } if (scrollTimer.isReady()) { if (showText) { matrix.fillScreen(LOW); byte i = 0, j = 0; while (text[i] != '\0') { if ((byte)text[i] > 191) { // работаем с русскими буквами! i++; } else { drawLetter(j, text[i], offset + j * (LET_WIDTH + SPACE), color); i++; j++; } } offset--; if (offset < -j * (LET_WIDTH + SPACE)) { // строка убежала offset = WIDTH + 3; if (!autoFlag) showText = false; } matrix.write(); } } } void drawLetter(uint8_t index, uint8_t letter, int16_t offset, byte color) { int8_t start_pos = 0, finish_pos = LET_WIDTH; if (offset < -LET_WIDTH || offset > WIDTH) return; if (offset < 0) start_pos = -offset; if (offset > (WIDTH - LET_WIDTH)) finish_pos = WIDTH - offset; for (byte i = start_pos; i < finish_pos; i++) { int thisByte; if (MIRR_V) thisByte = getFont((byte)letter, LET_WIDTH - 1 - i); else thisByte = getFont((byte)letter, i); for (byte j = 0; j < LET_HEIGHT; j++) { boolean thisBit; if (MIRR_H) thisBit = thisByte & (1 << j); else thisBit = thisByte & (1 << (LET_HEIGHT - 1 - j)); // рисуем столбец (i - горизонтальная позиция, j - вертикальная) if (TEXT_DIRECTION) { if (thisBit) matrix.drawPixel(offset + i, TEXT_HEIGHT + j, 1); else matrix.drawPixel(offset + i, TEXT_HEIGHT + j, 0); } else { if (thisBit) matrix.drawPixel(i, offset + TEXT_HEIGHT + j, 1); else matrix.drawPixel(i, offset + TEXT_HEIGHT + j, 0); } } } } // ------------- СЛУЖЕБНЫЕ ФУНКЦИИ -------------- // интерпретатор кода символа в массиве fontHEX (для Arduino IDE 1.8.* и выше) uint8_t getFont(uint8_t font, uint8_t row) { font = font - '0' + 16; // перевод код символа из таблицы ASCII в номер согласно нумерации массива if (font <= 90) return pgm_read_byte(&(fontHEX[font][row])); // для английских букв и символов else if (font >= 112 && font <= 159) { // и пизд*ц ждя русских return pgm_read_byte(&(fontHEX[font - 17][row])); } else if (font >= 96 && font <= 111) { return pgm_read_byte(&(fontHEX[font + 47][row])); } } /* // интерпретатор кода символа по ASCII в его номер в массиве fontHEX (для Arduino IDE до 1.6.*) uint8_t getFontOld(uint8_t font, uint8_t row) { font = font - '0' + 16; // перевод код символа из таблицы ASCII в номер согласно нумерации массива if (font < 126) return pgm_read_byte(&(fontHEX[font][row])); // для английских букв и символов else return pgm_read_byte(&(fontHEX[font - 65][row])); // для русских букв и символов (смещение -65 по массиву) } */// шрифты для вывода текста const uint8_t fontHEX[][5] PROGMEM = { {0x00, 0x00, 0x00, 0x00, 0x00}, // 0x20 32 {0x00, 0x00, 0x6f, 0x00, 0x00}, // ! 0x21 33 {0x00, 0x07, 0x00, 0x07, 0x00}, // " 0x22 34 {0x14, 0x7f, 0x14, 0x7f, 0x14}, // # 0x23 35 {0x00, 0x07, 0x04, 0x1e, 0x00}, // $ 0x24 36 {0x23, 0x13, 0x08, 0x64, 0x62}, // % 0x25 37 {0x36, 0x49, 0x56, 0x20, 0x50}, // & 0x26 38 {0x00, 0x00, 0x07, 0x00, 0x00}, // ' 0x27 39 {0x00, 0x1c, 0x22, 0x41, 0x00}, // ( 0x28 40 {0x00, 0x41, 0x22, 0x1c, 0x00}, // ) 0x29 41 {0x14, 0x08, 0x3e, 0x08, 0x14}, // * 0x2a 42 {0x08, 0x08, 0x3e, 0x08, 0x08}, // + 0x2b 43 {0x00, 0x50, 0x30, 0x00, 0x00}, // , 0x2c 44 {0x08, 0x08, 0x08, 0x08, 0x08}, // - 0x2d 45 {0x00, 0x60, 0x60, 0x00, 0x00}, // . 0x2e 46 {0x20, 0x10, 0x08, 0x04, 0x02}, // / 0x2f 47 {0x3e, 0x51, 0x49, 0x45, 0x3e}, // 0 0x30 48 {0x00, 0x42, 0x7f, 0x40, 0x00}, // 1 0x31 49 {0x42, 0x61, 0x51, 0x49, 0x46}, // 2 0x32 50 {0x21, 0x41, 0x45, 0x4b, 0x31}, // 3 0x33 51 {0x18, 0x14, 0x12, 0x7f, 0x10}, // 4 0x34 52 {0x27, 0x45, 0x45, 0x45, 0x39}, // 5 0x35 53 {0x3c, 0x4a, 0x49, 0x49, 0x30}, // 6 0x36 54 {0x01, 0x71, 0x09, 0x05, 0x03}, // 7 0x37 55 {0x36, 0x49, 0x49, 0x49, 0x36}, // 8 0x38 56 {0x06, 0x49, 0x49, 0x29, 0x1e}, // 9 0x39 57 {0x00, 0x36, 0x36, 0x00, 0x00}, // : 0x3a 58 {0x00, 0x56, 0x36, 0x00, 0x00}, // ; 0x3b 59 {0x08, 0x14, 0x22, 0x41, 0x00}, // < 0x3c 60 {0x14, 0x14, 0x14, 0x14, 0x14}, // = 0x3d 61 {0x00, 0x41, 0x22, 0x14, 0x08}, // > 0x3e 62 {0x02, 0x01, 0x51, 0x09, 0x06}, // ? 0x3f 63 {0x3e, 0x41, 0x5d, 0x49, 0x4e}, // @ 0x40 64 {0x7e, 0x09, 0x09, 0x09, 0x7e}, // A 0x41 65 {0x7f, 0x49, 0x49, 0x49, 0x36}, // B 0x42 66 {0x3e, 0x41, 0x41, 0x41, 0x22}, // C 0x43 67 {0x7f, 0x41, 0x41, 0x41, 0x3e}, // D 0x44 68 {0x7f, 0x49, 0x49, 0x49, 0x41}, // E 0x45 69 {0x7f, 0x09, 0x09, 0x09, 0x01}, // F 0x46 70 {0x3e, 0x41, 0x49, 0x49, 0x7a}, // G 0x47 71 {0x7f, 0x08, 0x08, 0x08, 0x7f}, // H 0x48 72 {0x00, 0x41, 0x7f, 0x41, 0x00}, // I 0x49 73 {0x20, 0x40, 0x41, 0x3f, 0x01}, // J 0x4a 74 {0x7f, 0x08, 0x14, 0x22, 0x41}, // K 0x4b 75 {0x7f, 0x40, 0x40, 0x40, 0x40}, // L 0x4c 76 {0x7f, 0x02, 0x0c, 0x02, 0x7f}, // M 0x4d 77 {0x7f, 0x04, 0x08, 0x10, 0x7f}, // N 0x4e 78 {0x3e, 0x41, 0x41, 0x41, 0x3e}, // O 0x4f 79 {0x7f, 0x09, 0x09, 0x09, 0x06}, // P 0x50 80 {0x3e, 0x41, 0x51, 0x21, 0x5e}, // Q 0x51 81 {0x7f, 0x09, 0x19, 0x29, 0x46}, // R 0x52 82 {0x46, 0x49, 0x49, 0x49, 0x31}, // S 0x53 83 {0x01, 0x01, 0x7f, 0x01, 0x01}, // T 0x54 84 {0x3f, 0x40, 0x40, 0x40, 0x3f}, // U 0x55 85 {0x0f, 0x30, 0x40, 0x30, 0x0f}, // V 0x56 86 {0x3f, 0x40, 0x30, 0x40, 0x3f}, // W 0x57 87 {0x63, 0x14, 0x08, 0x14, 0x63}, // X 0x58 88 {0x07, 0x08, 0x70, 0x08, 0x07}, // Y 0x59 89 {0x61, 0x51, 0x49, 0x45, 0x43}, // Z 0x5a 90 {0x3c, 0x4a, 0x49, 0x29, 0x1e}, // [ 0x5b 91 {0x02, 0x04, 0x08, 0x10, 0x20}, // \ 0x5c 92 {0x00, 0x41, 0x7f, 0x00, 0x00}, // ] 0x5d 93 {0x04, 0x02, 0x01, 0x02, 0x04}, // ^ 0x5e 94 {0x40, 0x40, 0x40, 0x40, 0x40}, // _ 0x5f 95 {0x00, 0x00, 0x03, 0x04, 0x00}, // ` 0x60 96 {0x20, 0x54, 0x54, 0x54, 0x78}, // a 0x61 97 {0x7f, 0x48, 0x44, 0x44, 0x38}, // b 0x62 98 {0x38, 0x44, 0x44, 0x44, 0x20}, // c 0x63 99 {0x38, 0x44, 0x44, 0x48, 0x7f}, // d 0x64 100 {0x38, 0x54, 0x54, 0x54, 0x18}, // e 0x65 101 {0x08, 0x7e, 0x09, 0x01, 0x02}, // f 0x66 102 {0x0c, 0x52, 0x52, 0x52, 0x3e}, // g 0x67 103 {0x7f, 0x08, 0x04, 0x04, 0x78}, // h 0x68 104 {0x00, 0x44, 0x7d, 0x40, 0x00}, // i 0x69 105 {0x20, 0x40, 0x44, 0x3d, 0x00}, // j 0x6a 106 {0x00, 0x7f, 0x10, 0x28, 0x44}, // k 0x6b 107 {0x00, 0x41, 0x7f, 0x40, 0x00}, // l 0x6c 108 {0x7c, 0x04, 0x18, 0x04, 0x78}, // m 0x6d 109 {0x7c, 0x08, 0x04, 0x04, 0x78}, // n 0x6e 110 {0x38, 0x44, 0x44, 0x44, 0x38}, // o 0x6f 111 {0x7c, 0x14, 0x14, 0x14, 0x08}, // p 0x70 112 {0x08, 0x14, 0x14, 0x18, 0x7c}, // q 0x71 113 {0x7c, 0x08, 0x04, 0x04, 0x08}, // r 0x72 114 {0x48, 0x54, 0x54, 0x54, 0x20}, // s 0x73 115 {0x04, 0x3f, 0x44, 0x40, 0x20}, // t 0x74 116 {0x3c, 0x40, 0x40, 0x20, 0x7c}, // u 0x75 117 {0x1c, 0x20, 0x40, 0x20, 0x1c}, // v 0x76 118 {0x3c, 0x40, 0x30, 0x40, 0x3c}, // w 0x77 119 {0x44, 0x28, 0x10, 0x28, 0x44}, // x 0x78 120 {0x0c, 0x50, 0x50, 0x50, 0x3c}, // y 0x79 121 {0x44, 0x64, 0x54, 0x4c, 0x44}, // z 0x7a 122 {0x00, 0x08, 0x36, 0x41, 0x41}, // { 0x7b 123 {0x00, 0x00, 0x7f, 0x00, 0x00}, // | 0x7c 124 {0x41, 0x41, 0x36, 0x08, 0x00}, // } 0x7d 125 {0x04, 0x02, 0x04, 0x08, 0x04}, // ~ 0x7e 126 {0x7E, 0x11, 0x11, 0x11, 0x7E}, //__А (0xC0). {0x7F, 0x49, 0x49, 0x49, 0x33}, //__Б (0xC1). {0x7F, 0x49, 0x49, 0x49, 0x36}, //__В (0xC2). {0x7F, 0x01, 0x01, 0x01, 0x03}, //__Г (0xC3). {0xE0, 0x51, 0x4F, 0x41, 0xFF}, //__Д (0xC4). {0x7F, 0x49, 0x49, 0x49, 0x41}, //__Е (0xC5). {0x77, 0x08, 0x7F, 0x08, 0x77}, //__Ж (0xC6). {0x41, 0x49, 0x49, 0x49, 0x36}, //__З (0xC7). {0x7F, 0x10, 0x08, 0x04, 0x7F}, //__И (0xC8). {0x7C, 0x21, 0x12, 0x09, 0x7C}, //__Й (0xC9). {0x7F, 0x08, 0x14, 0x22, 0x41}, //__К (0xCA). {0x20, 0x41, 0x3F, 0x01, 0x7F}, //__Л (0xCB). {0x7F, 0x02, 0x0C, 0x02, 0x7F}, //__М (0xCC). {0x7F, 0x08, 0x08, 0x08, 0x7F}, //__Н (0xCD). {0x3E, 0x41, 0x41, 0x41, 0x3E}, //__О (0xCE). {0x7F, 0x01, 0x01, 0x01, 0x7F}, //__П (0xCF). {0x7F, 0x09, 0x09, 0x09, 0x06}, //__Р (0xD0). {0x3E, 0x41, 0x41, 0x41, 0x22}, //__С (0xD1). {0x01, 0x01, 0x7F, 0x01, 0x01}, //__Т (0xD2). {0x47, 0x28, 0x10, 0x08, 0x07}, //__У (0xD3). {0x1C, 0x22, 0x7F, 0x22, 0x1C}, //__Ф (0xD4). {0x63, 0x14, 0x08, 0x14, 0x63}, //__Х (0xD5). {0x7F, 0x40, 0x40, 0x40, 0xFF}, //__Ц (0xD6). {0x07, 0x08, 0x08, 0x08, 0x7F}, //__Ч (0xD7). {0x7F, 0x40, 0x7F, 0x40, 0x7F}, //__Ш (0xD8). {0x7F, 0x40, 0x7F, 0x40, 0xFF}, //__Щ (0xD9). {0x01, 0x7F, 0x48, 0x48, 0x30}, //__Ъ (0xDA). {0x7F, 0x48, 0x30, 0x00, 0x7F}, //__Ы (0xDB). {0x00, 0x7F, 0x48, 0x48, 0x30}, //__Ь (0xDC). {0x22, 0x41, 0x49, 0x49, 0x3E}, //__Э (0xDD). {0x7F, 0x08, 0x3E, 0x41, 0x3E}, //__Ю (0xDE). {0x46, 0x29, 0x19, 0x09, 0x7F}, //__Я (0xDF). {0x20, 0x54, 0x54, 0x54, 0x78}, //__а (0xE0). {0x3C, 0x4A, 0x4A, 0x49, 0x31}, //__б (0xE1). {0x7C, 0x54, 0x54, 0x28, 0x00}, //__в (0xE2). {0x7C, 0x04, 0x04, 0x0C, 0x00}, //__г (0xE3). {0xE0, 0x54, 0x4C, 0x44, 0xFC}, //__д (0xE4). {0x38, 0x54, 0x54, 0x54, 0x18}, //__е (0xE5). {0x6C, 0x10, 0x7C, 0x10, 0x6C}, //__ж (0xE6). {0x44, 0x54, 0x54, 0x28, 0x00}, //__з (0xE7). {0x7C, 0x20, 0x10, 0x08, 0x7C}, //__и (0xE8). {0x78, 0x42, 0x24, 0x12, 0x78}, //__й (0xE9). {0x7C, 0x10, 0x28, 0x44, 0x00}, //__к (0xEA). {0x20, 0x44, 0x3C, 0x04, 0x7C}, //__л (0xEB). {0x7C, 0x08, 0x10, 0x08, 0x7C}, //__м (0xEC). {0x7C, 0x10, 0x10, 0x10, 0x7C}, //__н (0xED). {0x38, 0x44, 0x44, 0x44, 0x38}, //__о (0xEE). {0x7C, 0x04, 0x04, 0x04, 0x7C}, //__п (0xEF). {0x7C, 0x14, 0x14, 0x14, 0x08}, //__р (0xF0). {0x38, 0x44, 0x44, 0x44, 0x00}, //__с (0xF1). {0x04, 0x04, 0x7C, 0x04, 0x04}, //__т (0xF2). {0x0C, 0x50, 0x50, 0x50, 0x3C}, //__у (0xF3). {0x30, 0x48, 0xFE, 0x48, 0x30}, //__ф (0xF4). {0x44, 0x28, 0x10, 0x28, 0x44}, //__х (0xF5). {0x7C, 0x40, 0x40, 0x7C, 0xC0}, //__ц (0xF6). {0x0C, 0x10, 0x10, 0x10, 0x7C}, //__ч (0xF7). {0x7C, 0x40, 0x7C, 0x40, 0x7C}, //__ш (0xF8). {0x7C, 0x40, 0x7C, 0x40, 0xFC}, //__щ (0xF9). {0x04, 0x7C, 0x50, 0x50, 0x20}, //__ъ (0xFA). {0x7C, 0x50, 0x50, 0x20, 0x7C}, //__ы (0xFB). {0x7C, 0x50, 0x50, 0x20, 0x00}, //__ь (0xFC). {0x28, 0x44, 0x54, 0x54, 0x38}, //__э (0xFD). {0x7C, 0x10, 0x38, 0x44, 0x38}, //__ю (0xFE). {0x08, 0x54, 0x34, 0x14, 0x7C}, //__я (0xFF). {0x7C, 0x04, 0x05, 0x04, 0x00}, //81 129 Ґ 165 159 {0x00, 0x78, 0x0A, 0x09, 0x00}, //83 131 ґ 180 160 {0x3E, 0x49, 0x49, 0x41, 0x22}, //AA 170 Є 170 161 {0x38, 0x54, 0x54, 0x44, 0x28}, //BA 186 є 186 162 {0x00, 0x41, 0x7F, 0x41, 0x00}, //B2 178 І 178 163 {0x00, 0x44, 0x7D, 0x40, 0x00}, //B3 179 і 179 164 {0x00, 0x45, 0x7C, 0x45, 0x00}, //AF 175 Ї 175 165 {0x00, 0x45, 0x7C, 0x41, 0x00}, //BF 191 ї 191 166 /* {0x7e, 0x09, 0x09, 0x09, 0x7e}, // А 192 {0x7F, 0x49, 0x49, 0x49, 0x71}, // Б {0x7f, 0x49, 0x49, 0x49, 0x36}, // В {0x7F, 0x01, 0x01, 0x01, 0x01}, // Г {0x60, 0x3E, 0x21, 0x3F, 0x60}, // Д {0x7f, 0x49, 0x49, 0x49, 0x41}, // Е {0x76, 0x08, 0x7F, 0x08, 0x76}, // Ж {0x21, 0x41, 0x45, 0x4b, 0x31}, // З {0x7F, 0x20, 0x10, 0x08, 0x7F}, // И {0x7E, 0x20, 0x11, 0x08, 0x7E}, // Й {0x7f, 0x08, 0x14, 0x22, 0x41}, // К {0x70, 0x0E, 0x01, 0x01, 0x7F}, // Л {0x7f, 0x02, 0x0c, 0x02, 0x7f}, // М {0x7f, 0x08, 0x08, 0x08, 0x7f}, // Н {0x3e, 0x41, 0x41, 0x41, 0x3e}, // О {0x7F, 0x01, 0x01, 0x01, 0x7F}, // П {0x7f, 0x09, 0x09, 0x09, 0x06}, // Р {0x3e, 0x41, 0x41, 0x41, 0x22}, // С {0x01, 0x01, 0x7f, 0x01, 0x01}, // Т {0x07, 0x48, 0x48, 0x48, 0x7F}, // У {0x1C, 0x22, 0x7F, 0x22, 0x1C}, // Ф {0x63, 0x14, 0x08, 0x14, 0x63}, // Х {0x7F, 0x40, 0x40, 0x7F, 0xC0}, // Ц {0x07, 0x08, 0x08, 0x08, 0x7F}, // Ч {0x7F, 0x40, 0x7F, 0x40, 0x7F}, // Ш {0x7F, 0x40, 0x7F, 0x40, 0xFF}, // Щ {0x01, 0x7F, 0x48, 0x48, 0x70}, // Ъ {0x7F, 0x48, 0x70, 0x00, 0x7F}, // Ы {0x00, 0x7F, 0x48, 0x48, 0x70}, // Ь {0x22, 0x41, 0x49, 0x49, 0x3E}, // Э {0x7F, 0x08, 0x3E, 0x41, 0x3E}, // Ю {0x46, 0x29, 0x19, 0x09, 0x7F}, // Я 223 {0x20, 0x54, 0x54, 0x54, 0x78}, //a 224 {0x3c, 0x4a, 0x4a, 0x49, 0x31}, //б {0x7c, 0x54, 0x54, 0x28, 0x00}, //в {0x7c, 0x04, 0x04, 0x04, 0x0c}, //г {0xe0, 0x54, 0x4c, 0x44, 0xfc}, //д {0x38, 0x54, 0x54, 0x54, 0x18}, //e {0x6c, 0x10, 0x7c, 0x10, 0x6c}, //ж {0x44, 0x44, 0x54, 0x54, 0x28}, //з {0x7c, 0x20, 0x10, 0x08, 0x7c}, //и {0x7c, 0x41, 0x22, 0x11, 0x7c}, //й {0x7c, 0x10, 0x28, 0x44, 0x00}, //к {0x20, 0x44, 0x3c, 0x04, 0x7c}, //л {0x7c, 0x08, 0x10, 0x08, 0x7c}, //м {0x7c, 0x10, 0x10, 0x10, 0x7c}, //н {0x38, 0x44, 0x44, 0x44, 0x38}, //o {0x7c, 0x04, 0x04, 0x04, 0x7c}, //п {0x7C, 0x14, 0x14, 0x14, 0x08}, //p {0x38, 0x44, 0x44, 0x44, 0x20}, //c {0x04, 0x04, 0x7c, 0x04, 0x04}, //т {0x0C, 0x50, 0x50, 0x50, 0x3C}, //у {0x30, 0x48, 0xfc, 0x48, 0x30}, //ф {0x44, 0x28, 0x10, 0x28, 0x44}, //x {0x7c, 0x40, 0x40, 0x40, 0xfc}, //ц {0x0c, 0x10, 0x10, 0x10, 0x7c}, //ч {0x7c, 0x40, 0x7c, 0x40, 0x7c}, //ш {0x7c, 0x40, 0x7c, 0x40, 0xfc}, //щ {0x04, 0x7c, 0x50, 0x50, 0x20}, //ъ {0x7c, 0x50, 0x50, 0x20, 0x7c}, //ы {0x7c, 0x50, 0x50, 0x20, 0x00}, //ь {0x28, 0x44, 0x54, 0x54, 0x38}, //э {0x7c, 0x10, 0x38, 0x44, 0x38}, //ю {0x08, 0x54, 0x34, 0x14, 0x7c}, //я 255 */ };Подскажите пожалуйста какой код мне нужно вставить в прошивку чтобы был украинский язык? Я пробывал искать что то добавлял но не получилось.
В первую очередь это явно не весь код. а какой-то кусок. Сделал поиск в гугле - это копипаста кода Гайвера - вот у него и спрашивай.
Как минимум для этого тебе нужен украинский фонт - у гайвера его нет. А потом ищи программиста. который добавит фонт в этот код. С учетом того, что код гайвера - я бы меньше чем за 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} как описал выше автор. Пользуйтесь.