Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Пн май 29, 2023 15:20:14
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 591 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Сегодня пильнул платку ba63, чтоб влезала в бутылку через донышко пиленное снизу прям в торец.. плату отрезал в ширину - вверху по жёлтой полоске шелкографии, а по низу как видно на фотке. В итоге влетело легко и никакие важные дорожки не перерезаются. Платки есп8266 и клок с батарейкой запаиваю на укороченных штырях -зачищая маску на плате индикатора, ba63 хорошо будет показывать только текст из за особенности самой колбы, большие цифры не очень будут смотреться.. по этому и морочиться не стану. https://cloud.mail.ru/public/TTe2/Nb5bcKzUs.
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Вс июн 04, 2023 11:48:24
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 591 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Колбы так себе.. очень большое расстояние между строчками - если делать большие цифры смотрятся плохо.. да и сами платы очень широкие.. обрезать может быть большой проблемой если захочется делать компактный корпус.
... есть идея сделать с модулем есп8266, чтобы можно было отображать на них что угодно и управление было легкое по сети
Хорошая идея я и сделал именно так- на основе кода "простые часы с wifi" о чем писал чуть выше и ссылку давал ..но не доделал до конца - не впихнул все хотелки в код.. работают больше- года развивать код типа времени нет..а скорее просто лень - работает и ладно.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
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) }
Благодарю! Крайне полезная информация. В ближайшее время планирую доделать библиотеку для работы с этим дисплеем, в общий доступ, разумеется, выложу. И подобный нигде и никак не документированный функционал мне крайне полезен! Напишите, как вас в коде библиотеки упомянуть, если вы не против, конечно
Хорошая идея я и сделал именно так- на основе кода "простые часы с wifi" о чем писал чуть выше и ссылку давал
я наверное не совсем точно выразился
я имел в виду не слать в контроллер индикатора данные для его знакогенератора а приделать есп напрямую к ДРАЙВЕРУ индикатора, а контроллер тот древний выкинуть
однако я посмотрел на фотки и загуглил даташит на драйвер
это плохой, негодный драйвер в нем нет собственного генератора и нет экранного буфера озу, только регистры и высоковольтные драйверы анодов
так же в нем нет шины спи, только входы регистров и таких линеек регистров 4 штуки
поэтому есп будет нагружена сильно софтовым бит бангом, хотя при ее скорости даже в 80мгц это наверное не так уж и страшно весь вопрос в асинхронности работы кода управления драйвером и кодом вебсервера
вот даташит на драйвер SED2800FVA
так что лучше тупо слать байты в юарт вчера пришла идея в другой теме - сделать из такого индикатора индикатор уровня аудиосигнала
интересно, насколько он шустрый на 115200 будет, чтобы успевать отрисовывать 40 символов
_________________ тематические ответы только в форуме, в приват не пишите
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Вс июн 04, 2023 16:51:57
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 591 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Под каждый индикатор мысли излагать в большом количестве ну нафиг.. Про ногодрыг, идею отбросил потому что пришлось бы осваивать в объеме ртос, к чему не готов. Да и актуальности не особо чувствую - вполне хватает текстового отображения. наверное проще недостающее мнемоники закинуть в не используемые страницы devicepro, уже делал это успешно в pos labau/poslab правя дампы sm5964.. у меня пока нет параллельного программатора для этого чипа а лить с помощью штатного загрузчика ещё нужно разобраться возможно ли - потому что он может быть запущен только из юзер программы и при этом не факт что такая возможность есть в коде и как попасть на адрес загрузчика и можно ли вопрос открытый.. нужно попробовать разобраться - в этом нет у меня нужных навыков.. Что до скорости отображения линейки - если не все знаки обновлять то вполне справится.. иначе так себе индикатор - тормоза заметны и на меньшей динамике.
Последний раз редактировалось Energizer-A Вс июн 04, 2023 17:23:14, всего редактировалось 1 раз.
Что до скорости отображения линейки - если не все знаки обновлять то вполне справится..
а у тебя он на какой скорости работает? 9600? да и как не все знаки обновлять? а как тогда затирать то, что не должно светиться? для этого же формируют после еще пробелы?
_________________ тематические ответы только в форуме, в приват не пишите
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Вс июн 04, 2023 17:31:08
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 591 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Да 9600. На часах в нынешней стадии хватает. Знаки да- тереть пробелом и писать знак выставляя курсор в нужную позицию Либы которые выкладывал это делают так же как и команды протоколов - разница отсутствует.. просто переносимость кода выше
я думаю мне проще на стороне хоста сформировать массив байт для отправки в порт и потом его сразу загнать главное чтобы хватило скорости в 115200
попробую это сделать на шарпе, там можно таймер софтовый организовать в моих индикаторах есть еще ртс и дтр сигналы, типа можно узнать, когда индикатор готов к новой порции
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) }
Благодарю! Крайне полезная информация. В ближайшее время планирую доделать библиотеку для работы с этим дисплеем, в общий доступ, разумеется, выложу. И подобный нигде и никак не документированный функционал мне крайне полезен! Напишите, как вас в коде библиотеки упомянуть, если вы не против, конечно
Ну что же, библиотеку для дисплея Futaba M202MD10C я доделал. Уже доступна на гитхабе вместе с тестовыми скетчами: https://github.com/SNMetamorph/FutabaVfdM202MD10C А также, в течение пары дней библиотека уже должна быть доступна в ардуиновском менеджере библиотек.
Заголовок сообщения: Re: Ардуино и дисплей покупателя - vfd как подключить/управл
Добавлено: Пн июн 05, 2023 10:09:11
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46 Сообщений: 591 Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения:0
Зачетно вышло.. наверное эта библиотека должна называться по имени протокола или дисплея, а не колбы - общение не с колбой напрямую ведь?
Ну что же, библиотеку для дисплея Futaba M202MD10C я доделал.
а с чем связано, что для печати на русском у тебя в примере символы кодированы? почему нельзя просто написать нормальными буквами? иде это интерпретирует как утф8 по 2 байта?
а нет ли там какого макроса, чтобы при компиляции оно конвертировалось в аскии? или наверное ардуиновская иде даже позволяет написать такой макрос?
_________________ тематические ответы только в форуме, в приват не пишите
Ну что же, библиотеку для дисплея Futaba M202MD10C я доделал.
а с чем связано, что для печати на русском у тебя в примере символы кодированы? почему нельзя просто написать нормальными буквами? иде это интерпретирует как утф8 по 2 байта?
а нет ли там какого макроса, чтобы при компиляции оно конвертировалось в аскии? или наверное ардуиновская иде даже позволяет написать такой макрос?
Потому что у файла кодировка текста UTF-8, а дисплей принимает CP866, поэтому я просто нужную строку вручную закодировал в CP866 и вбил байтами.
А по поводу конвертации текста в нужную кодировку - хорошая идея. Современный С++ в целом позволяет такие вещи делать во время компиляции без особых проблем, то есть это сделать можно вообще без задействования вычислительных возможностей микроконтроллера, всё будет посчитано заранее. В данном случае нам надо конвертировать UTF-8 в CP866.
гимор только в том, что русских таблиц было несколько 866 это дос, а в редакторе может быть 1251 виндовс индикатор имеет только досовскую таблицу и могут вылезти каракули
_________________ тематические ответы только в форуме, в приват не пишите
гимор только в том, что русских таблиц было несколько 866 это дос, а в редакторе может быть 1251 виндовс индикатор имеет только досовскую таблицу и могут вылезти каракули
Вся суть в том, что кодировка UTF-8, является обратно совместимой с ASCII, поэтому ничего даже и не надо конвертировать.
Там перекодировка в CP866 у меня 5 строчек заняла. Ничего сложного. И проблема с буквой Ё/ё решена. Хотя встречал знакогенератор на этих дисплеях, где местами поменяли буквы Ъ и Ь.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения