1. Уважаемые форумчане! Убедительная просьба, используйте наиболее подходящие темы для своих сообщений. Спасибо за понимание.
    Скрыть объявление

Контроллер на Arduino MEGA 2560 + TFT

Тема в разделе "Автоматика", создана пользователем Vadim Pivovaroff, 25 ноя 2014.

Поделиться этой страницей

  1. mishgan

    mishgan Active Member

    Регистрация:
    29.04.2014
    191
    51
    Всем желающим русифицировать в помощь функция
    Код:
    uint8_t utf8_rus_charmap[] PROGMEM= {
    'A', //A 0
    128, //Б 1
    'B', //В 2
    129, //Г 3
    130, //Д 4
    'E', //Е 5
    131, //Ё 6
    132, //Ж 7
    133, //З
    134, //И
    135, //Й 10
    'K', //К
    136, //Л
    'M', //М
    'H', //Н
    'O', // 15
    137, //П
    'P', //
    'C', //
    'T', //
    138, //У 20
    139, //Ф
    'X', //
    140, //Ц
    141, //Ч
    142, //Ш 25
    143, //Щ
    144, //Ъ
    145, //Ы
    146, //Ь
    147, //Э 30
    148, //Ю
    149, //Я 32
    //small letters
    'a', // 33
    150, //б
    151, //в 35
    152, //г
    153, //д
    'e',
    154, //ё
    155, //ж 40
    156, //з
    157, //и
    158, //й
    159, //к
    160, //л 45
    161, //м
    162, //н
    'o', //
    163, //п
    'p', //р 50
    'c', //c 51
    164, //т
    'y',
    165, //ф
    'x', // 55
    166, //ц
    167, //ч
    168, //ш
    169, //щ
    170, //ъ 60
    171, //ы
    172, //ь
    173, //э
    174, //ю
    175 //я 65
    };
    size_t mb_strlen(const char* str)
    {
    size_t length = 0;
    uint8_t*ptr = (uint8_t*)str;
    while (*ptr) {
    if ( !(*ptr == 0xD1 || *ptr == 0xD0) ) {
    ++length;
    }
    ++ptr;
    }
    return length;
    }
    
    char* utf8_to_utft_encoding(char*st)
    {
    uint8_t utf_high_byte = 0;
    uint8_t ch, ch_pos = 0, stl = mb_strlen(st);
    
    char*result = (char*)malloc(stl + 1), *pr = result;
    for (int i = 0; i < strlen(st); ++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;
    }
    *pr++ = ch;
    }//for i
    
    *pr = 0;
    return result;
    }
    
    Использовать так
    Код:
    myGLCD.print (utf8_to_utft_encoding("КОЛИСЧЕСТВО ПАУЗ"),CENTER,10);
    Или можно воспользоваться утилиткой Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!
     
    Последнее редактирование: 16 май 2015
    • Поучительно Поучительно x 1
    • Полезно Полезно x 1
  2. Олег

    Олег Участник

    Регистрация:
    18.11.2013
    226
    6
    Утилитка класс!!! Спасибо!
     
    • Оптимистично Оптимистично x 1
  3. Олег

    Олег Участник

    Регистрация:
    18.11.2013
    226
    6
    Ну да у меня так же. Не доработка какая-то. Всё ведь китайское.Главное на разных скетчах одно и то же.
    --- сообщения объединены, 27 май 2015, дата первого сообщения: 27 май 2015 ---
    Ну так можно сразу русскую клавиатуру нарисовать и дело с концом!
     
  4. mishgan

    mishgan Active Member

    Регистрация:
    29.04.2014
    191
    51
    Гиморойное это дело рисовать клавиатуру....
     
  5. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    повторю в 10-й раз, русского языка не будет. На русском есть проэкт Михаила. Выбор в коде есть.
     
  6. Mac

    Mac Участник

    Регистрация:
    12.11.2013
    68
    6
    Спросил на канале где сборка, продублирую и тут свой вопрос - можно для термодатчика использовать резистор 5к1, вместо 4к7?
     
  7. Phantom

    Phantom Active Member

    Регистрация:
    11.05.2014
    252
    49
    Имя:
    Олег
    При активном питании в сети встречал и 10К ставят
     
  8. Mac

    Mac Участник

    Регистрация:
    12.11.2013
    68
    6
    Понял! Тенкс.
     
  9. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    на канале под твоим комментом нету кнопки ответить, поэтому отвечу тут. Поставить то можно, но как это отразится на точности показаний термометра - вопрос.
     
  10. Mac

    Mac Участник

    Регистрация:
    12.11.2013
    68
    6
    Ок, понял!
    Вадим, ты вроде писал, что Options дописал - а скетч этот где-то выкладывал уже?
     
  11. Phantom

    Phantom Active Member

    Регистрация:
    11.05.2014
    252
    49
    Имя:
    Олег
    На точности никак не может отразиться, т.к. датчик цифровой. Может сказаться лишь на стабильности передачи данных. У этого резистора по сути одна функция - подтяжка к +5. 4к7 или 5к1 - разница несущественная
     
    • За За x 1
  12. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    пока ещё не выкладывал, как только он будет готов для скачивания, он появится в этой теме
     
    • За За x 2
  13. dubna

    dubna Участник

    Регистрация:
    12.11.2013
    106
    11
    Vadim Pivovaroff подскажи нужно ли впаивать 14,15,16,17 пины:drinks:
     
  14. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    нет, только 8, 9, 10, 11, 12, 20, 21. У меня припаяна полоска с 8-го до GND, т.к. дополнительный пин минуса не помешает ))) ну пару пинов 20, 21 для часиков.
     
  15. dubna

    dubna Участник

    Регистрация:
    12.11.2013
    106
    11
    :drinks: Спасибо!!!!
     
  16. Олег

    Олег Участник

    Регистрация:
    18.11.2013
    226
    6
    Вадим! Когда будет обещанный скетч?
     
  17. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    Ровно в тот день когда я и обещал его опубликовать :D
     
  18. Сергей Лисун

    Сергей Лисун Новенький

    Регистрация:
    03.03.2015
    2
    0
    В смысле 2.06.2016 :)
     
  19. Vadim Pivovaroff

    Vadim Pivovaroff Active Member

    Регистрация:
    19.03.2014
    156
    60
    откуда эта дата?? Я дату вообще вроде не называл ))))
     
  20. Сергей Лисун

    Сергей Лисун Новенький

    Регистрация:
    03.03.2015
    2
    0
    Так ты 2-го и обещал его выложить, как он будет готов. Ну а раз ровно в тот день, когда обещал ..... :)