Заголовок сообщения: Ардуино и дисплей покупателя - vfd как подключить/управлять
Добавлено: Чт июн 02, 2022 21:44:23
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:4
Тема создана для обмена опытом .. Сюда складываем скетчи и документацию.. Для начала Wincor nixdorf VA63 сам индикатор futaba 2*20 vfd за совсем копейки 200₽ на Авито Москва с rs232 от жадности пять штук.. их там больше сотни со слов продавца - налетай покупай живопись!! ( c usb интерфейсом плата совсем другая кому нужно в здешней барахолке тоже есть ) чтобы такой запустить = снял мелкосхему sp232 нафиг ( наверное можно и оставить) в площадку на 9 ногу впаял провод от ардуины от TX.. но этого оказалось не достаточно - потребовалось поставить центральную из 5 возможных перемычку !! JP3 дабы установить принудительно Parity off ВОТ ВЕДЬ ГАДЫ и все заработало в лучшем виде ps -- если пинцетом замкнуть кранную левую со стороны индикатора если смотреть, а вообще это jp5 "перемычку" и подать питание - запускается внутренний тест самого индикатора проверки сегментов
Спойлер// Скетч тестовый выводит на VFD-дисплей BA63 ля FUTABA хело ворд,и тест ангельскаго шрифта про лису и собаку в разных строчках. // буковки отправляем как строчками так и цифирьками в хексе ASCII
#include <SoftwareSerial.h>
SoftwareSerial vfd(255,2,0); // This is required, to start an instance of an vfd (TX at pin D2) // можно поменять на любой кроме некоторых смотря какя плата. void setup() { vfd.begin(9600); // Start the vfd at 9600 baud
vfd.write(0x1b); // выбор кодовой страницы рус - но печатать из под ардуино vfd.write(0x52); // сможет только после обработки кодером из cp1251 в cp866 vfd.write(0x35); delay (100); // подождем вдруг ему нужно время осознать }
void set_cursor (int str, int col) { // установить курсор // строка , колонка str = str + 0x30; col = col + 0x30; vfd.write(0x1b); vfd.write(0x5b); vfd.write(str); vfd.write(0x3b); vfd.write(col); vfd.write(0x48); }
void loop() {
CLS (); set_cursor (1,4); vfd.print("HELLO "); // можно печатать строкой vfd.write(0x20); // space // можно передавать букавки кодами символов vfd.write(0x57); // W vfd.write(0x4F); // O vfd.write(0x52); // R vfd.write(0x4c); // L vfd.write(0x44); // D vfd.write(0x20); // space delay (5000); // подождеми посмотрим set_cursor (2,0); vfd.print("the quick brown fox"); delay (5000); // подождеми посмотрим set_cursor (2,0); vfd.print("jumps over the lazy"); delay (5000); // подождеми посмотрим set_cursor (2,0); vfd.print(" dog "); delay (5000); // подождеми посмотрим } К сожалению набор команд этого дисплея очень бедный - в лёгкую нет возможности прописать свои символы в память..вот это по настоящему трабла.. очень хочется.. Так же нет сдвига автоматического символов как у других дисплеев бывает - по этому к тереть и ставить курсор заново. Дока пдф гуглится моментом по этому аттачить нет смысла.. Про перемычки упоминание их функций удалось обнаружить в доке другого 4х строчного индикатора ,этой конторы va66
На гитхаюе нашлась либа с классами https://github.com/MrTransistorsChannel/NixdorfVFD Возможно она была сделана для usb версии .. в функции софтваре сериал включена инверсия.. для 232 версии этот параметр другой - дефолтный - нет инверсии. Так что пора пилить часики
Мой вариант подключения: перемычку J3 надо замкнуть. Скорость по умолчанию будет 9600.
Микрухи выпаивать не надо !!! ), подключаемся к CN3 (это нераспаянные пины около центрального разъема 1. RX платы дисплея = TX от ардуино (в моем случае от D6) 2. - пустой 3 +12В 4. 0В - земля Строка инициализации будет = SoftwareSerial vfd(255, 6, 1); //это для выхода с пина D6.
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Сб июн 04, 2022 11:34:30
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Предлагаю всем желающим в теме оставлять свои библиотеки для других дисплеев в формате который был предложен кодером с гитхаба в первом посте В последствии это должно дать универсальность вставки кода в другие проекты, в том числе с индикаторами и стандартным для ардуино - текстовыми LCD.
И вот в аттаче та же самая либа и хеловорд, но запиленная для GIGATECH DSP850C (он же Promag DSP 851c) пойдет для всей серии DSP800 и все на той же софтваре сериал. чуть позже допилю ее по шрифту - скорее всего будет кривая Ё и ё // потом поправлю..
VFD дисплей Futaba M202MD10C. Часы на ESP8266 в среде Arduino. Библиотекой не оформлял (пока лень разбираться)) Скетч прилагаю. В нём надо вписать имя вашей сети и её пароль.
// Define NTP properties #define NTP_OFFSET 60 * 60 // In seconds #define NTP_INTERVAL 60 * 1000 // In miliseconds #define NTP_ADDRESS "ca.pool.ntp.org" // change this to whatever pool is closest (see ntp.org)
// Set up the NTP UDP client WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
// набиваем пользовательские символы: for(int j=0; j<9; j++) { // девять пользовательских символов Serial.write(03); Serial.write(userDefinedSymbol[j]); for(int i=0; i<8; i++) // 8 байт на символ Serial.write(sprite[j][i]);}
// Connect to wifi Serial.println(""); Serial.print(RUS("Подключаюсь к WiFi")); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print(RUS("Подключено к WiFi at ")); Serial.print(WiFi.localIP()); delay(1000); Serial.println(""); Serial.println(""); }
void loop() { if (WiFi.status() == WL_CONNECTED) //Check WiFi connection status { date = ""; // clear the variables t = "";
// update the NTP client and get the UNIX UTC timestamp timeClient.update(); unsigned long epochTime = timeClient.getEpochTime();
// convert received time stamp to time_t object time_t local, utc; utc = epochTime;
// Then convert the UTC UNIX timestamp to local time TimeChangeRule MSK = {"MSK", Second, Sun, Mar, 2, +120}; //UTC - 5 hours - change this as needed // TimeChangeRule usEST = {"EST", First, Sun, Nov, 2, -360}; //UTC - 6 hours - change this as needed Timezone tMSK(MSK, MSK); local = tMSK.toLocal(utc);
// now format the date variables into string with proper names for month, day etc date += day(local); date += " "; date += months[month(local)-1]; date += " "; date += year(local);
// сформировать выровненную по центру строку даты char dateChar[date.length()+1]; date.toCharArray(dateChar, sizeof(dateChar)); String dateString = centerJustify(RUS(dateChar));
// format the time if(hour(local) < 10) // add a space if hour is under 10 t += " "; t += hour(local); t += ":"; if(minute(local) < 10) // add a zero if minute is under 10 t += "0"; t += minute(local);
// сформировать выровненную по центру строку времени и дня недели String dayNow = days[weekday(local)-1]; char dayChar[23]; dayNow.toCharArray(dayChar, 23); String timeDayChar866 = t + ' ' + RUS(dayChar); String timeDayString = centerJustify(timeDayChar866);
// Display the date and time goLeftUpCorner(); Serial.println(timeDayString); Serial.print(dateString);
delay (5000);
// анимация Pacman
for(int i=38; i>19; i--) { // нижняя строка for(int k=0; k<8; k++) printSprite(fromR2L[k], i, kadr); backspace(); }
for(int i=0; i<20; i++) { // верхняя строка for(int k=0; k<8; k++) printSprite(fromL2R[k], i, kadr); backspace(); }
printSprite(0x1E, 19, 1000); backspace(); goLeftUpCorner(); } else // attempt to connect to wifi again if disconnected { WiFi.begin(ssid, password); delay(1000); }
// delay(10000); //Send a request to update every 10 sec (= 10,000 ms) }
_________________ "... я вежливо сообщил рядовому Петрову, что расплавленный припой начал капать мне за шиворот. И отпустил стремянку..." (из объяснительной)
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Пн июн 06, 2022 18:37:57
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:3
Как и обещал выкладываю тест-пример и библиотеку рядом с ним для GIGATECH DSP850 где поправил шрифт в части подмены "Ё ё" на обычные "Е е" в виду отсутствия их в таблице знакогенератора в DSP850.
PS для полного счастья стоит разобраться как залить своих кастомных символов в таблицу знакогенератора этого дисплея.. над этой задачей попробую повозиться - если получится буду счастлив по настоящему, тогда и часики красивые попробую запилить..
Energizer-A, в дисплее Wincor nixdorf VA63 не удалось еще случайно найти управление яркостью? Я ранее в безымянном китайце нашел такое, собрав воедино несколько бумаг по нему. Там команды управления EPSON.
вот функция. но на футабе не работает.
void brightnes(byte br){ // яркость установить 1=25%... 4=100% и записать в ячейку EEPROM if (br<1 || br>4) br = 4; if (EEPROM[0] != br) EEPROM[0] = br; // перезапись только, если отличается softportVFD.write(0x1F); softportVFD.write(0x58); softportVFD.write(br); }
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Вт июн 07, 2022 07:09:22
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
OlegRu, я пока ковыряю dsp850c и там к сожалению этой функции тоже нет..там вообще только один протокол dsp800 и тот обрезан совсем.. по этому много чего нужного нет.. и кастомных символов простым способом тоже не получить по простому.. Кстати видимо тебе спасибо за функцию вывода нуля перед цифрой до 10 -- c2d вчерась запилил часики тестовые тупорылые для обкатки - пригодилась
_________________ "... я вежливо сообщил рядовому Петрову, что расплавленный припой начал капать мне за шиворот. И отпустил стремянку..." (из объяснительной)
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Ср июн 08, 2022 09:00:41
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
abomin писал(а):
Рекомендую ознакомиться
Спасибо -весьма познавательно .. Была идея похожая но чуть другая - сделать транслятор i2c в стандартные команды дисплеея покупателя-, что бы имитировала обычный дисплей типа 16*2 - для проектов где код не публикуется или не читаем..
...сделать транслятор i2c в стандартные команды дисплеея покупателя...
Хорошая идея! И вполне реализуемая, думаю. Встречал в офисных телефонах или факсах ЖК дисплеи с последовательным интерфейсом, а по командам совместимые с HD44780. Даже библиотеки под них есть.
_________________ "... я вежливо сообщил рядовому Петрову, что расплавленный припой начал капать мне за шиворот. И отпустил стремянку..." (из объяснительной)
А какой вариант применения такой конструкции? Включиться с VFD вместо дисплея 1602 или 2002 для случая когда исходная прошивка устройства не доступна и нет возможности заменить библиотеку?Сам по себе без платки расширения (регистр с i2c) дисплей lcd1602 имeeт управление по параллельному порту. Это управление реализуется и просто на ардуинке, если ноги ничем другим не заняты, а это 80% всех устройств.
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Ср июн 08, 2022 17:38:17
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 129
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 617 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
OlegRu писал(а):
прошивка устройства не доступна и нет возможности заменить библиотеку?
Почти так и есть ..где автор не выкладывает исходник в частности. .. для обработки параллельного интерфейса тоже конечно можно.. но чаще мне встречается интересные девайсы которые прям просят яркости на i2с . Дисплеи эти интересны не только из- за часов - в автоматике, в управлении станков и прочего пром оборудования, телеметрии например котельной -- таким дисплеям прям самое место- яркие и крупные и стоимость бросовая.. где код открыт и он на ардуино сях библиотеки сабжевые ложатся прям с пол оборота, а вот где только хекс -путь писать самому с нуля для более менее замысловатого девайса - так себе вариантец..
Ув. Коты, может кто-нибудь подсказать, как на дисплее Wincor BA63 RS232 реализовать управление яркостью? Какая команда для этого нужна? #define DIM не прокатывает
_________________ Я за грустным, пыльным столом Я синий как сейф в углу От нечеткого света ламп Под названием странным неон...
0xF8 или 248 Только вот странно, функцией write он выводится, а через printf нет. Итак, градус побежден, осталось с загружаемыми символами разобраться и там до пакмана недалеко.
Я для своего дисплея даташита не нашёл, а в даташите на аналог не все управляющие коды были описаны. Так что пришлось выпаивать контроллер, городить адаптер на проводках, считывать прошивку (благо контроллер оказался незалоченным), и дизассемблировать её. Там оказалась куча недокументированных управляющих кодов, двенадцать переключаемых раскладок-алфавитов и целых девять пользовательских символов.
_________________ "... я вежливо сообщил рядовому Петрову, что расплавленный припой начал капать мне за шиворот. И отпустил стремянку..." (из объяснительной)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения