Рекомендую посмотреть…
P.S. Традиционно добавляю от «себя». Согласен не совсем, но как альтернативная точка зрения видео имеет право быть. Ни в коем случае не призываю немедленно нестись и устраивать майдан или еще что… Призываю просто подумать.
Жизнь замечательных грибов
Сюда тащатся заметки из жизни
P.S. Традиционно добавляю от «себя». Согласен не совсем, но как альтернативная точка зрения видео имеет право быть. Ни в коем случае не призываю немедленно нестись и устраивать майдан или еще что… Призываю просто подумать.
Сделал вчера операцию по коррекции зрения Lasik. Ну в принципе лучше чем в очках, но хуже чем ожидал. В глазах пока иногда туман. Привыкаю сам к себе заново.. В очках выглядел как-то солиднее 😉
Вчера купил сахарный песок по 70 руб. Для этого пришлось обойти 3 магазина. Не было даже в Магните. Сезонно или очередной «кризис» как с солью и спичками бывало?
1. Ни один работодатель никогда не интересовался моими отметками в университете
2. Я забыл все, что учил в университете
3. «Хорошие отметки» вредили моему здоровью
4. У меня не было времени на других людей
5. Всему, что мне приносит деньги сегодня, я научился за пределами университета
Вот те советы, которые я дам своему сыну, когда он пойдет в школу:
2. Твои счета оплачивают твои навыки, а не оценки на куске бумаги
3. Красный диплом не даст тебе ощутимых преимуществ, чего не скажешь о влиятельных знакомых
4. Занимайся тем, что имеет для тебя смысл, а не тем, что от тебя ожидают другие
Стырено с интернетов (с)
Итак, пришел наконец дисплейчик на микросхеме HX8357B. Подключил — работает. Демки показывает которые идут к библиотеке utft (взять можно здесь). Да вот беда — русский то шрифт (кириллицу) ожидаемо не поддерживает. Будем исправлять. Первым делом роем интернет. Находим два решения: тут и тут. Первое не интересно тем, что для вывода на экран в кириллице требуется писать код вида:
1 |
myGLCD.print("\x97""o""\x99""a", x, y); |
, второй тем.. что тупо не компилируется со множеством ошибок..побороть которые в силу не очень уверенного знания c++ не представилось возможным.
Итог: на основе этих двух решений разработано собственное:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#include <UTFT.h> #include <memorysaver.h> UTFT tft(CTE32HR,38,39,40,41); extern uint8_t SmallRusFont[]; extern uint8_t BigRusFont[]; const uint8_t utf8_rus_charmap[] PROGMEM = {'A',128,'B',129,130,'E',131,132,133,134,135,'K',136,'M','H','O',137,'P','C','T',138,139,'X',140,141, 142,143,144,145,146,147,148,149,'a',150,151,152,153,'e',154,155,156,157,158,159,160,161,162,'o',163,'p','c',164,'y',165,'x',166,167,168,169,170, 171,172,173,174,175}; void printRus(UTFT rus,char *st, int x, int y, int deg){ int stl, i; stl = strlen(st); if (rus.orient==PORTRAIT){ if (x==RIGHT) x=(rus.disp_x_size+1)-(stl*rus.cfont.x_size); if (x==CENTER) x=((rus.disp_x_size+1)-(stl*rus.cfont.x_size))/2; } else { if (x==RIGHT) x=(rus.disp_y_size+1)-(stl*rus.cfont.x_size); if (x==CENTER) x=((rus.disp_y_size+1)-(stl*rus.cfont.x_size))/2; } uint8_t utf_high_byte = 0; uint8_t ch, ch_pos = 0; for (i = 0; i < stl; i++) { ch = st[i]; if ( ch >= 128) { if ( utf_high_byte == 0 && (ch ==0xD0 || ch == 0xD1)) { utf_high_byte = ch; continue; } else { if ( utf_high_byte == 0xD0) { if (ch == 0x81) { //Ё ch = 6; } else { if(ch <= 0x95) { ch -= 0x90; } else if( ch < 0xB6){ ch -= (0x90 - 1); } else { ch -= (0x90 - 2); }} ch = pgm_read_byte(utf8_rus_charmap + ch); } else if (utf_high_byte == 0xD1) { if (ch == 0x91) {//ё ch = 39; } else { ch -= 0x80; ch += 50; } ch = pgm_read_byte(utf8_rus_charmap + ch); } utf_high_byte = 0; } } else { utf_high_byte = 0; } if (deg==0) {rus.printChar(ch, x + (ch_pos * (rus.cfont.x_size)), y);} else { rus.rotateChar(ch, x, y, ch_pos, deg); } ++ch_pos; } }; void setup(){ tft.InitLCD(LANDSCAPE); tft.clrScr(); tft.setColor(VGA_BLACK); tft.fillRect(0,0, tft.getDisplayXSize()-1, tft.getDisplayYSize()-1); tft.setFont(BigRusFont); tft.setColor(VGA_WHITE); tft.setBackColor(VGA_TRANSPARENT); printRus(tft,"АБВГДЕЁЖЗИЙКЛМН", 0, 0,0); printRus(tft,"ОПРСТУФХШЩЬЫЪЭ", 0, 20,0); printRus(tft,"ЮЯабвгдеёжзийкл", 0, 40,0); printRus(tft,"мнопрстуфхцчшщь", 0, 60,0); printRus(tft,"ыъэюя", 0, 80,0); tft.setFont(SmallRusFont); printRus(tft,"АБВГДЕЁЖЗИЙКЛМН", 0, 100,0); printRus(tft,"ОПРСТУФХШЩЬЫЪЭ", 0, 120,0); printRus(tft,"ЮЯабвгдеёжзийкл", 0, 140,0); printRus(tft,"мнопрстуфхцчшщь", 0, 160,0); printRus(tft,"ыъэюя", 0, 180,0); } void loop() { } |
Заливаем скетч в Arduino..и вуаля, получаем картинку вида: