Русификация библиотеки TVOut.h, нужна помошь

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Всем привет! Для своего проекта решил русифицировать библиотеку TVOut.h. Изучив вопрос как это сделать, посмотрел файлы со шрифтами, там содержаться символьные знаки от 32 до 127 по кодовой таблице ASCII. Дописал файл до конца т.е. все 255 символов, точнее половина из них не нужных оставил пустыми пока, т.к. они мне вывод их на экран не нужен, а русский алфавит полностью. Вот к примеру шрифт 6x8:

#include "font6x8.h"

PROGMEM const unsigned char font6x8[] = {
	
	6,8,32,
	//32 Space
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//33 Exclamation !
	0b01000000,
	0b01000000,
	0b01000000,
	0b01000000,
	0b01000000,
	0b00000000,
	0b01000000,
	0b00000000,
	//34 Quotes "
	0b01010000,
	0b01010000,
	0b01010000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//35 Number #
	0b00000000,
	0b00000000,
	0b01010000,
	0b11111000,
	0b01010000,
	0b11111000,
	0b01010000,
	0b00000000,
	//36 Dollars $
	0b00100000,
	0b01110000,
	0b10100000,
	0b01110000,
	0b00101000,
	0b01110000,
	0b00100000,
	0b00000000,
	//37 Percent %
	0b00000000,
	0b11001000,
	0b11010000,
	0b00100000,
	0b01011000,
	0b10011000,
	0b00000000,
	0b00000000,
	//38 Ampersand &
	0b00100000,
	0b01010000,
	0b10000000,
	0b01000000,
	0b10101000,
	0b10010000,
	0b01101000,
	0b00000000,
	//39 Single Quote '
	0b01000000,
	0b01000000,
	0b01000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//40 Left Parenthesis (
	0b00010000,
	0b00100000,
	0b01000000,
	0b01000000,
	0b01000000,
	0b00100000,
	0b00010000,
	0b00000000,
	//41 Right Parenthesis )
	0b01000000,
	0b00100000,
	0b00010000,
	0b00010000,
	0b00010000,
	0b00100000,
	0b01000000,
	0b00000000,
	//42 Star *
	0b00010000,
	0b00111000,
	0b00010000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//43 Plus +
	0b00000000,
	0b00100000,
	0b00100000,
	0b11111000,
	0b00100000,
	0b00100000,
	0b00000000,
	0b00000000,
	//44 Comma ,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00010000,
	0b00010000,
	0b00000000,
	//45 Minus -
	0b00000000,
	0b00000000,
	0b00000000,
	0b11111000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//46 Period .
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00010000,
	0b00000000,
	0b00000000,
	// 47 Backslash /
	0b00000000,
	0b00001000,
	0b00010000,
	0b00100000,
	0b01000000,
	0b10000000,
	0b00000000,
	0b00000000,
	// 48 Zero
	0b01110000,
	0b10001000,
	0b10101000,
	0b10101000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//49 One
	0b00100000,
	0b01100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b01110000,
	0b00000000,
	0b00000000,
	//50 two
	0b01110000,
	0b10001000,
	0b00010000,
	0b00100000,
	0b01000000,
	0b11111000,
	0b00000000,
	0b00000000,
	//51 Three
	0b11111000,
	0b00010000,
	0b00100000,
	0b00010000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//52 Four
	0b10010000,
	0b10010000,
	0b10010000,
	0b11111000,
	0b00010000,
	0b00010000,
	0b00000000,
	0b00000000,
	//53 Five
	0b11111000,
	0b10000000,
	0b11110000,
	0b00001000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//54 Six
	0b01110000,
	0b10000000,
	0b11110000,
	0b10001000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//55 Seven
	0b11111000,
	0b00001000,
	0b00010000,
	0b00100000,
	0b01000000,
	0b10000000,
	0b00000000,
	0b00000000,
	//56 Eight
	0b01110000,
	0b10001000,
	0b01110000,
	0b10001000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//57 Nine
	0b01110000,
	0b10001000,
	0b10001000,
	0b01111000,
	0b00001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//58 :
	0b00000000,
	0b00000000,
	0b00100000,
	0b00000000,
	0b00000000,
	0b00100000,
	0b00000000,
	0b00000000,
	//59 ;
	0b00000000,
	0b00000000,
	0b00100000,
	0b00000000,
	0b00100000,
	0b00100000,
	0b01000000,
	0b00000000,
	//60 <
	0b00000000,
	0b00011000,
	0b01100000,
	0b10000000,
	0b01100000,
	0b00011000,
	0b00000000,
	0b00000000,
	//61 =
	0b00000000,
	0b00000000,
	0b01111000,
	0b00000000,
	0b01111000,
	0b00000000,
	0b00000000,
	0b00000000,
	//62 >
	0b00000000,
	0b11000000,
	0b00110000,
	0b00001000,
	0b00110000,
	0b11000000,
	0b00000000,
	0b00000000,
	//63 ?
	0b01100000,
	0b10010000,
	0b00100000,
	0b00100000,
	0b00000000,
	0b00100000,
	0b00000000,
	0b00000000,
	
	0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,  // Code for char @
	
	//65 A
	0b00100000,
	0b01010000,
	0b10001000,
	0b11111000,
	0b10001000,
	0b10001000,
	0b00000000,
	0b00000000,
	//B
	0b11110000,
	0b10001000,
	0b11110000,
	0b10001000,
	0b10001000,
	0b11110000,
	0b00000000,
	0b00000000,
	//C
	0b01110000,
	0b10001000,
	0b10000000,
	0b10000000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//D
	0b11110000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b11110000,
	0b00000000,
	0b00000000,
	//E
	0b11111000,
	0b10000000,
	0b11111000,
	0b10000000,
	0b10000000,
	0b11111000,
	0b00000000,
	0b00000000,
	//F
	0b11111000,
	0b10000000,
	0b11110000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b00000000,
	0b00000000,
	//G
	0b01110000,
	0b10001000,
	0b10000000,
	0b10011000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//H
	0b10001000,
	0b10001000,
	0b11111000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b00000000,
	0b00000000,
	//I
	0b01110000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b01110000,
	0b00000000,
	0b00000000,
	//J
	0b00111000,
	0b00010000,
	0b00010000,
	0b00010000,
	0b10010000,
	0b01100000,
	0b00000000,
	0b00000000,
	//K
	0b10001000,
	0b10010000,
	0b11100000,
	0b10100000,
	0b10010000,
	0b10001000,
	0b00000000,
	0b00000000,
	//L
	0b10000000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b11111000,
	0b00000000,
	0b00000000,
	//M
	0b10001000,
	0b11011000,
	0b10101000,
	0b10101000,
	0b10001000,
	0b10001000,
	0b00000000,
	0b00000000,
	//N
	0b10001000,
	0b10001000,
	0b11001000,
	0b10101000,
	0b10011000,
	0b10001000,
	0b00000000,
	0b00000000,
	//O
	0b01110000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//P
	0b11110000,
	0b10001000,
	0b11110000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b00000000,
	0b00000000,
	//Q
	0b01110000,
	0b10001000,
	0b10001000,
	0b10101000,
	0b10010000,
	0b01101000,
	0b00000000,
	0b00000000,
	//R
	0b11110000,
	0b10001000,
	0b11110000,
	0b10100000,
	0b10010000,
	0b10001000,
	0b00000000,
	0b00000000,
	//S
	0b01111000,
	0b10000000,
	0b01110000,
	0b00001000,
	0b00001000,
	0b11110000,
	0b00000000,
	0b00000000,
	//T
	0b11111000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00000000,
	0b00000000,
	//U
	0b10001000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b01110000,
	0b00000000,
	0b00000000,
	//V
	0b10001000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b01010000,
	0b00100000,
	0b00000000,
	0b00000000,
	//W
	0b10001000,
	0b10001000,
	0b10101000,
	0b10101000,
	0b10101000,
	0b01010000,
	0b00000000,
	0b00000000,
	//X
	0b10001000,
	0b01010000,
	0b00100000,
	0b01010000,
	0b10001000,
	0b10001000,
	0b00000000,
	0b00000000,
	//Y
	0b10001000,
	0b10001000,
	0b01010000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00000000,
	0b00000000,
	//Z
	0b11111000,
	0b00001000,
	0b00010000,
	0b00100000,
	0b01000000,
	0b11111000,
	0b00000000,
	0b00000000,
	//91 [
	0b11100000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b10000000,
	0b11100000,
	0b00000000,
	0b00000000,
	//92 (backslash)
	0b00000000,
	0b10000000,
	0b01000000,
	0b00100000,
	0b00010000,
	0b00001000,
	0b00000000,
	0b00000000,
	//93 ]
	0b00111000,
	0b00001000,
	0b00001000,
	0b00001000,
	0b00001000,
	0b00111000,
	0b00000000,
	0b00000000,
	//94 ^
	0b00100000,
	0b01010000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//95 _
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b11111000,
	0b00000000,
	//96 `
	0b10000000,
	0b01000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//97 a
	0b00000000,
	0b01100000,
	0b00010000,
	0b01110000,
	0b10010000,
	0b01100000,
	0b00000000,
	0b00000000,
	//98 b
	0b10000000,
	0b10000000,
	0b11100000,
	0b10010000,
	0b10010000,
	0b11100000,
	0b00000000,
	0b00000000,
	//99 c
	0b00000000,
	0b00000000,
	0b01110000,
	0b10000000,
	0b10000000,
	0b01110000,
	0b00000000,
	0b00000000,
	// 100 d
	0b00010000,
	0b00010000,
	0b01110000,
	0b10010000,
	0b10010000,
	0b01110000,
	0b00000000,
	0b00000000,
	//101 e
	0b00000000,
	0b01100000,
	0b10010000,
	0b11110000,
	0b10000000,
	0b01110000,
	0b00000000,
	0b00000000,
	//102 f
	0b00110000,
	0b01000000,
	0b11100000,
	0b01000000,
	0b01000000,
	0b01000000,
	0b00000000,
	0b00000000,
	//103 g
	0b00000000,
	0b01100000,
	0b10010000,
	0b01110000,
	0b00010000,
	0b00010000,
	0b01100000,
	0b00000000,
	//104 h
	0b10000000,
	0b10000000,
	0b11100000,
	0b10010000,
	0b10010000,
	0b10010000,
	0b00000000,
	0b00000000,
	//105 i
	0b00100000,
	0b00000000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b01110000,
	0b00000000,
	0b00000000,
	//106 j
	0b00010000,
	0b00000000,
	0b00110000,
	0b00010000,
	0b00010000,
	0b00010000,
	0b01100000,
	0b00000000,
	//107 k
	0b10000000,
	0b10010000,
	0b10100000,
	0b11000000,
	0b10100000,
	0b10010000,
	0b00000000,
	0b00000000,
	//108 l
	0b01100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b01110000,
	0b00000000,
	0b00000000,
	//109 m
	0b00000000,
	0b00000000,
	0b01010000,
	0b10101000,
	0b10101000,
	0b10101000,
	0b00000000,
	0b00000000,
	//110 n
	0b00000000,
	0b00000000,
	0b11110000,
	0b10001000,
	0b10001000,
	0b10001000,
	0b00000000,
	0b00000000,
	//111 o
	0b00000000,
	0b00000000,
	0b01100000,
	0b10010000,
	0b10010000,
	0b01100000,
	0b00000000,
	0b00000000,
	//112 p
	0b00000000,
	0b00000000,
	0b01100000,
	0b10010000,
	0b11110000,
	0b10000000,
	0b10000000,
	0b00000000,
	//113 q
	0b00000000,
	0b00000000,
	0b01100000,
	0b10010000,
	0b11110000,
	0b00010000,
	0b00010000,
	0b00000000,
	//114 r
	0b00000000,
	0b00000000,
	0b10110000,
	0b01001000,
	0b01000000,
	0b01000000,
	0b00000000,
	0b00000000,
	//115 s
	0b00000000,
	0b00110000,
	0b01000000,
	0b00100000,
	0b00010000,
	0b01100000,
	0b00000000,
	0b00000000,
	//116 t
	0b01000000,
	0b01000000,
	0b11100000,
	0b01000000,
	0b01000000,
	0b01000000,
	0b00000000,
	0b00000000,
	// 117u
	0b00000000,
	0b00000000,
	0b10010000,
	0b10010000,
	0b10010000,
	0b01100000,
	0b00000000,
	0b00000000,
	//118 v
	0b00000000,
	0b00000000,
	0b10001000,
	0b10001000,
	0b01010000,
	0b00100000,
	0b00000000,
	0b00000000,
	//119 w
	0b00000000,
	0b00000000,
	0b10001000,
	0b10101000,
	0b10101000,
	0b01010000,
	0b00000000,
	0b00000000,
	//120 x
	0b00000000,
	0b10001000,
	0b01010000,
	0b00100000,
	0b01010000,
	0b10001000,
	0b00000000,
	0b00000000,
	//121 y
	0b00000000,
	0b00000000,
	0b10010000,
	0b10010000,
	0b01100000,
	0b01000000,
	0b10000000,
	0b00000000,
	//122 z
	0b00000000,
	0b00000000,
	0b11110000,
	0b00100000,
	0b01000000,
	0b11110000,
	0b00000000,
	0b00000000,
	//123 {
	0b00100000,
	0b01000000,
	0b01000000,
	0b10000000,
	0b01000000,
	0b01000000,
	0b00100000,
	0b00000000,
	//124 | 
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00100000,
	0b00000000,
	//125 }
	0b00100000,
	0b00010000,
	0b00010000,
	0b00001000,
	0b00010000,
	0b00010000,
	0b00100000,
	0b00000000,
	//126 ~
	0b01000000,
	0b10101000,
	0b00010000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	//127 DEL
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	0b00000000,
	
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ђ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ѓ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ‚
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ѓ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char „
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char …
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char †
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ‡
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char €
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ‰
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Љ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ‹
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Њ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ќ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ћ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Џ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ђ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ‘
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ’
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char “
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ”
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char •
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char –
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char —
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ™
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char љ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ›
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char њ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ќ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ћ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char џ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ў
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ў
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ј
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ¤
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ґ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ¦
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char §
	0x50, 0xF8, 0x80, 0xF8, 0x80, 0xF8, 0x00, 0x00,  // Буква Ё 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ©
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Є
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char «
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ¬
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ­
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ®
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ї
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char °
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ±
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char І
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char і
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ґ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char µ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ¶
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char 
	0x50, 0x70, 0x88, 0xF0, 0x80, 0x70, 0x00, 0x00,  // Буква ё 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char №
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char є
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char »
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ј
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char Ѕ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ѕ
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Code for char ї 
	0x20, 0x50, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00,  // Code for char А 
	0xF8, 0x80, 0xF0, 0x88, 0x88, 0xF0, 0x00, 0x00,  // Code for char Б 
	0xF8, 0x84, 0xF8, 0x84, 0x84, 0xF8, 0x00, 0x00,  // Code for char В 
	0xFC, 0x84, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,  // Code for char Г 
	0x38, 0x48, 0x48, 0x48, 0x48, 0xFC, 0x84, 0x00,  // Code for char Д 
	0xFC, 0x80, 0xFC, 0x80, 0x80, 0xFC, 0x00, 0x00,  // Code for char Е 
	0xA8, 0xA8, 0x70, 0xA8, 0xA8, 0xA8, 0x00, 0x00,  // Code for char Ж
	0x78, 0x04, 0x78, 0x04, 0x04, 0x78, 0x00, 0x00,  // Code for char З
	0x84, 0x8C, 0x94, 0xA4, 0xC4, 0x84, 0x00, 0x00,  // Code for char И
	0xB4, 0x8C, 0x94, 0xA4, 0xC4, 0x84, 0x00, 0x00,  // Code for char Й
	0x88, 0x90, 0xE0, 0x90, 0x88, 0x88, 0x00, 0x00,  // Code for char К
	0x3C, 0x44, 0x44, 0x44, 0x44, 0x84, 0x00, 0x00,  // Code for char Л
	0x88, 0xD8, 0xA8, 0xA8, 0x88, 0x88, 0x00, 0x00,  // Code for char М
	0x84, 0x84, 0xFC, 0x84, 0x84, 0x84, 0x00, 0x00,  // Code for char Н
	0x78, 0x84, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00,  // Code for char О
	0xFC, 0x84, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00,  // Code for char П
	0xF8, 0x84, 0x84, 0xF8, 0x80, 0x80, 0x00, 0x00,  // Code for char Р
	0x78, 0x84, 0x80, 0x80, 0x84, 0x78, 0x00, 0x00,  // Code for char С
	0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,  // Code for char Т
	0x88, 0x88, 0x88, 0x78, 0x08, 0xF0, 0x00, 0x00,  // Code for char У
	0x70, 0xA8, 0xA8, 0x70, 0x20, 0x20, 0x00, 0x00,  // Code for char Ф
	0x88, 0x50, 0x20, 0x20, 0x50, 0x88, 0x00, 0x00,  // Code for char Х
	0x88, 0x88, 0x88, 0x88, 0x88, 0xFC, 0x04, 0x00,  // Code for char Ц
	0x88, 0x88, 0x88, 0x78, 0x08, 0x08, 0x08, 0x00,  // Code for char Ч
	0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xF8, 0x00, 0x00,  // Code for char Ш
	0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xFC, 0x04, 0x00,  // Code for char Щ
	0xC0, 0x40, 0x78, 0x44, 0x44, 0x78, 0x00, 0x00,  // Code for char Ъ
	0x84, 0x84, 0xE4, 0x94, 0x94, 0xE4, 0x00, 0x00,  // Code for char Ы
	0x80, 0x80, 0xF0, 0x88, 0x88, 0xF0, 0x00, 0x00,  // Code for char Ь
	0x78, 0x84, 0x3C, 0x04, 0x84, 0x78, 0x00, 0x00,  // Code for char Э
	0x98, 0xA4, 0xE4, 0xA4, 0xA4, 0x98, 0x00, 0x00,  // Code for char Ю
	0x7C, 0x84, 0x7C, 0x24, 0x44, 0x84, 0x00, 0x00,  // Code for char Я
	0x00, 0x30, 0x08, 0x38, 0x48, 0x38, 0x00, 0x00,  // Code for char а
	0x60, 0x80, 0xE0, 0x90, 0x90, 0x60, 0x00, 0x00,  // Code for char б
	0x00, 0xE0, 0x90, 0xE0, 0x90, 0xE0, 0x00, 0x00,  // Code for char в
	0x00, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,  // Code for char г
	0x00, 0x30, 0x50, 0x50, 0x50, 0xF8, 0x88, 0x00,  // Code for char д
	0x00, 0x60, 0x90, 0xF0, 0x80, 0x70, 0x00, 0x00,  // Code for char е
	0x00, 0xA8, 0x70, 0x20, 0x70, 0xA8, 0x00, 0x00,  // Code for char ж
	0x00, 0xE0, 0x10, 0xE0, 0x10, 0xE0, 0x00, 0x00,  // Code for char з
	0x00, 0x88, 0x98, 0xA8, 0xC8, 0x88, 0x00, 0x00,  // Code for char и
	0x20, 0x88, 0x98, 0xA8, 0xC8, 0x88, 0x00, 0x00,  // Code for char й
	0x00, 0x88, 0x90, 0xE0, 0x90, 0x88, 0x00, 0x00,  // Code for char к
	0x00, 0x38, 0x48, 0x48, 0x48, 0x88, 0x00, 0x00,  // Code for char л
	0x00, 0x88, 0xD8, 0xA8, 0xA8, 0x88, 0x00, 0x00,  // Code for char м
	0x00, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00,  // Code for char н
	0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00,  // Code for char о
	0x00, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00,  // Code for char п
	0x00, 0xF0, 0x88, 0x88, 0xF0, 0x80, 0x00, 0x00,  // Code for char р
	0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x00, 0x00,  // Code for char с
	0x00, 0xF8, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00,  // Code for char т
	0x00, 0x88, 0x88, 0x78, 0x08, 0xF0, 0x00, 0x00,  // Code for char у
	0x00, 0x70, 0xA8, 0xA8, 0x70, 0x20, 0x00, 0x00,  // Code for char ф
	0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00,  // Code for char х
	0x00, 0x88, 0x88, 0x88, 0x88, 0xFC, 0x04, 0x00,  // Code for char ц
	0x00, 0x88, 0x88, 0x78, 0x08, 0x08, 0x00, 0x00,  // Code for char ч
	0x00, 0xA8, 0xA8, 0xA8, 0xA8, 0xF8, 0x00, 0x00,  // Code for char ш
	0x00, 0xA8, 0xA8, 0xA8, 0xA8, 0xFC, 0x04, 0x00,  // Code for char щ
	0x00, 0xC0, 0x40, 0x78, 0x44, 0x78, 0x00, 0x00,  // Code for char ъ
	0x00, 0x84, 0x84, 0xE4, 0x94, 0xE4, 0x00, 0x00,  // Code for char ы
	0x00, 0x80, 0x80, 0xF0, 0x88, 0xF0, 0x00, 0x00,  // Code for char ь
	0x00, 0x70, 0x88, 0x38, 0x88, 0x70, 0x00, 0x00,  // Code for char э
	0x00, 0x98, 0xA4, 0xE4, 0xA4, 0x98, 0x00, 0x00,  // Code for char ю
	0x00, 0x78, 0x88, 0x78, 0x48, 0x88, 0x00, 0x00   // Code for char я 
};

Дальше вопрос встал как выводить... в библиотеке в файле TVoutPrint.cpp находятся примеры функции которыми возможно воспользоваться для вывода текста, но только работает с английскими символами:

void TVout::select_font(const unsigned char * f) {
	font = f;
}

/*
 * напечатать символ c размером 8x8 в точках x, y
 * x должен быть кратным 8
 */
void TVout::print_char(uint8_t x, uint8_t y, unsigned char c) {

	c -= pgm_read_byte(font+2);
	bitmap(x,y,font,(c*pgm_read_byte(font+1))+3,pgm_read_byte(font),pgm_read_byte(font+1));
}

void TVout::inc_txtline() {
	if (cursor_y >= (display.vres - pgm_read_byte(font+1)))
		shift(pgm_read_byte(font+1),UP);
	else
		cursor_y += pgm_read_byte(font+1);
}
/* реализация по умолчанию: может быть отменена */
void TVout::write(const char *str)
{
  while (*str)
    write(*str++);
}

/* реализация по умолчанию: может быть отменено */
void TVout::write(const uint8_t *buffer, uint8_t size)
{
  while (size--)
    write(*buffer++);
}

void TVout::write(uint8_t c) {
	switch(c) {
		case '\0':			//null
			break;
		case '\n':			//line feed
			cursor_x = 0;
			inc_txtline();
			break;
		case 8:				//backspace
			cursor_x -= pgm_read_byte(font);
			print_char(cursor_x,cursor_y,' ');
			break;
		case 13:			//carriage return !?!?!?!VT!?!??!?!
			cursor_x = 0;
			break;
		case 14:			//form feed new page(clear screen)
			//clear_screen();
			break;
		default:
			if (cursor_x >= (display.hres*8 - pgm_read_byte(font))) {
				cursor_x = 0;
				inc_txtline();
				print_char(cursor_x,cursor_y,c);
			}
			else
				print_char(cursor_x,cursor_y,c);
			cursor_x += pgm_read_byte(font);
	}
}

void TVout::print(const char str[])
{
  write(str);
}

Использовать функцию TV.print("Привет всем!"); - не получилось... Она хорошо работает с английским шрифтом TV.print("Hollo!@);. По факту посимвольно мне удалось вывести вот так в основном коде программы, текст "КОТЁЛ ПОЛЕНО":

TV.clear_screen();
TV.print_char(0, 0, 0xCA);
TV.print_char(8, 0, 0xCE);
TV.print_char(16, 0, 0xD2);
TV.print_char(24, 0, 0xA8);
TV.print_char(32, 0, 0xCB);
TV.print_char(40, 0, 0x20);
TV.print_char(48, 0, 0xCF);
TV.print_char(56, 0, 0xC0);
TV.print_char(64, 0, 0xCB);
TV.print_char(72, 0, 0xC5);
TV.print_char(80, 0, 0xCD);
TV.print_char(88, 0, 0xCE);

Вопрос к более знающим людям, помочь до конца разобраться, моих знаний уже увы не хватает(

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ваш шрифт в кодровке Windows1251. А строки в ArduinoIDE представляются в кодировке UTF-8.

Перекодируйте. Если не знаете как, то готовых программ перекодирования "over-дофига" в том числе и на этом сайте, ищите.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

можно подробнее что именно искать "over-дофига", я не совсем в теме этой еще... 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Как что искать? Функцию перекодировки из UTF-8 а Windows1251.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. То, как Вы выкладываете код, вызывает ужас. Считается хорошим тоном все, что не помещается на один экран - сворачивать. 

2. Посмотрите проект http://arduino.ru/forum/proekty/s-stm32f103-na-televizor-polnyi-tv-signal там есть и TVOut, и кириллица сразу в нескольких кодировках. Продублирую оттуда картинку:

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

1. да уж заметил когда выложил, хотел исправить, а не могу(( так что извените, не нарочно!

2.Сложновато для меня, постараюсь понять и применить у себя. Спасибо, по поиску не нашел этой темы. Вообще цель реализации мне теперь становиться более понятна. 

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

ЕвгенийП пишет:

Функцию перекодировки из UTF-8 а Windows1251.

Ни одного нормального ответа на форуме не нашел по поводу перекодировки, можете помочь если под рукой ссылка.  

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

Ни одного нормального ответа на форуме не нашел по поводу перекодировки, можете помочь если под рукой ссылка.  

так что вам непонятно то?

Давайте на пальцах обьясню:

Вот вы методом тыка установили, что чтобы нарисовать на экране русскую букву "К", нужно вывести код 0xCA. Собственно, это и есть принцип перекодировки. Теперь вы даже можете эту перекодировку сами написать - всего то нужно просмотреть строчку, выводимую на экран и, если там есть буква "К"  - заменить ее на этот код. И так со всеми остальными буквами кириллицы. Составляете табличку с кодами русских букв и производите замену символов на коды перед использованием команды print(). И все

 

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

Давайте на пальцах обьясню:

 


Суть то ясна, человек говорит есть куча примеров здесь, вот и хотелось бы их найти посмотреть. А по факту, только один [b]andriano[/b] привел свой пример, правда для меня пока сложно в него сейчас вникать...
Нашел тут для oled 128*64 экранов пример, как он перекодирует понятно, но эти блин String, это что и как оно работает... У меня задача засунуть это в функцию TV. write() или TV. print()...

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
У меня задача засунуть это в функцию TV. write() или TV. print()...

не самый лучший вариант.

Обычно делают отдельную функцию, которая строчку "КОТЕЛ" преобразует в массив кодов. А уж этот массив вы потом печатаете через TV. print()

b707
Offline
Зарегистрирован: 26.05.2017

вот, слабал вам макет кода с функцией перекодировки и примером ее использования, выдернуто из одного проекта:

/*--------------------------------------------------------------------------------------
  UTF8 char recoding
  функция перекодировки
--------------------------------------------------------------------------------------*/
int utf8_rus(char* dest, const unsigned char* src) {
  
  uint8_t i, j;
  for ( i =0, j =0; src[i]; i++) {
   if ((src[i] == 0xD0 )&& src[i+1])  { dest[j++] = src[++i] - 0x10;}
    else if ((src[i] == 0xD1 )&& src[i+1]) {dest[j++] = src[++i] + 0x30;  }
    else dest[j++] = src[i];
  }
  dest[j] ='\0';
  return j;
}
/*--------------------------------------------------------------------------------------*/

// использование в программе:
   const unsigned char m[] = "Привет Ардуино!";  // исходная строчка кириллицей
   char k[30];                                  // сюда будем записывать результат перекодировки
  
   utf8_rus(k,m);                               // перекодируем строку m в строку k
   TV.print(k);                                 // печать
  

имейте в виду. что это только макет, с вашей либой скорее всего будет выводить крокозябры

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

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

Блин видел же этот код на Амперке в форуме, вы же его и советовали)))) отложил по причине общения здесь на форуме, ну и получения возможных разъяснений по теме. Спасибо b707, применять буду. А то я тут уже лепить из этого начал http://arduino.ru/forum/pesochnitsa/ne-podklyuchaetsya-biblioteka. И всем откликнувшимся и не равнодушным спасибо!

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

Спасибо b707, применять буду.

еще раз обращаю внимание на то, что это только пример. Непосредсвенно этот код вам не подойдет, тут кодировка другая. чем у вас. Строчки 9-10 надо переписывать под кодировку ваших символов

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

имейте в виду. что это только макет, с вашей либой скорее всего будет выводить крокозябры

Вы говорите о том, что могут перекодированые значения русских символов не попасть в массив символов библиотеки что написал в font6x8? 

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

еще раз обращаю внимание на то, что это только пример. Непосредсвенно этот код вам не подойдет, тут кодировка другая. чем у вас. Строчки 9-10 надо переписывать под кодировку ваших символов

Спасибо, это я понимаю. Я не собирался тупо в код вкрячивать... Посижу, подумаю, по результату достигнутого отпишу!

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

Строчки 9-10 надо переписывать под кодировку ваших символов

Вообщем вот такой код у меня получился:

int code, code2;
//---------------------------------------------------
nt utf8_rus(char *dest, char* src) {
  
  unsigned int i, j=0;
  
  for ( i =0; src[i]; i++) {
	  
	code=src[i];
	if (src[i] >= 0x90) { dest[j] = src[i] + 0x30; //D0 c 144 по 191  
											
			} else {if (src[i] >= 0x80) {dest[j] = src[i] + 0x70; //D1 с 128 по 143
																
							} else {dest[j] = src[i];}
	}
	if (src[i]== 0x91) { dest[j] = 0xB7;} //Ё
	if (src[i]== 0x81) { dest[j] = 0xA8;} //ё		
    
  } //end for
  code2=dest[j];
   
  dest[j] ='\0';
  return j;
}

С помощью переменных code и code2, что на входе и на выходе функции получалось, "Ё" большое из 129 перекодировалось в 168, а аналогично с малой "ё" из 145 - 184. По остальным буквам тож прошелся.

Осталось как прицепить TV.print(), т.к. с таким методом нет вывода символов... 


// использование в программе:
   const unsigned char m[] = "Привет Ардуино!";  // исходная строчка кириллицей
   char k[30];                                  // сюда будем записывать результат перекодировки
  
   utf8_rus(k,m);                               // перекодируем строку m в строку k
   TV.print(k);                                 // печать

 

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

Вообщем вот такой код у меня получился:

....

поправьте меня, но я не вижу в вашем коде, чтобы вы где-то инкрементировали переменную j

Похоже вы всю перекодировку пишете в один символ dest. а потом туда же пишете '\0'

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

чтобы вы где-то инкрементировали переменную j

Похоже вы всю перекодировку пишете в один символ dest. а потом туда же пишете '\0'

тогда как и где инкрементировать? dest[++j], 1. увеличение j, потом присваивание нового значения scr[i]
dest[++j]=src[i]+0x70; Тогда инкремент по линии D0 потом D1, даже если нет перекодировки с англ шрифтом инкремент.

char utf8_rus(char* dest, const char* src) {
  
  unsigned int i, j=0;
  
  for ( i =0; src[i]; i++) {
	 
	if (src[i] >= 0x90) { dest[++j] = src[i] + 0x30; //D0 c 144 по 191  
											
			} else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x70; //D1 с 128 по 143
																
							} else {dest[++j] = src[i];}
	}
	if (src[i]== 0x91) { dest[j] = 0xB7;} //Ё
	if (src[i]== 0x81) { dest[j] = 0xA8;} //ё		
    
  } //end for
 
   
  dest[j] ='\0';
  return j;
}

Я почему то думал прилетает буква, перекодируем, и выдаем на вывод... видимо ошибался... 
 

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

Я почему то думал прилетает буква, перекодируем, и выдаем на вывод... видимо ошибался... 

вы в код вообще не смотрите? Как же вы его правите тогда?

Если тут перекодировка одной буквы - зачем цикл по всей строке?

 

 

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

[quote=b707]

Перекодировка одной буквы понять в правильно ли я направление двигался... и что на выходе получается))

криминала в этом не вижу, далее двигаемся... 

все сначало, i крутится в цикле... j инкрементируется.... создается новый массив с перекодированными кодами символов.... 
 

int utf8_rus(char* dest, const unsigned char* src) {
  
  unsigned int i, j;
  
  for ( i =0, j=0; src[i]; i++) {
	  
	code=src[i];
	if (src[i] >= 0x90) { dest[++j] = src[i] + 0x30; //D0 c 144 по 191  
											
			} else {if (src[i] >= 0x80) {dest[++j] = src[i] + 0x70; //D1 с 128 по 143
																
							} else {dest[++j] = src[i];}
	}
	if (src[i]== 0x91) { dest[j] = 0xB7;} //Ё
	if (src[i]== 0x81) { dest[j] = 0xA8;} //ё		
    
  } //end for
  code2=dest[j];
   
  dest[j] ='\0';
  return j;
}

 

b707
Offline
Зарегистрирован: 26.05.2017

Я не понимаю, чего вы хотите добиться

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:
Я не понимаю, чего вы хотите добиться
 

ты сам то знаешь ответ, на мной поставленный вопрос?))) походу нет!

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

ты сам то знаешь ответ, на мной поставленный вопрос?))) походу нет!

пожалуй я скажу "нет" и выпилюсь из темы.

 

b707
Offline
Зарегистрирован: 26.05.2017

Ладно, черт с вами. Я вижу , что вы в коде по нулям совсем. Держите готовое решение - уберите переменную j совсем, везде замените ее на i. И инкремент вам тогда не нужен. Его тоже везде уберите.

На этом все.
Пробуйте.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:
Ладно, черт с вами. Я вижу , что вы в коде по нулям совсем. Держите готовое решение - уберите переменную j совсем, везде замените ее на i. И инкремент вам тогда не нужен. Его тоже везде уберите. На этом все. Пробуйте.

Самая большая проблема любого форума это отсутствие коммуникации людей. Еще раз повторюсь, я отлаживал свой алгоритм посимвольно, когда добился адекватной работы, написал. ездесь...   Далее предложение инкремента j правильно, но подача от вас ну прям ни какая... Я не клянчу готовый код, а прошу разъяснений и советов. Понятно что у меня с кодом по нулям. И алгорим то на самом деле работает...

m   00800100   byte[6]  символ
m[0]   0x0100   0xC0         А
m[1]   0x0101   0xC1         Б
m[2]   0x0102   0xC2         В
m[3]   0x0103   0xC3         Г
m[4]   0x0104   0xC4         Д
m[5]   0x0105   '\0'      конец строки

к вам вопрос как лучше [++j] или [j++], выше представленный результат с [++j]. Здесь получается  увеличиваю J, а потом присваиваю новый символ scr[i]. 

 

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

к вам вопрос как лучше [++j] или [j++]


ни первое, ни второе.
Повторяю, в вашем случае переменная j не нужна.
Чем вас вот так не устраивает:

dest[i] = src[i] + 0x30;

b707
Offline
Зарегистрирован: 26.05.2017

И да, забыл спросить - посимвольно это хорошо, а в строчку то научились собирать? на экране печатает?

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:
а в строчку то научились собирать? на экране печатает?

Не, пока на этом завяз... Хотел с этим решить для начала. Меня так то и посимвольно устроило бы, пару строк вывести. Но тут принципиальный вопрос, научиться работать дальше.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

dest[i] = src[i] + 0x30;

Да устраивает, насмотрелся примеров еще других, в основном все заводят лишнюю переменную и ей передают результат. Вечером дальше буду упражняться, попробую так!