Заголовок сообщения: Ардуино и дисплей покупателя - 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 нет. Итак, градус побежден, осталось с загружаемыми символами разобраться и там до пакмана недалеко.
Я для своего дисплея даташита не нашёл, а в даташите на аналог не все управляющие коды были описаны. Так что пришлось выпаивать контроллер, городить адаптер на проводках, считывать прошивку (благо контроллер оказался незалоченным), и дизассемблировать её. Там оказалась куча недокументированных управляющих кодов, двенадцать переключаемых раскладок-алфавитов и целых девять пользовательских символов.
_________________ "... я вежливо сообщил рядовому Петрову, что расплавленный припой начал капать мне за шиворот. И отпустил стремянку..." (из объяснительной)
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения