Например TDA7294

Форум РадиоКот • Просмотр темы - дисплей M202MD25C как подключить .
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс авг 10, 2025 15:40:51

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: дисплей M202MD25C как подключить .
СообщениеДобавлено: Чт ноя 26, 2020 18:51:21 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
здравствуйте , есть такое чудо компании FUtaba M202MD25C .Нигде и ничего не могу найти на него.Вроде должен работать по RS232 . По маркировке дисплея , контроллера нет даже упоминаний. Писал в FUtaba а в ответ тишина. Читал что протокол у них как в 1602 HD44780 я с ним знаком хорошо и много чего делал на них , но как и кому посылать команды я пока не разобрался . Прошу помощи!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Чт ноя 26, 2020 19:38:01 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
ну хоть бы фото выложили, пины, деталей на плате дисплее, мож там надпись на микрухе, а не только нашлёпка... а так... ну разве что тут каждый второй с этим дисплеем работал, чё там, подумаешь, копеечная футаба, все сразу с ней после светодиодика :)

мож поможет:
Вложение:
futaba.pdf [721.92 KiB]
Скачиваний: 426


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пт ноя 27, 2020 17:13:51 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Извиняюсь что не прикрепил фото .


Вложения:
WhatsApp Image 2020-11-27 at 21.08.16.jpeg [109.66 KiB]
Скачиваний: 452
WhatsApp Image 2020-11-27 at 21.08.15.jpeg [126.2 KiB]
Скачиваний: 342
WhatsApp Image 2020-11-27 at 21.08.17.jpeg [161.45 KiB]
Скачиваний: 340
WhatsApp Image 2020-11-27 at 21.08.16 (1).jpeg [172.44 KiB]
Скачиваний: 377
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пт ноя 27, 2020 17:49:00 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
Ну так это разработка по заказу https://www.dieboldnixdorf.com/ ,а не чисто футабовский продукт. можно попробовать как здесь: https://habr.com/ru/post/392757/
количество джамперов и пинов разъёма совпадают, но можно и проигорировать - на плате вижу подписи сигналов и контрольные точки. Большего особо и не нужно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пт ноя 27, 2020 20:01:47 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Пробежался мультиметром по разъему боковому 14 пин и скажу что он не имеет контактов с обозначенными пятаками .Если пробовать искать их на плате то можно предположить что CLK это тактирование , SI -данные а что такое CTS lat , BK ,SO какой то странный протокол получается...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пт ноя 27, 2020 20:41:51 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
это внутренние сигналы.
я бы экспериментировал с Rx Tx Clk
а вообще, проглядел бы пути от штатного разъёма, который, оказывается, по центру с металлическим корпусом.
Но думается мне, что так удаленно ничего не получится: обмениваться какими-то догадками это долго.
Напишите в никсдорфф, может они поделятся спецификацией


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Сб ноя 28, 2020 16:45:42 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
С разъема в центре идет RX/TX на микросхему SP232AEN и с ее выходов 9 и 10 на точки на плате около контроллера .Понимаю что дисплей создан для работы по 232 ,но не могу понять в каком формате запихать туда по TX команды...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пт дек 04, 2020 15:32:53 
Друг Кота
Аватар пользователя

Карма: 47
Рейтинг сообщений: 87
Зарегистрирован: Чт апр 29, 2010 01:54:10
Сообщений: 5358
Откуда: Сочи
Рейтинг сообщения: 0
Это обычный дисплей покупателя, магазинное оборудование.
https://kassastore.ru/upload/iblock/663 ... 221af9.bmp
https://docviewer.yandex.ru/view/0/?pag ... J9&lang=ru
Инфу по ним рыть нужно. Но народ что-то на них делает
http://monitor.espec.ws/section9/topic180280.html
https://zipstore.ru/blog/displei-pokupatelya-icd2002/
https://habr.com/ru/post/457352/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Сб авг 27, 2022 01:13:29 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 249
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2526
Откуда: KMV
Рейтинг сообщения: 0
vdv22, имею аналогичный дисплей. Не могли бы вы проверить, есть ли ШИМ сигнал на затворе мофета рядом с трансформатором. У меня после подачи питания 5 В ток потребления 12-13 мА, статичный и нет ШИМ. Индикации тоже нет. Хотя, по идее, должна быть тестовая информация о дисплее


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Пн сен 05, 2022 17:08:00 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 249
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2526
Откуда: KMV
Рейтинг сообщения: 0
Нашел я где выводы питания. Подал 12 В. Дисплей кратковременно засвечивает все сегменты и тухнет. Служебную информацию не выводит. Система команд неизвестна, скорость RS232 тоже.
В общем запустил. Решение было тут на форуме.
viewtopic.php?p=4240386#p4240386
1. Запаял перемычку J3 (Parity OFF)
2. Сигнал с микроконтроллера подал напрямую на 9 ногу микросхемы *232.
3. При инициализации загрузил таблицу с кириллицей 1B 52 35 (или можно попробовать 1B 52 29
Дисплей оказался BA63, но набор комманд мне непонятен. Он схож с коммандами на дисплей LIUST-51. Я такой давно запускал. А перед этим запускал дисплей с коммандами EPSON и там все совсем по-другому. Комманды между собой несовместимы. У EPSON/POS7300 и подобных для инициализации надо послать в порт 1B 40. А для этого дисплея абсолютно это не надо.
И, судя по даташиту, который можно найти в указанной выше теме, дисплей имеет очень куцый набор команд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 02, 2022 22:52:38 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
Приобрел таких немного за дешево, чисто поиграть. Лично мой ведет себя странно.
Про подключение и питание. Здесь кто-то обозначил CN3 на плате:
1. RX платы дисплея
2. пустой (на самом деле TX платы дисплея)
3. + питание
4. - земля
Еще вчера воткнул пятивольтовый блок питания, замкнув тестовую перемычку J6. Дисплей ожил, начал гонять тест. Радости не было предела, ибо нужен только один БП 5 вольт на всё. А вот сегодня этот фокус не прокатил. Странно. Пришлось цеплять 12 вольт.
С платы дисплея 5 вольт на ESP8266 взять не получилось. Схема питания не тянет себя, и еще ESP сверху. :cry:
TX ESP8266 => RX на CN3 работало. Но не долго. Даже получилось применить стандартный Serial со swap() на gpio15. Естественно с перемычкой J3.
А вот потом опять странности. Сначала перестало работать через CN3. Чего же тут странного, если уровни не те. Перекинул(ся) на 9 ногу конвертера 232. Некоторое время на gpio15 работало. Потом перестало. На ноге TX работает.
Ладно, будем как все (постараемся). Берем SoftwareSerial, пробуем со всеми доступными "ногами" ESP. Везде, кроме gpio15, работает. Меняю проц. Те же яйца, вид сбоку. Сюжет!? :shock:
Но человеку дан пытливый ум не только для набивки брюха. :hunger: Читаем РТФМ SoftwareSerial углубленно, делаем выводы, пробуем:
Код:
#include <SoftwareSerial.h>
#define MYPORT_TX D7
#define MYPORT_RX -1
SoftwareSerial myPort;
void setup()
{
  myPort.begin(9600, SWSERIAL_8O1, MYPORT_RX, MYPORT_TX);

Убираем перемычку J3. Работает.

Изображение

Про выбор столбца
Код:
void set_cursor (uint8_t str, uint8_t col) { // установить курсор
// строка , колонка
myPort.write(0x1b);
myPort.write(0x5b);
myPort.write(0x30 + str);
myPort.write(0x3b);
if (col < 10) myPort.write(0x30 + col);
else if (col == 20) {myPort.write(0x32); myPort.write(0x30);}
else {myPort.write(0x31); myPort.write(0x30 + col%10);}
myPort.write(0x48);
}
немного переписал код, иначе такая хрень в виде буквы H появлялась на позициях дальше девятой.

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 16, 2022 09:59:40 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
А вот потом опять странности. Сначала перестало работать через CN3.
Поправка. Надо быть внимательнее, и не забывать про инвертирование сигнала на COM порту.
Собственно по подключению к ESP8266.
Подключился таки к CN3 на плате:
1. RX платы дисплея
2. пустой (на самом деле TX платы дисплея)
3. + питание
4. - земля

Если использовать стандартный Serial, то код должен быть таким:
Код:
void setup()
{
// HardwareSerial::begin(unsigned long baud, SerialConfig config, SerialMode mode, uint8_t tx_pin, bool invert)
  Serial.begin(9600, SERIAL_8O1, SERIAL_TX_ONLY, 1, true);
  Serial.swap();  //Пины переместятся на GPIO15/D8 (TX) и GPIO13/D7 (RX)
  Serial.flush();

Если использовать SoftwareSerial, то код должен быть таким:
Код:
#include <SoftwareSerial.h>
SoftwareSerial myPort;
void setup()
{
  // begin(baud, config, rxPin, txPin, m_invert);
  myPort.begin(9600, SWSERIAL_8O1, MYPORT_RX, MYPORT_TX, true);

Перемычка J3 не нужна.

Про регулировку яркости. Везде пишут про контакт BK. Решил попробовать. отрезал дорожку от 28 ноги процессора, BK подключил к ESP8266, analogWrite(D7, analog_Write);
Спойлер
В общем работает. Но с нюансами. analogWrite в ESP8266 программный. Прилось выставить частоту analogWriteFreq(5000);, иначе получался стробоскоп.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 16, 2022 14:24:39 
Друг Кота
Аватар пользователя

Карма: 47
Рейтинг сообщений: 87
Зарегистрирован: Чт апр 29, 2010 01:54:10
Сообщений: 5358
Откуда: Сочи
Рейтинг сообщения: 0
Нашел статью про часы на этих модулях
https://cxem.net/arduino/arduino250.php ... d693179637
Но не нравится наличие дорогих модулей и датчиков в обвесе.
И ждать их из китая долго. И не присылают иногда вообще.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 16, 2022 14:42:08 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
Нашел статью про часы на этих модулях

Не-а, не на этих.
Но не нравится наличие дорогих модулей и датчиков в обвесе.

Смотря что Вам от устройства требуется. Барометры с влажностью - да, не по детски подорожали. Сразу в 10 раз год назад. Сейчас вроде цена падает. Недавно BME280 чуть дороже 200 рублей брал. От RTC можно отказаться при наличии интернета и ESP.
И ждать их из китая долго. И не присылают иногда вообще.

Раз на раз не приходится. Бывает, что теряется посылка. У меня за последние 10 лет раза три или четыре точно. А насчет "долго"... Займитесь чем нибудь интересным. Корпус например для часов сделайте. Месяц быстро пролетит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 16, 2022 15:39:18 
Друг Кота
Аватар пользователя

Карма: 47
Рейтинг сообщений: 87
Зарегистрирован: Чт апр 29, 2010 01:54:10
Сообщений: 5358
Откуда: Сочи
Рейтинг сообщения: 0
Спасибо конечно за совет клеить корпуса, но у меня более плотный график и есть чем заняться.
Есть у меня кучка модулей похожих, вот думаю что-то на них сделать интересное.
Но нет нормальных схем в сети на них. Всё что есть, всё ардуиновское или глумное по сути.
На счёт разных модулей- так у них у всех протокол по витой паре практически одинаков.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Ср ноя 16, 2022 17:15:14 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
В общем сделал автоматическую регулировку яркости.
Напомню, отрезал дорожку от проца к контакту BK, подключил контакт BK к ESP8266.
В setup вставил analogWriteFreq(5000);, иначе стробоскоп на экране.
И куда нибудь в цЫкл:
Код:
analogWrite(D7, 250 - analogRead(A0)/7);

Спойлер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Вт мар 18, 2025 22:06:08 
Родился

Зарегистрирован: Вт май 31, 2016 20:04:06
Сообщений: 19
Рейтинг сообщения: 0
В общем сделал автоматическую регулировку яркости.
Напомню, отрезал дорожку от проца к контакту BK, подключил контакт BK к ESP8266.
В setup вставил analogWriteFreq(5000);, иначе стробоскоп на экране.
И куда нибудь в цЫкл:
Код:
analogWrite(D7, 250 - analogRead(A0)/7);

Спойлер


Привет. А скетчем для esp8266 поделишься?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Вт мар 18, 2025 22:49:33 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
Привет. А скетчем для esp8266 поделишься?

Что конкретно интересует? Я его, дисплей, довольно глубоко в скетч интегрировал. Могу вкладку конкретно для дисплея выложить. Может какие-нибудь вопросы по управлению интересуют?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Вт мар 18, 2025 22:57:35 
Родился

Зарегистрирован: Вт май 31, 2016 20:04:06
Сообщений: 19
Рейтинг сообщения: 0
Привет. А скетчем для esp8266 поделишься?

Что конкретно интересует? Я его, дисплей, довольно глубоко в скетч интегрировал. Могу вкладку конкретно для дисплея выложить. Может какие-нибудь вопросы по управлению интересуют?

Дисплей попал в руки, решил часы сделать. Так что интересует скетч для управления дисплеем. А если наглеть, то сразу скетч под часы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: дисплей M202MD25C как подключить .
СообщениеДобавлено: Вт мар 18, 2025 23:05:09 
Родился

Зарегистрирован: Ср ноя 02, 2022 21:55:40
Сообщений: 7
Рейтинг сообщения: 0
Дисплей попал в руки, решил часы сделать. Так что интересует скетч для управления дисплеем. А если наглеть, то сразу скетч под часы.

Ну как то так для начала.
Спойлер#ifdef VFDser

void showTime()
{
String outVFD1, outVFD2;
analogWrite(BK_pin, 215 - analogRead(A0)/5); // Яркость

countShT++;

// =============== collectTime(outVFD1);

if (NTPtimeGet || DS3231_present)
{
outVFD1 = FPSTR(day_of_weekVFD[dayOfWeek]);
outVFD1 += addZero(dayOfMonth, 2, " ");
outVFD1 += ".";
outVFD1 += addZero(monthDS, 2, "0");
outVFD1 += ".";
outVFD1 += addZero(yearDS, 2, "0");
outVFD1 += " ";
outVFD1 += addZero(hourDS, 2, "0");
outVFD1 += hither_thither ? ":" : "\376";
outVFD1 += addZero(minuteDS, 2, "0");
outVFD1 += hither_thither ? ":" : "\376";
outVFD1 += addZero(secondDS, 2, "0");
hither_thither = !hither_thither;
}
else
{
outVFD1 = FPSTR(txtVFD[0]); // ВРЕМЯ НЕ ПОЛУЧЕНО
}

//=================
#if defined(Desk_Clock)
//=================

// =============== Первый экран

if (countShT < 7)
{
if (CLIMATE_present)
{
if (Weather_t >= 0) outVFD2 = "+";
outVFD2 += Weather_t;
outVFD2 += F("\370 ");
outVFD2 += Weather_h;
outVFD2 += "%";
}
else
{
outVFD2 = descr_Weather;
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
countShT = 9;
}
}

// =============== Второй экран

#ifdef BME280
else if (countShT > 6 && countShT < 10)
{
if (CLIMATE_present)
{
outVFD2 = F("Давление ");
outVFD2 += Weather_p;
outVFD2 += F("mHg");
}
else
{
outVFD2 = descr_Weather;
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
countShT = 9;
}
}
#else
else if (countShT > 6 && countShT < 10)
{
outVFD2 = F("Давление неизвестно");
countShT = 9;
}
#endif

// =============== Третий экран

else if (countShT > 9 && countShT < 13)
{
#if defined(DallaS)
if (DS18B20_present)
{
outVFD2 = descr_DS18B20;
outVFD2 += " ";
if (DS18B20_t >= 0) outVFD2 += "+";
outVFD2 += DS18B20_t;
outVFD2 += F("\370");
}
else
{
outVFD2 = descr_DS18B20;
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
countShT = 12;
}
#else
#endif
}

// =============== Четвертый экран

else if (countShT > 12 && countShT < 15)
{
if (WiFi.status() == WL_CONNECTED)
{
outVFD2 = WiFi.SSID();
outVFD2 += " ";
outVFD2 += WiFi.RSSI();
outVFD2 += F(" dbm");
}
else
{
outVFD2 = F("Wi-Fi");
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
countShT = 0;
}
if (countShT == 14) countShT = 0;
}


//=================
#elif defined(Weather_St)
//=================

// =============== Первый экран

if (countShT < 7)
{
#if defined(DallaS)
if (DS18B20_present)
{
outVFD1 = descr_DS18B20;
String DS18B20_tS;
if (DS18B20_t >= 0) DS18B20_tS = "+";
DS18B20_tS += DS18B20_t;
uint8_t i = 0;
uint8_t ii = DS18B20_tS.length() < 6 ? 8 : 9; // количество знакомест в температуре
uint8_t iii = outVFD1.length(); // количество байтов в названии
while (iii--) {if (outVFD1[iii]==0xd1 || outVFD1[iii]==0xd0) i++;} // считаем количество русских букв
iii = NUMofCOL - outVFD1.length() + i - ii; // сколько нужно пустых знакомест в начале?
while (iii--) outVFD1 += " "; // набиваем...
outVFD1 += DS18B20_tS;
outVFD1 += F("\370");
iii = NUMofCOL - outVFD1.length() + i - 1; // сколько нужно пустых знакомест в конце?
while (iii--) outVFD1 += " "; // добиваем...
if (countShT == 1 || countShT == 4) outVFD1 += "/";
else if (countShT == 2 || countShT == 5) outVFD1 += "-";
else if (countShT == 3 || countShT == 6) outVFD1 += "\\";
}
#endif
if (CLIMATE_present)
{
outVFD2 = descr_Weather;
String Weather_tS;
if (Weather_t >= 0) Weather_tS = "+";
Weather_tS += Weather_t;
uint8_t i = 0;
uint8_t ii = Weather_tS.length() < 6 ? 8 : 9; // количество знакомест в температуре
uint8_t iii = outVFD2.length(); // количество байтов в названии
while (iii--) {if (outVFD2[iii]==0xd1 || outVFD2[iii]==0xd0) i++;} // считаем количество русских букв
iii = NUMofCOL - outVFD2.length() + i - ii; // сколько нужно пустых знакомест между?
while (iii--) outVFD2 += " "; // набиваем...
outVFD2 += Weather_tS;
outVFD2 += F("\370");
iii = NUMofCOL - outVFD2.length() + i; // сколько нужно пустых знакомест в конце?
while (iii--) outVFD2 += " "; // добиваем...
}
else
{
outVFD2 = descr_Weather;
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
}
}

// =============== Второй экран

else if (countShT > 6 && countShT < 10)
{
if (CLIMATE_present)
{
outVFD2 = Weather_h;
outVFD2 += "%";
#ifdef BME280
outVFD2 += F(" ");
outVFD2 += Weather_p;
outVFD2 += F(" mHg");
#endif
}
else
{
outVFD2 = descr_Weather;
outVFD2 += FPSTR(txtVFD[2]); // НЕ ПОДКЛЮЧЕН
}
if (countShT == 9) countShT = 0;
}

#endif

print_on_VFDa(1, outVFD1, " ");
print_on_VFDa(2, outVFD2, " ");
}

void Set_country_code(uint8_t country_code) // ESCRn (1B 52 35)
{
Serial.print(F("\x1BR") + String(country_code)); delay (100);
// выбор кодовой страницы рус - но печатать из под ардуино сможет только после обработки кодером из cp1251 в cp866
}

void CLS() // очистка экрана ESC[2J (1B 5B 32 4A)
{
Serial.print(F("\x1B[2J")); delay (100);
}

void set_cursor (uint8_t _row, uint8_t _column) // установить курсор ESC[row;columnH (1B 5B row 3B column 48)
{
Serial.print(F("\x1B[") + String(_row) + ";" + String(_column) + "H");
}

void print_on_VFD(uint8_t _row, uint8_t _column, const String& txtVFD) // Строка, колонка, текст
{
set_cursor(_row, _column); Serial.print(txtVFD);
}

void print_on_VFDa(uint8_t _row, const String& txtVFD, String what) // Строка, текст, чем забиваем пустоту
{
String utf8_cp866 = UTF8_CP866(txtVFD);
int iii = NUMofCOL - utf8_cp866.length();
if (iii > 0)
{
int left = (iii) / 2;
while (left--) utf8_cp866 = what + utf8_cp866;
while (utf8_cp866.length() < NUMofCOL) utf8_cp866 = utf8_cp866 + what;
}
else
{
utf8_cp866 = utf8_cp866.substring(0, NUMofCOL); // берем с "нулевого" до размера экрана
}
set_cursor(_row, 1); Serial.print(utf8_cp866);
}

void write_on_VFD(uint8_t _row, uint8_t _column, int16_t symbolVFD) // Строка, колонка, текст
{
set_cursor(_row, _column); Serial.write(symbolVFD);
}

String UTF8_CP866(const String& txtVFD)
{
char out[NUMofCOL]; // создали массив символов для вывода
int j=-1;

for (int i=0; i < txtVFD.length() + 1; i++) //-- Пробегаемся по всем символам, учитываем отличия между таблицами
{
j++;
if (txtVFD[i]==0xd0) // коды русских букв все двухбайтовые, первым из которых является 0xd0 (208) или 0xd1 (209)
{
i++; // следующий конвертим
if (txtVFD[i] >= 0x90 && txtVFD[i] <= 0xBF) out[j] = txtVFD[i] - 0x10;
else if(txtVFD[i] == 0x81) out[j] = 0xf0; // буква Ё
}
else if (txtVFD[i]==0xd1)
{
i++; // следующий конвертим
if (txtVFD[i] >= 0x80 && txtVFD[i] <= 0x8F) out[j] = txtVFD[i] + 0x60;
else if(txtVFD[i] == 0x91) out[j] = 0xf1; // буква ё
}
else out[j] = txtVFD[i];
}
return out;
}

void init_VFDser()
{
Serial.begin(9600, SERIAL_8O1, SERIAL_TX_ONLY, 1, true);
Serial.swap(); //Пины переместятся на GPIO15/D8 (TX) и GPIO13/D7 (RX)
Serial.flush();
analogWriteFreq(5000);
analogWrite(BK_pin, 250 - analogRead(A0)/7); // Яркость
CLS();
Set_country_code(0x35);
print_on_VFDa(1, F("Загружается версия"), " ");
print_on_VFDa(2, nSketch, " ");
delay(1000);
}
#endif


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y