atmega8 + бибилиотека SD.h

Гриша
Offline
Зарегистрирован: 27.04.2014

b707 пишет:

да кто вам сказал, что таких нет? - навалом просто.  Далеко ходить не надо - в той же Меге 256 килобайт

Но юзерам сколько не дай - они всегда будут ныть.

genia1991 пишет:

программирую сейчас переводчик . анг- русс. будет полезная штука )

не знаю почему, но вспомнил сразу про это замечательное устройство... "

Устройства хранения данных аудиокассета,

 

genia1991
Offline
Зарегистрирован: 25.12.2019

да можно сейчас и китайский скачать на телефон но мне интересно именно самому сделать. понять принцип и научиться новому чему то. хранение фраз и слов будет на SD карте.

вчера конечно промучился не могу понять 10 строчек кода которые давно сам писал (

в целом то ясно как работает. а понять кажджую из них не получается :(

очень разочаровался из за этого

 

кстати для fa16 library не нашел замену file.seek(0);

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

genia1991 пишет:

вчера конечно промучился не могу понять 10 строчек кода которые давно сам писал (
в целом то ясно как работает. а понять кажджую из них не получается :(

значит нифига не "сам писал", списал откуда-то. То что сам писал - настолько чтоб не понять - не забывается.

Цитата:
очень разочаровался из за этого

из-за чего?

genia1991
Offline
Зарегистрирован: 25.12.2019

b707 пишет:

genia1991 пишет:

вчера конечно промучился не могу понять 10 строчек кода которые давно сам писал (
в целом то ясно как работает. а понять кажджую из них не получается :(

значит нифига не "сам писал", списал откуда-то. То что сам писал - настолько чтоб не понять - не забывается.

Цитата:
очень разочаровался из за этого

из-за чего?

 

да немного списал вот это на офф. форуме:

в целом как работает эти строчки понимаю. А как они работают по отдельности.Особенно зачем в конце написано это i++;

не могу разобраться. Этот кусок кода читает линию из файла до символа /n

При нажатии кнопок вперед или назад можно перематывать строчку за строчкой вперед или назад

 

  for(int i = 0; i < lineNumer;)   
  {
    theChar = dataFile.read();
    if(theChar == '\n'){
      i++;
    }
  }

 

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

genia1991 пишет:

в целом как работает эти строчки понимаю. А как они работают по отдельности.Особенно зачем в конце написано это i++;

  for(int i = 0; i < lineNumer;)   
  {
    theChar = dataFile.read();
    if(theChar == '\n'){
      i++;
    }
  }

в каждой строке вплоть до строчки linenumber:
строка 3 -читаем символ за символом,
строка 4 - проверяем символы пока не встретим '\n'.
строка 5 - Как встретили символ '\n' - переходим на новую строку (i++)

genia1991
Offline
Зарегистрирован: 25.12.2019

b707 пишет:

genia1991 пишет:

в целом как работает эти строчки понимаю. А как они работают по отдельности.Особенно зачем в конце написано это i++;

  for(int i = 0; i < lineNumer;)   
  {
    theChar = dataFile.read();
    if(theChar == '\n'){
      i++;
    }
  }

в каждой строке вплоть до строчки linenumber:
строка 3 -читаем символ за символом,
строка 4 - проверяем символы пока не встретим '\n'.
строка 5 - Как встретили символ '\n' - переходим на новую строку (i++)

вроде понял )

строка 1- доходим до строки lineNumber

строка 2-читаем ее как char переменную

строка 3- доходим до конца строки и останавливаемся

строка 4-прибавляем +1 что строка например #2 была прочитана

 

вроде примерно понятно. буду разбираться только с этим скетчем может за неделю что то и получится сделать

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

Неправильно

genia1991
Offline
Зарегистрирован: 25.12.2019

b707 пишет:
Неправильно

гляну еще примеры где нибудь. сложновато еще понять это

genia1991
Offline
Зарегистрирован: 25.12.2019

кое как получилось запустить. Но этот код никак не хочется нормально работать.

Он то высвечивает на экране нужную строку но он шурует до конца экрана и заполняет его полностью (

А я пытаюсь только 1 раз вывести строку.

Можно ли как то заставить что бы экран вывел только 1 раз строку и не повторял ее пока while (dataFile.available()) ?

while (dataFile.available()){
    theChar = dataFile.read();
    
    if(theChar == '\n'){
      break;
    }
          if(theChar == '-'){     
          oled.println();
          oled.println("----------------------------"); //start with new line
             }
  lol = String(theChar);
  Serial.println(lol);
    delay(20);  
    oled.print(lol);
            }

 

sadman41
Offline
Зарегистрирован: 19.10.2016

А как код узнает, что он уже вывел строку? Это же код, а не человек.

genia1991
Offline
Зарегистрирован: 25.12.2019

sadman41 пишет:

А как код узнает, что он уже вывел строку? Это же код, а не человек.

я только хочу что бы когда код доходит до символа \n  . Код переставал работать в:

while (dataFile.available()){

 

Но у меня никак не получается и он продолжает шуровать этот while . тем самым на экране дублируя строки а надо что бы останавливался  (

но что то никак не выходит совсем

genia1991
Offline
Зарегистрирован: 25.12.2019

а можно как то перенаправить в другую функцию . например когда я дохожу до конца строчки?

и что бы эта функция работала пока я не нажму кнопку?

genia1991
Offline
Зарегистрирован: 25.12.2019

Круто. вроде работает )

получилось через 2 дня мучений )

void myFunction() {
  while (digitalRead(3)==HIGH  || digitalRead(2)==HIGH ) {

    Serial.println("========================================");
     if (digitalRead(3)==LOW  || digitalRead(2)==LOW )  {     break; }
  }
}

 

а функцию сюда закинул:

    if(theChar == '\n'){
      myFunction();
      break;
    }

и все работает. в начале мини баг только есть. но такой минимальный что пойдет и так :)

я даже не думал что так нормально получится )

скоро продолжу и анг. учить как только доделаю устройство. самоделкой всегда интереснее пользоваться )

sadman41
Offline
Зарегистрирован: 19.10.2016

Как вы это все придумываете, я не понимаю...

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

sadman41 пишет:
Как вы это все придумываете, я не понимаю...

вот смотришь, Гриш, как люди мучаются - и думаешь, нафига это им?
А с другой стороны, я сам сегодня протрахался, вешая зеркало в ванной - весь день убил и под конец кокнул уголок. Не сильно, но все впечатление от работы коту под хвост! Вот спрашивается, нафига сам полез, неужели нельзя было за установку доплатить? Ведь знаю, что не мое это....

genia1991
Offline
Зарегистрирован: 25.12.2019

мне еще предстоит сделать запись новых строк на sd через visual studio c++ (только подправить почти работает все)

добавлю клавиатуру. уже тоже есть наработки и есть скетч для поиска слов :)

надо все вместить в 328. Это самый тяжелый проэкт для меня. а то я не бум бум во все этом. но сильно хочу сделать. приложение просто скачать уже не интересно.  сейчас вообще в голове каша после кода всего этого (

genia1991
Offline
Зарегистрирован: 25.12.2019

кое как доделал переводчик )

Но осталась самая большая проблема это нормальная поддержка русского языка.

я взял просто файл system5x7.h  открыл его и вместо английских символов добавил руссские. но это очень не удобно сделано.

Если кому то не сложно можете помощь дописать или как то исправить поддержку русс. языка?

библиотеку использовал такую : SSD1306Ascii

Сам к сожалению не могу понять как можно это сделать (

сейчас например вот эта строчка: 0x20, 0x54, 0x54, 0x78, 0x40,   // это маленькая русская буква "а"

 

/*
 *
 * System5x7
 *
 *
 * File Name           : System5x7.h
 * Date                : 28 Oct 2008
 * Font size in bytes  : 470
 * Font width          : 5
 * Font height         : 7
 * Font first char     : 32
 * Font last char      : 127
 * Font used chars     : 94
 *
 * The font data are defined as
 *
 * struct _FONT_ {
 *     uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
 *     uint8_t    font_Width_in_Pixel_for_fixed_drawing;
 *     uint8_t    font_Height_in_Pixel_for_all_characters;
 *     unit8_t    font_First_Char;
 *     uint8_t    font_Char_Count;
 *
 *     uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
 *                  // for each character the separate width in pixels,
 *                  // characters < 128 have an implicit virtual right empty row
 *
 *     uint8_t    font_data[];
 *                  // bit field of all characters
 */

#ifndef SYSTEM5x7_H
#define SYSTEM5x7_H

#define SYSTEM5x7_WIDTH 5
#define SYSTEM5x7_HEIGHT 7

GLCDFONTDECL(System5x7) = {
    0x0, 0x0, // size of zero indicates fixed width font,
    0x05, // width
    0x07, // height
    0x20, // first char
    0x61, // char count
    
    // Fixed width; char width table not used !!!!
    
    // font data
    0x00, 0x00, 0x00, 0x00, 0x00,// (space)
	0x7C, 0x50, 0x70, 0x00, 0x7C,   // ?
	0x00, 0x07, 0x00, 0x07, 0x00,// "
	0x14, 0x7F, 0x14, 0x7F, 0x14,// #
	0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
	0x23, 0x13, 0x08, 0x64, 0x62,// %
	0x36, 0x49, 0x55, 0x22, 0x50,// &
	0x00, 0x05, 0x03, 0x00, 0x00,// '
	0x00, 0x1C, 0x22, 0x41, 0x00,// (
	0x00, 0x41, 0x22, 0x1C, 0x00,// )
	0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
	0x08, 0x08, 0x3E, 0x08, 0x08,// +
	0x00, 0x50, 0x30, 0x00, 0x00,// ,
	0x08, 0x08, 0x08, 0x08, 0x08,// -
	0x00, 0x60, 0x60, 0x00, 0x00,// .
	0x20, 0x10, 0x08, 0x04, 0x02,// /
	0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
	0x00, 0x42, 0x7F, 0x40, 0x00,// 1
	0x42, 0x61, 0x51, 0x49, 0x46,// 2
	0x21, 0x41, 0x45, 0x4B, 0x31,// 3
	0x18, 0x14, 0x12, 0x7F, 0x10,// 4
	0x27, 0x45, 0x45, 0x45, 0x39,// 5
	0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
	0x01, 0x71, 0x09, 0x05, 0x03,// 7
	0x36, 0x49, 0x49, 0x49, 0x36,// 8
	0x06, 0x49, 0x49, 0x29, 0x1E,// 9
     0x00, 0x36, 0x36, 0x00, 0x00,// :

      //      !;<=>
	0x7C, 0x50, 0x70, 0x00, 0x00,   // ?
	0x42, 0x42, 0x52, 0x52, 0x3C,   // ?
	0x7C, 0x10, 0x38, 0x44, 0x38,   // ?
	0x40, 0x2C, 0x12, 0x7E, 0x00,   // ?
     //       !;<=>

	0x02, 0x01, 0x51, 0x09, 0x06,// ?
	0x32, 0x49, 0x79, 0x41, 0x3E,// @
	0x7E, 0x11, 0x11, 0x11, 0x7E,// A
	0x7F, 0x49, 0x49, 0x49, 0x36,// B
	0x3E, 0x41, 0x41, 0x41, 0x22,// C
	0x7F, 0x41, 0x41, 0x22, 0x1C,// D
	0x7F, 0x49, 0x49, 0x49, 0x41,// E
	0x7F, 0x09, 0x09, 0x01, 0x01,// F
	0x3E, 0x41, 0x41, 0x51, 0x32,// G
	0x7F, 0x08, 0x08, 0x08, 0x7F,// H
	0x00, 0x41, 0x7F, 0x41, 0x00,// I
	0x20, 0x40, 0x41, 0x3F, 0x01,// J
	0x7F, 0x08, 0x14, 0x22, 0x41,// K
	0x7F, 0x40, 0x40, 0x40, 0x40,// L
	0x7F, 0x02, 0x04, 0x02, 0x7F,// M
	0x7F, 0x04, 0x08, 0x10, 0x7F,// N
	0x3E, 0x41, 0x41, 0x41, 0x3E,// O
	0x7F, 0x09, 0x09, 0x09, 0x06,// P
	0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
	0x7F, 0x09, 0x19, 0x29, 0x46,// R
	0x46, 0x49, 0x49, 0x49, 0x31,// S
	0x01, 0x01, 0x7F, 0x01, 0x01,// T
	0x3F, 0x40, 0x40, 0x40, 0x3F,// U
	0x1F, 0x20, 0x40, 0x20, 0x1F,// V
	0x7F, 0x20, 0x18, 0x20, 0x7F,// W
	0x63, 0x14, 0x08, 0x14, 0x63,// X
	0x03, 0x04, 0x78, 0x04, 0x03,// Y
	0x61, 0x51, 0x49, 0x45, 0x43,// Z
	0x00, 0x00, 0x7F, 0x41, 0x41,// [
	0x02, 0x04, 0x08, 0x10, 0x20,// "\"
	0x41, 0x41, 0x7F, 0x00, 0x00,// ]
	0x04, 0x02, 0x01, 0x02, 0x04,// ^
	0x40, 0x40, 0x40, 0x40, 0x40,// _
	0x00, 0x01, 0x02, 0x04, 0x00,// `
0x20, 0x54, 0x54, 0x78, 0x40,   // ?

0x3E, 0x49, 0x45, 0x45, 0x38,   // ?
0x7E, 0x4A, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x04, 0x04, 0x0C, 0x00,   // ?
0x38, 0x45, 0x45, 0x49, 0x3E,   // ?
0x38, 0x54, 0x54, 0x54, 0x18,   // ?
0x4C, 0x30, 0x7C, 0x30, 0x4C,   // ?
0x24, 0x42, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x20, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x21, 0x11, 0x7C, 0x00,   // ?
0x7C, 0x10, 0x28, 0x44, 0x00,   // ?
0x40, 0x3C, 0x04, 0x04, 0x7C,   // ?
0x7C, 0x08, 0x10, 0x08, 0x7C,   // ?
0x7C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x38, 0x44, 0x44, 0x44, 0x38,   // ?
0x7C, 0x04, 0x04, 0x7C, 0x00,   // ?
0xFC, 0x18, 0x24, 0x24, 0x18,   // ?

0x38, 0x44, 0x44, 0x44, 0x28,   // ?
0x04, 0x04, 0x7C, 0x04, 0x04,   // ?
0x4C, 0x90, 0x90, 0x90, 0x7C,   // ?
0x18, 0x24, 0x7E, 0x24, 0x18,   // ?
0x44, 0x28, 0x10, 0x28, 0x44,   // ?
0x3C, 0x20, 0x20, 0x3C, 0x60,   // ?
0x1C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x40, 0x7C, 0x40, 0x7C,   // ?
0x3C, 0x20, 0x3C, 0x20, 0x7C,   // ?
0x04, 0x7C, 0x50, 0x70, 0x00,   // ?
0x7C, 0x50, 0x70, 0x00, 0x7C,   // ?
0x7C, 0x50, 0x70, 0x00, 0x00,   // ?
0x42, 0x42, 0x52, 0x52, 0x3C,   // ?
0x7C, 0x10, 0x38, 0x44, 0x38,   // ?
0x40, 0x2C, 0x12, 0x7E, 0x00,   // ?
	0x00, 0x08, 0x36, 0x41, 0x00,// {
	0x00, 0x00, 0x7F, 0x00, 0x00,// |
	0x00, 0x41, 0x36, 0x08, 0x00,// }
	0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
	0x08, 0x1C, 0x2A, 0x08, 0x08, // <-
	0x00, 0x06, 0x09, 0x09, 0x06 // degree symbol
    
};

#endif

 

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

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

Что, собственно, Вы имеете в виду?

sadman41
Offline
Зарегистрирован: 19.10.2016

b707 пишет:

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

Нет, насчёт непродуктивной траты времени я ничего против не имею. Это, вобщем-то, смысл жизни человека. Я не понимаю, как может придти в голову "перенаправить чтение в другую функцию", чтобы все это не попадало на дисплей. Это что, как сточную канаву прокопать, чтобы говна к соседу текли - примерно такая логика?

genia1991
Offline
Зарегистрирован: 25.12.2019

andriano пишет:

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

Что, собственно, Вы имеете в виду?

Попытаюсь обьяснить. У меня есть оригинальный файл шрифта system5x7.h который имеет такое содержимое:

/*
 *
 * System5x7
 *
 *
 * File Name           : System5x7.h
 * Date                : 28 Oct 2008
 * Font size in bytes  : 470
 * Font width          : 5
 * Font height         : 7
 * Font first char     : 32
 * Font last char      : 127
 * Font used chars     : 94
 *
 * The font data are defined as
 *
 * struct _FONT_ {
 *     uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
 *     uint8_t    font_Width_in_Pixel_for_fixed_drawing;
 *     uint8_t    font_Height_in_Pixel_for_all_characters;
 *     unit8_t    font_First_Char;
 *     uint8_t    font_Char_Count;
 *
 *     uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
 *                  // for each character the separate width in pixels,
 *                  // characters < 128 have an implicit virtual right empty row
 *
 *     uint8_t    font_data[];
 *                  // bit field of all characters
 */

#ifndef SYSTEM5x7_H
#define SYSTEM5x7_H

#define SYSTEM5x7_WIDTH 5
#define SYSTEM5x7_HEIGHT 7

GLCDFONTDECL(System5x7) = {
    0x0, 0x0, // size of zero indicates fixed width font,
    0x05, // width
    0x07, // height
    0x20, // first char
    0x61, // char count
    
    // Fixed width; char width table not used !!!!
    
    // font data
    0x00, 0x00, 0x00, 0x00, 0x00,// (space)
	0x00, 0x00, 0x5F, 0x00, 0x00,// !
	0x00, 0x07, 0x00, 0x07, 0x00,// "
	0x14, 0x7F, 0x14, 0x7F, 0x14,// #
	0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
	0x23, 0x13, 0x08, 0x64, 0x62,// %
	0x36, 0x49, 0x55, 0x22, 0x50,// &
	0x00, 0x05, 0x03, 0x00, 0x00,// '
	0x00, 0x1C, 0x22, 0x41, 0x00,// (
	0x00, 0x41, 0x22, 0x1C, 0x00,// )
	0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
	0x08, 0x08, 0x3E, 0x08, 0x08,// +
	0x00, 0x50, 0x30, 0x00, 0x00,// ,
	0x08, 0x08, 0x08, 0x08, 0x08,// -
	0x00, 0x60, 0x60, 0x00, 0x00,// .
	0x20, 0x10, 0x08, 0x04, 0x02,// /
	0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
	0x00, 0x42, 0x7F, 0x40, 0x00,// 1
	0x42, 0x61, 0x51, 0x49, 0x46,// 2
	0x21, 0x41, 0x45, 0x4B, 0x31,// 3
	0x18, 0x14, 0x12, 0x7F, 0x10,// 4
	0x27, 0x45, 0x45, 0x45, 0x39,// 5
	0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
	0x01, 0x71, 0x09, 0x05, 0x03,// 7
	0x36, 0x49, 0x49, 0x49, 0x36,// 8
	0x06, 0x49, 0x49, 0x29, 0x1E,// 9
	0x00, 0x36, 0x36, 0x00, 0x00,// :
	0x00, 0x56, 0x36, 0x00, 0x00,// ;
	0x00, 0x08, 0x14, 0x22, 0x41,// <
	0x14, 0x14, 0x14, 0x14, 0x14,// =
	0x41, 0x22, 0x14, 0x08, 0x00,// >
	0x02, 0x01, 0x51, 0x09, 0x06,// ?
	0x32, 0x49, 0x79, 0x41, 0x3E,// @
	0x7E, 0x11, 0x11, 0x11, 0x7E,// A
	0x7F, 0x49, 0x49, 0x49, 0x36,// B
	0x3E, 0x41, 0x41, 0x41, 0x22,// C
	0x7F, 0x41, 0x41, 0x22, 0x1C,// D
	0x7F, 0x49, 0x49, 0x49, 0x41,// E
	0x7F, 0x09, 0x09, 0x01, 0x01,// F
	0x3E, 0x41, 0x41, 0x51, 0x32,// G
	0x7F, 0x08, 0x08, 0x08, 0x7F,// H
	0x00, 0x41, 0x7F, 0x41, 0x00,// I
	0x20, 0x40, 0x41, 0x3F, 0x01,// J
	0x7F, 0x08, 0x14, 0x22, 0x41,// K
	0x7F, 0x40, 0x40, 0x40, 0x40,// L
	0x7F, 0x02, 0x04, 0x02, 0x7F,// M
	0x7F, 0x04, 0x08, 0x10, 0x7F,// N
	0x3E, 0x41, 0x41, 0x41, 0x3E,// O
	0x7F, 0x09, 0x09, 0x09, 0x06,// P
	0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
	0x7F, 0x09, 0x19, 0x29, 0x46,// R
	0x46, 0x49, 0x49, 0x49, 0x31,// S
	0x01, 0x01, 0x7F, 0x01, 0x01,// T
	0x3F, 0x40, 0x40, 0x40, 0x3F,// U
	0x1F, 0x20, 0x40, 0x20, 0x1F,// V
	0x7F, 0x20, 0x18, 0x20, 0x7F,// W
	0x63, 0x14, 0x08, 0x14, 0x63,// X
	0x03, 0x04, 0x78, 0x04, 0x03,// Y
	0x61, 0x51, 0x49, 0x45, 0x43,// Z
	0x00, 0x00, 0x7F, 0x41, 0x41,// [
	0x02, 0x04, 0x08, 0x10, 0x20,// "\"
	0x41, 0x41, 0x7F, 0x00, 0x00,// ]
	0x04, 0x02, 0x01, 0x02, 0x04,// ^
	0x40, 0x40, 0x40, 0x40, 0x40,// _
	0x00, 0x01, 0x02, 0x04, 0x00,// `
	0x20, 0x54, 0x54, 0x54, 0x78,// a
	0x7F, 0x48, 0x44, 0x44, 0x38,// b
	0x38, 0x44, 0x44, 0x44, 0x20,// c
	0x38, 0x44, 0x44, 0x48, 0x7F,// d
	0x38, 0x54, 0x54, 0x54, 0x18,// e
	0x08, 0x7E, 0x09, 0x01, 0x02,// f
	0x08, 0x14, 0x54, 0x54, 0x3C,// g
	0x7F, 0x08, 0x04, 0x04, 0x78,// h
	0x00, 0x44, 0x7D, 0x40, 0x00,// i
	0x20, 0x40, 0x44, 0x3D, 0x00,// j
	0x00, 0x7F, 0x10, 0x28, 0x44,// k
	0x00, 0x41, 0x7F, 0x40, 0x00,// l
	0x7C, 0x04, 0x18, 0x04, 0x78,// m
	0x7C, 0x08, 0x04, 0x04, 0x78,// n
	0x38, 0x44, 0x44, 0x44, 0x38,// o
	0x7C, 0x14, 0x14, 0x14, 0x08,// p
	0x08, 0x14, 0x14, 0x18, 0x7C,// q
	0x7C, 0x08, 0x04, 0x04, 0x08,// r
	0x48, 0x54, 0x54, 0x54, 0x20,// s
	0x04, 0x3F, 0x44, 0x40, 0x20,// t
	0x3C, 0x40, 0x40, 0x20, 0x7C,// u
	0x1C, 0x20, 0x40, 0x20, 0x1C,// v
	0x3C, 0x40, 0x30, 0x40, 0x3C,// w
	0x44, 0x28, 0x10, 0x28, 0x44,// x
	0x0C, 0x50, 0x50, 0x50, 0x3C,// y
	0x44, 0x64, 0x54, 0x4C, 0x44,// z
	0x00, 0x08, 0x36, 0x41, 0x00,// {
	0x00, 0x00, 0x7F, 0x00, 0x00,// |
	0x00, 0x41, 0x36, 0x08, 0x00,// }
	0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
	0x08, 0x1C, 0x2A, 0x08, 0x08, // <-
	0x00, 0x06, 0x09, 0x09, 0x06 // degree symbol
    
};

#endif

А такой файл я использую у себя в скетче. Он немного переделан. маленькие анг. буквы я удалил и вместо них вставил русские. Файл выглядит так:

/*
 *
 * System5x7
 *
 *
 * File Name           : System5x7.h
 * Date                : 28 Oct 2008
 * Font size in bytes  : 470
 * Font width          : 5
 * Font height         : 7
 * Font first char     : 32
 * Font last char      : 127
 * Font used chars     : 94
 *
 * The font data are defined as
 *
 * struct _FONT_ {
 *     uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
 *     uint8_t    font_Width_in_Pixel_for_fixed_drawing;
 *     uint8_t    font_Height_in_Pixel_for_all_characters;
 *     unit8_t    font_First_Char;
 *     uint8_t    font_Char_Count;
 *
 *     uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
 *                  // for each character the separate width in pixels,
 *                  // characters < 128 have an implicit virtual right empty row
 *
 *     uint8_t    font_data[];
 *                  // bit field of all characters
 */

#ifndef SYSTEM5x7_H
#define SYSTEM5x7_H

#define SYSTEM5x7_WIDTH 5
#define SYSTEM5x7_HEIGHT 7

GLCDFONTDECL(System5x7) = {
    0x0, 0x0, // size of zero indicates fixed width font,
    0x05, // width
    0x07, // height
    0x20, // first char
    0x61, // char count
    
    // Fixed width; char width table not used !!!!
    
    // font data
    0x00, 0x00, 0x00, 0x00, 0x00,// (space)
	0x7C, 0x50, 0x70, 0x00, 0x7C,   // ?
	0x00, 0x07, 0x00, 0x07, 0x00,// "
	0x14, 0x7F, 0x14, 0x7F, 0x14,// #
	0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
	0x23, 0x13, 0x08, 0x64, 0x62,// %
	0x36, 0x49, 0x55, 0x22, 0x50,// &
	0x00, 0x05, 0x03, 0x00, 0x00,// '
	0x00, 0x1C, 0x22, 0x41, 0x00,// (
	0x00, 0x41, 0x22, 0x1C, 0x00,// )
	0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
	0x08, 0x08, 0x3E, 0x08, 0x08,// +
	0x00, 0x50, 0x30, 0x00, 0x00,// ,
	0x08, 0x08, 0x08, 0x08, 0x08,// -
	0x00, 0x60, 0x60, 0x00, 0x00,// .
	0x20, 0x10, 0x08, 0x04, 0x02,// /
	0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
	0x00, 0x42, 0x7F, 0x40, 0x00,// 1
	0x42, 0x61, 0x51, 0x49, 0x46,// 2
	0x21, 0x41, 0x45, 0x4B, 0x31,// 3
	0x18, 0x14, 0x12, 0x7F, 0x10,// 4
	0x27, 0x45, 0x45, 0x45, 0x39,// 5
	0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
	0x01, 0x71, 0x09, 0x05, 0x03,// 7
	0x36, 0x49, 0x49, 0x49, 0x36,// 8
	0x06, 0x49, 0x49, 0x29, 0x1E,// 9
     0x00, 0x36, 0x36, 0x00, 0x00,// :

      //      !;<=>
	0x7C, 0x50, 0x70, 0x00, 0x00,   // ?
	0x42, 0x42, 0x52, 0x52, 0x3C,   // ?
	0x7C, 0x10, 0x38, 0x44, 0x38,   // ?
	0x40, 0x2C, 0x12, 0x7E, 0x00,   // ?
     //       !;<=>

	0x02, 0x01, 0x51, 0x09, 0x06,// ?
	0x32, 0x49, 0x79, 0x41, 0x3E,// @
	0x7E, 0x11, 0x11, 0x11, 0x7E,// A
	0x7F, 0x49, 0x49, 0x49, 0x36,// B
	0x3E, 0x41, 0x41, 0x41, 0x22,// C
	0x7F, 0x41, 0x41, 0x22, 0x1C,// D
	0x7F, 0x49, 0x49, 0x49, 0x41,// E
	0x7F, 0x09, 0x09, 0x01, 0x01,// F
	0x3E, 0x41, 0x41, 0x51, 0x32,// G
	0x7F, 0x08, 0x08, 0x08, 0x7F,// H
	0x00, 0x41, 0x7F, 0x41, 0x00,// I
	0x20, 0x40, 0x41, 0x3F, 0x01,// J
	0x7F, 0x08, 0x14, 0x22, 0x41,// K
	0x7F, 0x40, 0x40, 0x40, 0x40,// L
	0x7F, 0x02, 0x04, 0x02, 0x7F,// M
	0x7F, 0x04, 0x08, 0x10, 0x7F,// N
	0x3E, 0x41, 0x41, 0x41, 0x3E,// O
	0x7F, 0x09, 0x09, 0x09, 0x06,// P
	0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
	0x7F, 0x09, 0x19, 0x29, 0x46,// R
	0x46, 0x49, 0x49, 0x49, 0x31,// S
	0x01, 0x01, 0x7F, 0x01, 0x01,// T
	0x3F, 0x40, 0x40, 0x40, 0x3F,// U
	0x1F, 0x20, 0x40, 0x20, 0x1F,// V
	0x7F, 0x20, 0x18, 0x20, 0x7F,// W
	0x63, 0x14, 0x08, 0x14, 0x63,// X
	0x03, 0x04, 0x78, 0x04, 0x03,// Y
	0x61, 0x51, 0x49, 0x45, 0x43,// Z
	0x00, 0x00, 0x7F, 0x41, 0x41,// [
	0x02, 0x04, 0x08, 0x10, 0x20,// "\"
	0x41, 0x41, 0x7F, 0x00, 0x00,// ]
	0x04, 0x02, 0x01, 0x02, 0x04,// ^
	0x40, 0x40, 0x40, 0x40, 0x40,// _
	0x00, 0x01, 0x02, 0x04, 0x00,// `
0x20, 0x54, 0x54, 0x78, 0x40,   // ?

0x3E, 0x49, 0x45, 0x45, 0x38,   // ?
0x7E, 0x4A, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x04, 0x04, 0x0C, 0x00,   // ?
0x38, 0x45, 0x45, 0x49, 0x3E,   // ?
0x38, 0x54, 0x54, 0x54, 0x18,   // ?
0x4C, 0x30, 0x7C, 0x30, 0x4C,   // ?
0x24, 0x42, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x20, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x21, 0x11, 0x7C, 0x00,   // ?
0x7C, 0x10, 0x28, 0x44, 0x00,   // ?
0x40, 0x3C, 0x04, 0x04, 0x7C,   // ?
0x7C, 0x08, 0x10, 0x08, 0x7C,   // ?
0x7C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x38, 0x44, 0x44, 0x44, 0x38,   // ?
0x7C, 0x04, 0x04, 0x7C, 0x00,   // ?
0xFC, 0x18, 0x24, 0x24, 0x18,   // ?

0x38, 0x44, 0x44, 0x44, 0x28,   // ?
0x04, 0x04, 0x7C, 0x04, 0x04,   // ?
0x4C, 0x90, 0x90, 0x90, 0x7C,   // ?
0x18, 0x24, 0x7E, 0x24, 0x18,   // ?
0x44, 0x28, 0x10, 0x28, 0x44,   // ?
0x3C, 0x20, 0x20, 0x3C, 0x60,   // ?
0x1C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x40, 0x7C, 0x40, 0x7C,   // ?
0x3C, 0x20, 0x3C, 0x20, 0x7C,   // ?
0x04, 0x7C, 0x50, 0x70, 0x00,   // ?
0x7C, 0x50, 0x70, 0x00, 0x7C,   // ?
0x7C, 0x50, 0x70, 0x00, 0x00,   // ?
0x42, 0x42, 0x52, 0x52, 0x3C,   // ?
0x7C, 0x10, 0x38, 0x44, 0x38,   // ?
0x40, 0x2C, 0x12, 0x7E, 0x00,   // ?
	0x00, 0x08, 0x36, 0x41, 0x00,// {
	0x00, 0x00, 0x7F, 0x00, 0x00,// |
	0x00, 0x41, 0x36, 0x08, 0x00,// }
	0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
	0x08, 0x1C, 0x2A, 0x08, 0x08, // <-
	0x00, 0x06, 0x09, 0x09, 0x06 // degree symbol
    
};

#endif

Теперь если в скетче я буду писать английскую букву например "b" на экране я увижу русскую букву "б"

Но это очень не удобно. такая запись :(

Очень хотелось бы что что бы дополнительно добавить этот код в шрифт:

0x20, 0x54, 0x54, 0x78, 0x40,   // ?

0x3E, 0x49, 0x45, 0x45, 0x38,   // ?
0x7E, 0x4A, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x04, 0x04, 0x0C, 0x00,   // ?
0x38, 0x45, 0x45, 0x49, 0x3E,   // ?
0x38, 0x54, 0x54, 0x54, 0x18,   // ?
0x4C, 0x30, 0x7C, 0x30, 0x4C,   // ?
0x24, 0x42, 0x4A, 0x34, 0x00,   // ?
0x7C, 0x20, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x21, 0x11, 0x7C, 0x00,   // ?
0x7C, 0x10, 0x28, 0x44, 0x00,   // ?
0x40, 0x3C, 0x04, 0x04, 0x7C,   // ?
0x7C, 0x08, 0x10, 0x08, 0x7C,   // ?
0x7C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x38, 0x44, 0x44, 0x44, 0x38,   // ?
0x7C, 0x04, 0x04, 0x7C, 0x00,   // ?
0xFC, 0x18, 0x24, 0x24, 0x18,   // ?

0x38, 0x44, 0x44, 0x44, 0x28,   // ?
0x04, 0x04, 0x7C, 0x04, 0x04,   // ?
0x4C, 0x90, 0x90, 0x90, 0x7C,   // ?
0x18, 0x24, 0x7E, 0x24, 0x18,   // ?
0x44, 0x28, 0x10, 0x28, 0x44,   // ?
0x3C, 0x20, 0x20, 0x3C, 0x60,   // ?
0x1C, 0x10, 0x10, 0x7C, 0x00,   // ?
0x7C, 0x40, 0x7C, 0x40, 0x7C,   // ?
0x3C, 0x20, 0x3C, 0x20, 0x7C,   // ?
0x04, 0x7C, 0x50, 0x70, 0x00,   // ?
0x7C, 0x50, 0x70, 0x00, 0x7C,   // ?
0x7C, 0x50, 0x70, 0x00, 0x00,   // ?
0x42, 0x42, 0x52, 0x52, 0x3C,   // ?
0x7C, 0x10, 0x38, 0x44, 0x38,   // ?
0x40, 0x2C, 0x12, 0x7E, 0x00,   // ?

Но я получаю ошибку в шрифте и не компилируется ничего (

Тоесть хочется просто вводить букву русс. например "б" и на экране б и получать.

 

Может кто то может помощь добавить русс. буквы в файл system5x7.h

спасибо за помощь

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

genia1991, видите ли, совершенно недостаточно просто "добавить русс. буквы в файл", необходимо еще, чтобы скетч умел с этими буквами работать.

Посмотрите: http://arduino.ru/forum/proekty/asoled-kompaktnaya-biblioteka-dlya-oled-displeya-128kh64-s-kirillitsei-utf-8

может, извлечете что для себя полезное.

genia1991
Offline
Зарегистрирован: 25.12.2019

andriano пишет:

genia1991, видите ли, совершенно недостаточно просто "добавить русс. буквы в файл", необходимо еще, чтобы скетч умел с этими буквами работать.

Посмотрите: http://arduino.ru/forum/proekty/asoled-kompaktnaya-biblioteka-dlya-oled-displeya-128kh64-s-kirillitsei-utf-8

может, извлечете что для себя полезное.

Почитаю полезную инфу. спасибо

Кстати да недостаточно добавить только русс. буквы в шрифт к сожалению . но если менять кодировку для руссю букв на ANSI то начинает библиотека работать и с русс символами. Сейчас пока что только это для меня под силу сделать. но это все равно намного лучше чем то что было у меня до этого в скетче сделано