В качестве мозгов ESP8266 WEMOS D1 mini. Пока функционала практически никакого. При старте часов создается точка доступа с именем VFDClock и паролем 123456. Нужно подключиться к ней и зайдя на страницу 192.168.4.1 прописать доступ к своей ВайФай сети. После этого часы перезапустятся и подключившись к сети синхронизируются с NTP. Если всё прошло удачно то начинают отображать время на дисплее. Родной русский шрифт откорректировал на свой вкус. С написанием некоторых букв еще не определился окончательно.
Отладка пока в сериал, настройки в скетче, Подключены 4 кнопки, но еще не прописаны. По сути пока заготовка, но уже прикольно )))
Искал информацию по нему и наткнулся на этот форум . Благодаря автору lavr разобрался что к чему и решил сделать себе часики на его прошивке.
Но 9 кнопок управления - это явный перебор. Сел за апгрейд прошивки и получил часы с управлением одной кнопкой.
И та сенсорная и скрыта в корпусе. Этой кнопкой переключаются режимы отображения (текст - полная информация), включается режим коррекции с подсказками на дисплее, осуществляется коррекция RTC как в плюс так и в минус.
Для работы как у lavr_а - устройство фунциклирует. Для полного счастья допилю будильник (уже процесс идёт) - и ХАРЭ.
Всем здравствуйте! А может кто подскажет,как сделать чтобы можно было произвольный текст созданный в текстовом редакторе с sd карты вывести на дисплей в заданное время?
Для этого дисплей обязательно должен поддерживать режим firich.
Создаем функцию загрузки шрифта:
void CustomFontLoad(){
mySerial.write(0x1B); //
mySerial.write(0x25); //
mySerial.write(0x01); // Разрешаем кастомные символы
mySerial.write(0x1B);
mySerial.write(0x26);
mySerial.write(0x01);
mySerial.write(0xB0); // Первый адрес диапазона
mySerial.write(0xB1); // Последний адрес диапазона
mySerial.write(0x05); // Размер символа 5 байт
mySerial.write(0x03); // Д - B0
mySerial.write(0x3E); // \260
mySerial.write(0x42); //
mySerial.write(0x42); //
mySerial.write(0x7F); //
mySerial.write(0x05); // Размер символа 5 байт
mySerial.write(0x77); // Ж - B1
mySerial.write(0x08); // \261
mySerial.write(0x7F); //
mySerial.write(0x08); //
mySerial.write(0x77); //
}
После инициализации порта дисплея вызываем созданную функцию заливки: CustomFontLoad(); И в дальнейшем там где нужна буква Д вместо стандартного кода используем \260 Буква Ж, соответственно, \261
Сами символы рисуются следующим образом. У нас есть знакоместо 5х7, рисуем в клеточках например букву Д
Доброго времени суток, что я делаю не так, Txd подключено к 10 пину, данные передаются но отображается какая то ахинея, переключатели 4 и 5 выключены, остальные включены, вроде как так для русского алфавита, кодировку менять? как? другие коды символов? как их узнать подобрать? пробовал посимвольно, не получилось ничего вывести, залил прошивку вот результат, что то совсем запутался, подскажите куда копать
Haronych, спасибо тебе огромное!!! подпаялся к 11 ноге процессора (на фото ко 2-й ноге микроконтроллера атмел, т.к. она напрямую подключена к 11 проца, но к ней удобней) и аллилуйя, все заработало. Осталось понять как ему передавать управляющие команды и возможно ли это при таком подключении(например очистка экрана, перевод каретки и пр.) в даташники они описаны, как шестнадцатеричные числа, но при попытке их передать, их только на экране отображает
Все, понял, управляющие символы через сериал райт, еще раз спасибо, Haronych,всяческих тебе благ!!! ушел думать как применить по интересней на практике))
Доброго времени суток, друзья! столкнулся с небольшой проблемой, при создании собственных символов, не дает задать пустой столбец, т.е. при таком определении
Ерунда какаято. Это штатная операция отсылки в порт. А если чтоугодно отличное от нуля то символ рисуется но не правильно? Эта конструкция без проблем работает в любой среде. По крайней мере я и ардуино иде, и в платформио собирал прошивку и проблем не было. Да и быть не может по логике...
Нет, если нет пустых столбцов то все хорошо, ардуино иде стандартно, вот код, он сейчас выводит время и температуру и влажность, я рисовал значек градуса на пробу, если он на всю клетку(знакоместо), то все нормально, а вот меньше, чтоб пустой столбец остался не получается, мож с библиотеркапи какими конфликт, код целиком:
Спасибо, тебе огромное!! все поправил скетч как надо, и все заработало, Haronych, куда те задонатить? всю голову сегодня сломал просто, все перепробовал)) короче вот скетч:
Доброго времени суток, всем! Подскажите, как оформлять setup для корректной работы дисплея, выше писали про задержку в несколько секунд при включении? а в каком именно месте она нужна, что на счет команды инициализации дисплея
mySerial.write(0x1B); //инициализация дисплея
mySerial.write(0x40);
до или после задержки она должна идти? нужно ли время на загрузку своих символов?
проблема такая, при отключении питания, после включения, не отображаются пользовательские символы (с родными все в порядке), если нажать на перезагрузку ардуины, все нормализуется, понимаю что проблемы на старте, но не понимаю где..
фото соответственно сразу после включения, и после последующей перезагрузки с кнопки (как и должно быть)
Перепробовал все, разные значения делея, ставил его в разные места сетапа, все или хуже или без изменений: при включении - только цифры (темп, влаж.), после перезагрузки появляются мои символы (большие цифры и градус), при последующих перезагрузках/прошивках ардуинки все норм, но стоит отключить дисплей, все заново - первое включение только цифры, можно конечно и так оставить, и в случает отключения часов нажимать перезагрузку, но не хочется - это костыль(((
сетап и луп на данный момент:
void setup() {
delay(3000);
pinMode(10, OUTPUT);
watch.begin();
bme.begin(0x76);
Serial.begin(9600);
mySerial.begin(19200);
mySerial.write(0x1B); //
mySerial.write(0x40); // инициализация
CustomFontLoad(); //загрузка своего шрифта
mySerial.write(0x0b); //курсор домой
get_temp (); //получаем температуру и влажность
show_time (); //выводим информацию на дисплей
}
void loop() {
if (millis() - counter >= 1000) { //выводим информацию на дисплей раз в секунду
show_time ();
counter += 1000;
}
if (millis() - counter2 >= 5000) { //получаем температуру и влажность раз в 5 секунд
counter2 += 5000;
get_temp();
}
}
У меня при загрузке 5 секунд стоит delay, если меньше то ардуина быстрей начинает работать чем прогрузится дисплей и управляющие символы которые переключают работу дисплея не прогружаются. Vfd правда другой.
Спасибо, бро, за идею!) в общем проблема решена! я психанул и натыкал делеев после каждого действия в сетапе, и , о чудо, это помогло, дальше методом исключения была выяснена рабочая комбинация, в итоге рабочий сетап выглядит так:
void setup() {
delay(3000); //________тут надо подождать
pinMode(10, OUTPUT);
watch.begin();
bme.begin(0x76);
Serial.begin(9600);
mySerial.begin(19200);
mySerial.write(0x1B); //
mySerial.write(0x40); //инициализация
delay(1000); //_________тут надо подождать
CustomFontLoad(); //____загрузка своего шрифта
delay(1000); //_________и тут надо подождать
mySerial.write(0x0b); //курсор домой
get_temp (); //_________получаем температуру и влажность
show_time (); //________выводим информацию на дисплей
}
Матроскин, мужик выручай, у меня такой же дисплей, я пытаюсь так сказать идти по твоим стопам но у меня банально не получается завести этот дисплей от Ардуинки. от ПК с COM все завелось нормально подал питание 9 вольт на разьем и отлино, а с ардуинкой не как не врублюсь че надо сделать. Если банально подать на него питание 12 вольт (через ЛБП) вижу просадку напряжения до 5 вольт, то есть как я понимаю у него в разьеме есть два плюса и 2 минуса значит он должен еще брать доп питание от Ардуины тобиш 5 вольт, просьба сделай фото как у тебя провода подключены от дисплея к Ардуино и как подается питание?
просадки вроде быть не должно, может у тебя ограничение по току на ЛБП стоит? А подключено все просто, на сам дисплей я подаю 12в (минус подпаял к минусу конденсатору основному большому электрлитическому, и плюс на разъем выключателя), к ардуине подключаю к 10 пину напрямую на ногу RX процессора, (Haronych выше хорошо осветил этот вопрос) и земли обязательно соединить надо с ардуиной, вот и все. От поста #116 почитай там все расписано
Смотри, я так же как и ты подпаялся к к МК тобишь к RX его я подключаю к TX на ардуино нано v3 верно?
и по поводу земли у меня родной кабель к этому дислею и из него выходит 2 провода земли и 2 провода +12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?
Да у меня сейчас на нем нанао в3, на ардуине используется SoftwareSerial (а не стандартный хардварный) т.е. какую ногу назначишь, к такой и подключай, у меня 10
SoftwareSerial mySerial(11, 10);
Я не знаю что у тебя за дисплей и распиновка, но на моем в разъеме два контакта на землю и два на питание, они соединены меж собой соответственно, просто продублированы, разъем я уже не использую ибо три провода, смысл..
+12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?
можно и так, но проще припаяй 3 провода к дисплею и подключай соответвенно:
землю всю в кучу (ардуино и ЛБП)
питание +12 в лбп
нога RX проца дисплея на тот пин какаой в SoftwareSerial на ардуине назначишь.
http://www.keil.com/dd/docs/datashts/nuvoton/w78c032.pdf
Доброго времени.
11 нога цепляется на бабуино или esp8266
Благодарю. Буду пробовать.
Вдохновлялся данной темой )
В качестве мозгов ESP8266 WEMOS D1 mini. Пока функционала практически никакого. При старте часов создается точка доступа с именем VFDClock и паролем 123456. Нужно подключиться к ней и зайдя на страницу 192.168.4.1 прописать доступ к своей ВайФай сети. После этого часы перезапустятся и подключившись к сети синхронизируются с NTP. Если всё прошло удачно то начинают отображать время на дисплее. Родной русский шрифт откорректировал на свой вкус. С написанием некоторых букв еще не определился окончательно.
Отладка пока в сериал, настройки в скетче, Подключены 4 кнопки, но еще не прописаны. По сути пока заготовка, но уже прикольно )))
Доброго времени!
Попался в руки тоже такой дисплей.
Искал информацию по нему и наткнулся на этот форум . Благодаря автору lavr разобрался что к чему и решил сделать себе часики на его прошивке.
Но 9 кнопок управления - это явный перебор. Сел за апгрейд прошивки и получил часы с управлением одной кнопкой.
И та сенсорная и скрыта в корпусе. Этой кнопкой переключаются режимы отображения (текст - полная информация), включается режим коррекции с подсказками на дисплее, осуществляется коррекция RTC как в плюс так и в минус.
Для работы как у lavr_а - устройство фунциклирует. Для полного счастья допилю будильник (уже процесс идёт) - и ХАРЭ.
Потом подумаю о корпусе...
Коррекция:
Я тоже слегка допилил прошивку. Сделал регулировку яркости (в том числе авто) и меню.
https://youtu.be/tNLl0HbBPLY
Возможности на видео
Всем здравствуйте! А может кто подскажет,как сделать чтобы можно было произвольный текст созданный в текстовом редакторе с sd карты вывести на дисплей в заданное время?
Ув. Haronych можете объяснить как создавать свои символы?
Для этого дисплей обязательно должен поддерживать режим firich.
Создаем функцию загрузки шрифта:
После инициализации порта дисплея вызываем созданную функцию заливки: CustomFontLoad(); И в дальнейшем там где нужна буква Д вместо стандартного кода используем \260 Буква Ж, соответственно, \261
Сами символы рисуются следующим образом. У нас есть знакоместо 5х7, рисуем в клеточках например букву Д
заполненные ячейки - единицы, пустые - нули. Имеем следующее:
Переводим Bin->HEX
Вот и получилась наша буква. И так для всех символов которые хотим заменить...
Большое спасибо, за столь подробный ответ, опробую в ближайшее время.
Доброго времени суток, что я делаю не так, Txd подключено к 10 пину, данные передаются но отображается какая то ахинея, переключатели 4 и 5 выключены, остальные включены, вроде как так для русского алфавита, кодировку менять? как? другие коды символов? как их узнать подобрать? пробовал посимвольно, не получилось ничего вывести, залил прошивку вот результат, что то совсем запутался, подскажите куда копать
Подключаться нужно не в разъем, а на ногу процессора после преобразователя
Отпишитесь , пожалуйста , как получиться . Желательно с ыото. Полгода уже пытаюсь сделать , но не выходит.
Не понял, можно по подробней?
Подключаться нужно не в разъем, а на ногу процессора после преобразователя
К 13 ноге что ли?
Вы пытаетесь подключиться ТТЛом на COM. Ничего не выйдет.
Ищите даташит на проц и цепляйтесь на ногу RX и всё будет работать
Ищите даташит на проц и цепляйтесь на ногу RX и всё будет работать
/quote]
Спасибо большое за оперативный ответ! буду пробовать, о результатах обязательно отпишусь!
COM работает от ТТЛ. Но если кто то любит извращения...
COM работает от ТТЛ. Но если кто то любит извращения...
Ну да, с 3.3в сложнее, но попробовать можно. Вот только у Матроскина я ЕСП не видел.
Ну да, с 3.3в сложнее, но попробовать можно. Вот только у Матроскина я ЕСП не видел.
Haronych, спасибо тебе огромное!!! подпаялся к 11 ноге процессора (на фото ко 2-й ноге микроконтроллера атмел, т.к. она напрямую подключена к 11 проца, но к ней удобней) и аллилуйя, все заработало. Осталось понять как ему передавать управляющие команды и возможно ли это при таком подключении(например очистка экрана, перевод каретки и пр.) в даташники они описаны, как шестнадцатеричные числа, но при попытке их передать, их только на экране отображает
Для этого дисплей обязательно должен поддерживать режим firich.
Создаем функцию загрузки шрифта:
Все, понял, управляющие символы через сериал райт, еще раз спасибо, Haronych,всяческих тебе благ!!! ушел думать как применить по интересней на практике))
Доброго времени суток, друзья! столкнулся с небольшой проблемой, при создании собственных символов, не дает задать пустой столбец, т.е. при таком определении
Ругается на последнюю строчку
А там точно английский икс, а не русская хы? Других причин почему он не принимает ноль не могу придумать )))
Точно, попробовал из предыдущей строки даже скопировал, то же самое, думал может уже на нуль что то там забито/ зарезервировано?
Хотел большие цифры сделать, что то типа такого,
http://arduino.ru/forum/programmirovanie/bolshie-tsifry-dlya-displeya-lcd1602-2004
и этот момент может помешать
Ерунда какаято. Это штатная операция отсылки в порт. А если чтоугодно отличное от нуля то символ рисуется но не правильно? Эта конструкция без проблем работает в любой среде. По крайней мере я и ардуино иде, и в платформио собирал прошивку и проблем не было. Да и быть не может по логике...
Ага! Специфика дуньки таки! Вот решение: https://forum.arduino.cc/index.php?topic=96037.0
Нет, если нет пустых столбцов то все хорошо, ардуино иде стандартно, вот код, он сейчас выводит время и температуру и влажность, я рисовал значек градуса на пробу, если он на всю клетку(знакоместо), то все нормально, а вот меньше, чтоб пустой столбец остался не получается, мож с библиотеркапи какими конфликт, код целиком:
В софтовый порт не дает вообще почему то ноль отправить, вот этот пример вызывает ту же ошибку
По ссылке то смотрел? Там таже беда у народа )
Я в своей прошивке по просьбам трудящихся тоже добавил поддержку BME280. Отдельным режимом
со значком градуса пока не заморачивался )))
Да, такой вариант Serial.write((byte)0x00); компилируется, но вместо символа пустое место
Кстати а зачем ты в loop`е Сериал инитишь и CustomFontLoad() вызываешь? Это один раз делается в сетапе.
Да, такой вариант Serial.write((byte)0x00); компилируется, но вместо символа пустое место
У меня версия 1.8.12, проблем нет
Спасибо, тебе огромное!! все поправил скетч как надо, и все заработало, Haronych, куда те задонатить? всю голову сегодня сломал просто, все перепробовал)) короче вот скетч:
Вот результат его работы
Доброго времени суток, всем! Подскажите, как оформлять setup для корректной работы дисплея, выше писали про задержку в несколько секунд при включении? а в каком именно месте она нужна, что на счет команды инициализации дисплея
проблема такая, при отключении питания, после включения, не отображаются пользовательские символы (с родными все в порядке), если нажать на перезагрузку ардуины, все нормализуется, понимаю что проблемы на старте, но не понимаю где..
Перепробовал все, разные значения делея, ставил его в разные места сетапа, все или хуже или без изменений: при включении - только цифры (темп, влаж.), после перезагрузки появляются мои символы (большие цифры и градус), при последующих перезагрузках/прошивках ардуинки все норм, но стоит отключить дисплей, все заново - первое включение только цифры, можно конечно и так оставить, и в случает отключения часов нажимать перезагрузку, но не хочется - это костыль(((
сетап и луп на данный момент:
Матроскин, вы опишите членораздельно что у вас значит перезагрузка и что у вас значит "отключить дисплей".
Включение
Подаю питание на всю схему (+12в), ардуино запитано через лм7850 - > на дисплее только цифры
Далее жму ресет на ардуине (не снимая питания, просто получается перезагрузка ардуинки со включенным дисплеем) -> все начинает отображать как надо
Видео
У меня при загрузке 5 секунд стоит delay, если меньше то ардуина быстрей начинает работать чем прогрузится дисплей и управляющие символы которые переключают работу дисплея не прогружаются. Vfd правда другой.
Не, не прокатывает, я даже пробовал ради смеха пол минуты ставить, все то же самое
Тяжелый случай. Без научного тыка никак.( Попробуйте ещё в 52 1-сек задержку втулить.
Спасибо, бро, за идею!) в общем проблема решена! я психанул и натыкал делеев после каждого действия в сетапе, и , о чудо, это помогло, дальше методом исключения была выяснена рабочая комбинация, в итоге рабочий сетап выглядит так:
Продолжаем разработку))
Матроскин, мужик выручай, у меня такой же дисплей, я пытаюсь так сказать идти по твоим стопам но у меня банально не получается завести этот дисплей от Ардуинки. от ПК с COM все завелось нормально подал питание 9 вольт на разьем и отлино, а с ардуинкой не как не врублюсь че надо сделать. Если банально подать на него питание 12 вольт (через ЛБП) вижу просадку напряжения до 5 вольт, то есть как я понимаю у него в разьеме есть два плюса и 2 минуса значит он должен еще брать доп питание от Ардуины тобиш 5 вольт, просьба сделай фото как у тебя провода подключены от дисплея к Ардуино и как подается питание?
просадки вроде быть не должно, может у тебя ограничение по току на ЛБП стоит? А подключено все просто, на сам дисплей я подаю 12в (минус подпаял к минусу конденсатору основному большому электрлитическому, и плюс на разъем выключателя), к ардуине подключаю к 10 пину напрямую на ногу RX процессора, (Haronych выше хорошо осветил этот вопрос) и земли обязательно соединить надо с ардуиной, вот и все. От поста #116 почитай там все расписано
Смотри, я так же как и ты подпаялся к к МК тобишь к RX его я подключаю к TX на ардуино нано v3 верно?
и по поводу земли у меня родной кабель к этому дислею и из него выходит 2 провода земли и 2 провода +12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?
Да у меня сейчас на нем нанао в3, на ардуине используется
SoftwareSerial (а не стандартный хардварный) т.е. какую ногу назначишь, к такой и подключай, у меня 10
Я не знаю что у тебя за дисплей и распиновка, но на моем в разъеме два контакта на землю и два на питание, они соединены меж собой соответственно, просто продублированы, разъем я уже не использую ибо три провода, смысл..
+12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?
можно и так, но проще припаяй 3 провода к дисплею и подключай соответвенно:
землю всю в кучу (ардуино и ЛБП)
питание +12 в лбп
нога RX проца дисплея на тот пин какаой в SoftwareSerial на ардуине назначишь.
Спасибо за столь подробный ответ сегодня попробую
Матроскин спасибо все заработало!