Подключить Pole Display к ардуино.

mr.kasper_tyt
Offline
Зарегистрирован: 12.03.2018

Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень!  Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами))) 

vitus73
Offline
Зарегистрирован: 30.03.2019

mr.kasper_tyt пишет:

Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень!  Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами))) 

Нет режимов несколько. Цифровой,текстовый,температура(влажность и давление), режим просмотра текста на cd карте и режим отключения вывода текста по расписанию. Что касаемо прошивки, то делалась она под определенный дисплей( в теме выкладывал фото какой). Там с ним свои заморочки, кодировку он только cp866 понимает и долго искал функцию которая кирилицу в  кодировку  cp866 перекодирует. В скетче весь текст который выводится  на кирилице написан,а не \200\201\202. Очень помог с написанием скетча один хороший человек с форума AlexGyver с ником Клаус Опенгеймер, за что ему огромное человеческое спасибо! Я только все собрал в кучу из скетча lavr и примеров разных библиотек, ну и отсебятины не много. 

vitus73
Offline
Зарегистрирован: 30.03.2019

maximilian.75
Offline
Зарегистрирован: 13.06.2019

vitus73 пишет:

...

долго искал функцию которая кирилицу в  кодировку  cp866 перекодирует. В скетче весь текст который выводится  на кирилице написан,а не \200\201\202. Очень помог с написанием скетча один хороший человек с форума AlexGyver с ником Клаус Опенгеймер, за что ему огромное человеческое спасибо! Я только все собрал в кучу из скетча lavr и примеров разных библиотек, ну и отсебятины не много. 

Можно подробнее как эта функция реализована

vitus73
Offline
Зарегистрирован: 30.03.2019

 

 

vitus73
Offline
Зарегистрирован: 30.03.2019

 

Можно подробнее как эта функция реализована

Вспомнить бы.  Проблема была в том что каждая буква кириллицы занимает 2 байта, а латиница 1. Функция перекодирует кодировку UTF-8 в CP866. Сейчас я сохраняю текстовый файл в UTF-8 кодировке, а функция перекодирует в CP866 понятную для моего дисплея.(это для cd карты). В скетче это выглядит так : mySerial.print (RUS("нет WiFi зайдите на     192.168.4.1     ")); Если нужна сама функция могу выложить не жалко.

maximilian.75
Offline
Зарегистрирован: 13.06.2019

vitus73 пишет:

...

В скетче это выглядит так : mySerial.print (RUS("нет WiFi зайдите на     192.168.4.1     ")); Если нужна сама функция могу выложить не жалко.

Для общего понимания, было бы не плохо. Спасибо.

vitus73
Offline
Зарегистрирован: 30.03.2019
//--------------------------------- Функция перекодировки в cp866 --------------------------------------------
 char* RUS(char* str){                                                                                                                      // Определяем функцию которая преобразует код русских символов из кодировки UTF-8 в кодировку CP866
    uint8_t i=0, j=0;                                                                                                                      // Определяем переменные: i - счетчик входящих символов, j - счетчик исходящих символов
    while(str[i]){                                                                                                                         // Проходим по всем символам строки str, пока не встретим символ конца строки (код 0)
        if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) >= 0x90 && uint8_t(str[i+1]) <= 0xBF ){str[j] = (uint8_t) str[i+1]-0x10; i++;}else // Символы «А-Я а-п» (код UTF-8: D090-D0AF D0B0-D0BF) сохраняем в кодировке CP866: код 80-9F A0-AF (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) >= 0x80 && uint8_t(str[i+1]) <= 0x8F ){str[j] = (uint8_t) str[i+1]+0x60; i++;}else // Символы «р-я»     (код UTF-8: D180-D18F)           сохраняем в кодировке CP866: код E0-EF       (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) == 0x81                              ){str[j] = 0xF0;                    i++;}else // Символ «Ё»        (код UTF-8: D081)                сохраняем в кодировке CP866: код F0          (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) == 0x91                              ){str[j] = 0xF1;                    i++;}else // Символ «ё»        (код UTF-8: D191)                сохраняем в кодировке CP866: код F1          (символ занимал 2 байта, а стал занимать 1 байт)
                                                                                              {str[j] = (uint8_t) str[i];}  j++; i++;      // Остальные символы оставляем как есть, без преобразования, но их место в строке могло сдвинуться, если до них были встречены русские символы
    }   while(j<i){str[j]=0; j++;} return str;                                                                                             // Так как место занимаемое символами в строке могло уменьшиться, заполняем оставщиеся байты символами конца строки (код 0)
}

Пользуйтесь.

nastenka999111
Offline
Зарегистрирован: 16.01.2021

Vitus73, очень круто сделали! Вопрос, можно ли вашу прошивку со схемой реализации (подключением) реализовать на дисплеях которые у lavr, Матроскина, и mr.kasper_tyt (фото скидывал на прошлой странице) ? не могли бы поделиться схемой и прошивкой :)

Очень здорово и хотелось бы повторить

петрович33
Offline
Зарегистрирован: 04.11.2016

devICEpro .Доброго время суток , прикольный градусник Прошивкой поделитесь ? 

devICEpro
Offline
Зарегистрирован: 11.11.2020

Я ведь уже выкладывал, никому не интересно было ;(

Провалялось неделю, потом я ссылку удалил.

Петрович, Ваш дисплей поддерживает загрузку пользовательских символов? А то в этом градуснике их почти 70.

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

Для оценки возможностей дисплея хватит. Если получится, выложу ссылку на прошивку градусника. Удачи!

vitus73
Offline
Зарегистрирован: 30.03.2019

Ну весь скетч это в своей основе прошивка lavr переделанная под конкретный vfd. Остальное есть на просторах нета. Вся проблемма была в кодировке,я ее выложил. Сейчас есть мысли реализовать бегущюю строку и парсить погоду с нета. Будет еще один режим. 

vitus73
Offline
Зарегистрирован: 30.03.2019

devICEpro пишет:

Я ведь уже выкладывал, никому не интересно было ;

Градусник очень достойный! И зря думаете что не интересный. Жаль у меня нет такого vfd. 

Temik560
Offline
Зарегистрирован: 12.04.2019

Доброго дня.  To Vitus

Могу скинуть вам исходник на esp8266 с погодой.  скиньте мыло для связи

vitus73
Offline
Зарегистрирован: 30.03.2019

Temik560 пишет:

Доброго дня.  To Vitus

Могу скинуть вам исходник на esp8266 с погодой.  скиньте мыло для связи

Доброго! Ну было бы неплохо. 73vitus собака gmail com.

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

vitus73 пишет:

//--------------------------------- Функция перекодировки в cp866 --------------------------------------------
 char* RUS(char* str){                                                                                                                      // Определяем функцию которая преобразует код русских символов из кодировки UTF-8 в кодировку CP866
    uint8_t i=0, j=0;                                                                                                                      // Определяем переменные: i - счетчик входящих символов, j - счетчик исходящих символов
    while(str[i]){                                                                                                                         // Проходим по всем символам строки str, пока не встретим символ конца строки (код 0)
        if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) >= 0x90 && uint8_t(str[i+1]) <= 0xBF ){str[j] = (uint8_t) str[i+1]-0x10; i++;}else // Символы «А-Я а-п» (код UTF-8: D090-D0AF D0B0-D0BF) сохраняем в кодировке CP866: код 80-9F A0-AF (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) >= 0x80 && uint8_t(str[i+1]) <= 0x8F ){str[j] = (uint8_t) str[i+1]+0x60; i++;}else // Символы «р-я»     (код UTF-8: D180-D18F)           сохраняем в кодировке CP866: код E0-EF       (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) == 0x81                              ){str[j] = 0xF0;                    i++;}else // Символ «Ё»        (код UTF-8: D081)                сохраняем в кодировке CP866: код F0          (символ занимал 2 байта, а стал занимать 1 байт)
        if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) == 0x91                              ){str[j] = 0xF1;                    i++;}else // Символ «ё»        (код UTF-8: D191)                сохраняем в кодировке CP866: код F1          (символ занимал 2 байта, а стал занимать 1 байт)
                                                                                              {str[j] = (uint8_t) str[i];}  j++; i++;      // Остальные символы оставляем как есть, без преобразования, но их место в строке могло сдвинуться, если до них были встречены русские символы
    }   while(j<i){str[j]=0; j++;} return str;                                                                                             // Так как место занимаемое символами в строке могло уменьшиться, заполняем оставщиеся байты символами конца строки (код 0)
}

Пользуйтесь.

А что, в кириллице других символов кроме "А-Я", "а-п", "р-я", "Ё" и "ё" нет?

vitus73
Offline
Зарегистрирован: 30.03.2019

Я какие вам ещё нужны? У меня все отображает.

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

Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".

Да, кстати, хотелось бы подтверждения, что "у меня все отображает".

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

andriano пишет:

Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".

Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :)  IMHO

vitus73
Offline
Зарегистрирован: 30.03.2019

Я повторяю ещё раз,мой дисплей выводит кириллицу только в кодировке 866. Выбирать тут не приходится. Какой текст вам вывести на дисплей?

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

DetSimen пишет:

andriano пишет:

Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".

Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :)  IMHO

А мое мнение: если экономить, всю кириллицу - туда же. А если делать поддержку кириллицы - то как следует. Т.е. кириллица либо есть, либо ее нет, а когда, вроде,  есть, но только часть - это халтура.

Green
Offline
Зарегистрирован: 01.10.2015

Гигантомания.)

// print UTF8 -> CP866
static void xlatPrint(char* src)
{
  while (*src) {
    uint8_t c = *src++;
    if (c == 0xD0) {
      c = *src++;
      if (c >= 0x90 && c <= 0xBF)
        c -= 0x10;
      else if (c == 1)
        c = 0xF0;
    }
    else if (c == 0xD1) {
      c = *src++;
      if (c >= 0x80 && c <= 0x8F)
        c += 0x60;
      else if (c == 0x91)
        c = 0xF1;
    }
    Printer.write(c);
  }
}

 

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

vitus73 пишет:
Какой текст вам вывести на дисплей?

Полный набор кириллических символов.

Temik560
Offline
Зарегистрирован: 12.04.2019

vitus73 пишет:
Temik560 пишет:

Доброго дня.  To Vitus

Могу скинуть вам исходник на esp8266 с погодой.  скиньте мыло для связи

Доброго! Ну было бы неплохо. 73vitus собака gmail com.

Отправлено

петрович33
Offline
Зарегистрирован: 04.11.2016

[quote=devICEpro

Петрович, Ваш дисплей поддерживает загрузку пользовательских символов? А то в этом градуснике их почти 70.

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

[/quote]

Доброго время суток , под градусник у меня лежит дисплей один в один как у Матроскина  

petrovich3377@mail.ru

Green
Offline
Зарегистрирован: 01.10.2015

andriano пишет:

Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".


Иногда "кодировку не выбирают".)

vitus73
Offline
Зарегистрирован: 30.03.2019

andriano пишет:

vitus73 пишет:
Какой текст вам вывести на дисплей?

Полный набор кириллических символов.

Вечером после работы попробую.

vitus73
Offline
Зарегистрирован: 30.03.2019

Temik спасибо,гляну вечером.

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

Green пишет:

andriano пишет:

Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".


Иногда "кодировку не выбирают".)

Нет, ну если это аппаратное, тогда - да, не выбирают. Но недоумение все равно остается.

nastenka999111
Offline
Зарегистрирован: 16.01.2021

Темик, а можно и мне исходник прошивки для esp-шки? "Nastenka999111 собака mail ru"

vitus73
Offline
Зарегистрирован: 30.03.2019

[/quote]Нет, ну если это аппаратное, тогда - да, не выбирают. Но недоумение все равно остается.

[/quote] В чём недоумение то?

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

vitus73 пишет:

Цитата:
Нет, ну если это аппаратное, тогда - да, не выбирают. Но недоумение все равно остается.

В чём недоумение то?
В использовании в новых разработках кодировки, устаревшей более 30 лет назад (что по меркам IT огромный срок).

Temik560
Offline
Зарегистрирован: 12.04.2019

Nastenka

исходник несколько кривой. Создан в платформио. Если витус исправит то подумаем об общем доступе.

 

vitus73
Offline
Зарегистрирован: 30.03.2019

andriano пишет:

vitus73 пишет:
Какой текст вам вывести на дисплей?

Полный набор кириллических символов.

мне хватает этого для моих целей. 

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

А что, в CP866 теперь вместо 223 только 32 символа?

 

PS. "Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.

vitus73
Offline
Зарегистрирован: 30.03.2019

Вот зачем мне в часах 223 символа? Функция под конкретную задачу,если вам мало,то не пользуйтесь. В чем проблема то?

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

Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.

Опять же, кроме моего личного чувства прекрасного, существуют и вполне объективные вещи, например, когда владельцы популярного ресторана теряют свой бизнес из за отсутствия пары символов в раскладке: https://www.politnavigator.net/odessa-fashizma-lajjt-ne-byvaet.html

vitus73
Offline
Зарегистрирован: 30.03.2019

Эта функция и взята с интернета, использовали её в термопринтере. Мне она подошла,может и ещё кому нибудь пригодится. И почему ей нелзя пользоваться? Вас нервирует слово "пользуйтесь" я смотрю, так удалим не вопрос. 

Temik560
Offline
Зарегистрирован: 12.04.2019

andriano пишет:

Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.

Опять же, кроме моего личного чувства прекрасного, существуют и вполне объективные вещи, например, когда владельцы популярного ресторана теряют свой бизнес из за отсутствия пары символов в раскладке: https://www.politnavigator.net/odessa-fashizma-lajjt-ne-byvaet.html

Если кто-то выложил Безплатно и сказал берите то это значит как есть. Не нравится пройдите мимо.

Предъявлять претензии автору как минимум некорректно.

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

vitus73 пишет:

Эта функция и взята с интернета... Мне она подошла,может и ещё кому нибудь пригодится.

Это как раз то, о чем я говорил - вот так и расползается говнокод.

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

Temik560 пишет:

Если кто-то выложил Безплатно и сказал берите то это значит как есть. Не нравится пройдите мимо.

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

Так может, это именно Вам следовало бы "пройти мимо"? 

Green
Offline
Зарегистрирован: 01.10.2015

andriano пишет:
"Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.


Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.

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

Green пишет:

andriano пишет:
"Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.


Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.

Ну да.

Получается примерно так:

1. Универсально.

1.1. Без кириллицы (95 символов латиницы).

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

2. Под конкретную задачу: если нужны только "А", "Ж", "О" и "П", то только эти четыре буквы и кодируем. Но тогда без проекта целиком это и не распространяем.

devICEpro
Offline
Зарегистрирован: 11.11.2020

Господа, здесь форум, а не базар.

devICEpro
Offline
Зарегистрирован: 11.11.2020

Такое кому-нибудь попадалось?

 

Green
Offline
Зарегистрирован: 01.10.2015

Не могу не поделиться. Не моё - мой только софт. Прислал заказчик. 
Картина называется "Привет из Карелии".) Видно, что у человека руки из правильного места.)

nik182
Offline
Зарегистрирован: 04.05.2015

Мишка откуда? Ссылку на СТЛьку можно?

mr.kasper_tyt
Offline
Зарегистрирован: 12.03.2018

Матроскин, а не пробовал сделать часы с русской прошивкой ?? 

Да и вообще, ребята, у кого какие успехи? 

devICEpro
Offline
Зарегистрирован: 11.11.2020

Матроскин, а не пробовал сделать часы с русской прошивкой ?? 

А чё там русифицировать то? Только дни недели и экран установки времени? Зачем???

Да и вообще, ребята, у кого какие успехи? 

Никаких. Только переосмысленная версия градусника появилась

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Согласен, русифицировать там особо нечего (вариант с текстовым отображением времени, типа "без пол пятого четыре" и т.д.  мне не нравится). А больше другим чем то с  этим дисплеем не занимался, пока некогда да и не чем вроде.. Единственное, недавно посетила мысль, когда вставал утром на работу и спросонок ничего в темноте не разглядеть кроме светящегося экрана часов, так вот подумал что было бы не плохо видеть не только температуру внутри (комнатную) но и снаружи, уличную (или с интернета ее тянуть или с внешнего датчика какого..) но пока это только шальная идея, может разовью ее еще, или может кто меня в этом опередит..))