Подключить Pole Display к ардуино.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
Temik560
Offline
Зарегистрирован: 12.04.2019

Доброго времени.

11 нога цепляется на бабуино или esp8266 

parik07
Offline
Зарегистрирован: 13.07.2019

Благодарю. Буду пробовать.

Haronych
Offline
Зарегистрирован: 31.01.2020

Вдохновлялся данной темой )

В качестве мозгов ESP8266 WEMOS D1 mini. Пока функционала практически никакого. При старте часов создается точка доступа с именем VFDClock и паролем 123456. Нужно подключиться к ней и зайдя на страницу 192.168.4.1 прописать доступ к своей ВайФай сети. После этого часы перезапустятся и подключившись к сети синхронизируются с NTP. Если всё прошло удачно то начинают отображать время на дисплее. Родной русский шрифт откорректировал на свой вкус. С написанием некоторых букв еще не определился окончательно.
Отладка пока в сериал, настройки в скетче, Подключены 4 кнопки, но еще не прописаны. По сути пока заготовка, но уже прикольно )))

kackaqep
Offline
Зарегистрирован: 14.02.2020

Доброго времени!

Попался в руки тоже такой дисплей.

Искал информацию по нему и наткнулся на этот форум . Благодаря автору lavr разобрался что к чему и решил сделать себе часики на его прошивке.

Но 9 кнопок управления - это явный перебор. Сел за апгрейд прошивки и получил часы с управлением одной кнопкой.

И та сенсорная и скрыта в корпусе. Этой кнопкой переключаются режимы отображения (текст - полная информация), включается режим коррекции с подсказками на дисплее, осуществляется коррекция RTC как в плюс так и в минус.

Для работы как у lavr_а - устройство фунциклирует. Для полного счастья допилю будильник (уже процесс идёт)  - и ХАРЭ.

Потом подумаю о корпусе...

Коррекция:

Haronych
Offline
Зарегистрирован: 31.01.2020

Я тоже слегка допилил прошивку. Сделал регулировку яркости (в том числе авто) и меню.

https://youtu.be/tNLl0HbBPLY

Возможности на видео

vitus73
Offline
Зарегистрирован: 30.03.2019

Всем здравствуйте! А может кто подскажет,как сделать чтобы можно было произвольный текст созданный в текстовом редакторе с sd карты вывести на дисплей в заданное время?

axix1313
Offline
Зарегистрирован: 17.02.2020

Ув. Haronych можете объяснить как создавать свои символы?

Haronych
Offline
Зарегистрирован: 31.01.2020

Для этого дисплей обязательно должен поддерживать режим 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, рисуем в клеточках например букву Д

заполненные ячейки - единицы, пустые - нули. Имеем следующее:

0000011
0111110
1000010
1000010
1111111

Переводим Bin->HEX

03
3E
42
42
7F

Вот и получилась наша буква. И так для всех символов которые хотим заменить...

axix1313
Offline
Зарегистрирован: 17.02.2020

Большое спасибо, за столь подробный ответ, опробую в ближайшее время.

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Доброго времени суток, что я делаю не так,  Txd подключено к 10 пину, данные передаются но отображается какая то ахинея, переключатели 4 и 5 выключены, остальные включены, вроде как так для русского алфавита,  кодировку менять? как? другие коды символов? как их узнать подобрать? пробовал посимвольно, не получилось ничего вывести, залил прошивку вот результат, что то совсем запутался, подскажите куда копать

 

Haronych
Offline
Зарегистрирован: 31.01.2020

Amatroskin пишет:
подскажите куда копать

Подключаться нужно не в разъем, а на ногу процессора после преобразователя

parik07
Offline
Зарегистрирован: 13.07.2019

Отпишитесь , пожалуйста , как получиться . Желательно с ыото. Полгода уже пытаюсь сделать , но не выходит.

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Не понял, можно по подробней?

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Haronych пишет:

Amatroskin пишет:
подскажите куда копать

Подключаться нужно не в разъем, а на ногу процессора после преобразователя

 

К 13 ноге что ли?

Haronych
Offline
Зарегистрирован: 31.01.2020

Amatroskin пишет:
Не понял, можно по подробней?

Вы пытаетесь подключиться ТТЛом на COM. Ничего не выйдет.

Ищите даташит на проц и цепляйтесь на ногу RX и всё будет работать

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Haronych]</p> <p>[quote=Amatroskin пишет:
Не понял, можно по подробней?

 

Ищите даташит на проц и цепляйтесь на ногу RX и всё будет работать

 

/quote]

 

Спасибо большое за оперативный ответ! буду пробовать, о результатах обязательно отпишусь!

Green
Offline
Зарегистрирован: 01.10.2015

COM работает от ТТЛ. Но если кто то любит извращения...

Haronych
Offline
Зарегистрирован: 31.01.2020

Green пишет:

COM работает от ТТЛ. Но если кто то любит извращения...

Буду благодарен за инфу как ЕСПшку например подключить в ком порт дисплея без преобразователя уровней чтобы оно заработало

Green
Offline
Зарегистрирован: 01.10.2015

Ну да, с 3.3в сложнее, но попробовать можно. Вот только у Матроскина я ЕСП не видел.

Haronych
Offline
Зарегистрирован: 31.01.2020

Green пишет:

Ну да, с 3.3в сложнее, но попробовать можно. Вот только у Матроскина я ЕСП не видел.

Блин, дуинка на фото. Там пятивольтовая логика. Тогда да, слегка не так всё. Значит чтото с настройками либо порта, либо дисплея

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Haronych, спасибо тебе огромное!!! подпаялся к 11 ноге процессора (на фото ко 2-й ноге микроконтроллера атмел, т.к. она напрямую подключена к 11 проца, но к ней удобней) и аллилуйя, все заработало. Осталось понять как ему передавать управляющие команды и возможно ли это при таком подключении(например очистка экрана, перевод каретки и пр.) в даташники они описаны, как шестнадцатеричные числа, но при попытке их передать, их только на экране отображает

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Haronych пишет:

Для этого дисплей обязательно должен поддерживать режим firich.
Создаем функцию загрузки шрифта:
 

void CustomFontLoad(){
  mySerial.write(0x1B); //
  mySerial.write(0x25); //
 ...

 

Все, понял, управляющие символы через сериал райт, еще раз спасибо, Haronych,всяческих тебе благ!!! ушел думать как применить по интересней на практике))

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Доброго времени суток, друзья! столкнулся с небольшой проблемой, при создании собственных символов, не дает задать пустой столбец, т.е. при таком определении

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x30); // Д - B0
  mySerial.write(0x48); // \260
  mySerial.write(0x48); //
  mySerial.write(0x48); //
  mySerial.write(0x00); //

Ругается на последнюю строчку

exit status 1
call of overloaded 'write(int)' is ambiguous
 
Может кто сталкивался, знает как решить/обойти этот момент?

 

 

Haronych
Offline
Зарегистрирован: 31.01.2020

А там точно английский икс, а не русская хы? Других причин почему он не принимает ноль не могу придумать )))

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Точно, попробовал из предыдущей строки даже скопировал, то же самое, думал может уже на нуль что то там забито/ зарезервировано?

 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Хотел большие цифры сделать, что то типа такого,

http://arduino.ru/forum/programmirovanie/bolshie-tsifry-dlya-displeya-lcd1602-2004

и этот момент может помешать
 

Haronych
Offline
Зарегистрирован: 31.01.2020

Ерунда какаято. Это штатная операция отсылки в порт. А если чтоугодно отличное от нуля то символ рисуется но не правильно? Эта конструкция без проблем работает в любой среде. По крайней мере я и ардуино иде, и в платформио собирал прошивку и проблем не было. Да и быть не может по логике...

Haronych
Offline
Зарегистрирован: 31.01.2020

Ага! Специфика дуньки таки! Вот решение: https://forum.arduino.cc/index.php?topic=96037.0

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Нет, если нет пустых столбцов то все хорошо, ардуино иде стандартно, вот код, он сейчас выводит время и температуру и влажность, я рисовал значек градуса на пробу, если он на всю клетку(знакоместо), то все нормально, а вот меньше, чтоб пустой столбец остался не получается, мож с библиотеркапи какими конфликт, код целиком:


#include <SoftwareSerial.h>
#include <Wire.h>                                         // Подключаем библиотеку Wire                     
#include <Adafruit_BME280.h>                              // Подключаем библиотеку Adafruit_BME280 
#include <iarduino_RTC.h>
#include <LiquidCrystal_I2C.h>
#define SEALEVELPRESSURE_HPA (1010.7)                    // Задаем высоту 

Adafruit_BME280 bme;
iarduino_RTC watch(RTC_DS3231);
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  delay(3000);
  pinMode (10, OUTPUT);
  SoftwareSerial mySerial(11, 10);
  mySerial.begin(9600);
  mySerial.write(0x0C);
  lcd.init();
  bme.begin(0x76);
}

void loop() {
  SoftwareSerial mySerial(11, 10);
  mySerial.begin(9600);
  watch.gettime();
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x07);
  mySerial.write(0x01);
  mySerial.print(watch.gettime("H:i:s"));
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x0F);
  mySerial.write(0x02);
  mySerial.print(bme.readHumidity());
  mySerial.print("%");
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x01);
  mySerial.write(0x02);
  mySerial.print(bme.readTemperature());

  CustomFontLoad();
  mySerial.print("\260");
  
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x07);
  mySerial.write(0x02);

  mySerial.print("C");
  delay(1000);
}

void CustomFontLoad() {
  SoftwareSerial mySerial(11, 10);
  mySerial.begin(9600);
  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(0x30); // Д - B0
  mySerial.write(0x48); // \260
  mySerial.write(0x48); //
  mySerial.write(0x48); //
  mySerial.write(0x30); //


}

 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

В софтовый порт не дает вообще почему то ноль отправить, вот этот пример вызывает ту же ошибку

#include <SoftwareSerial.h>
void setup() {
  SoftwareSerial mySerial(11, 10);
  mySerial.begin(9600);
  mySerial.write(0); 
}

void loop() {
}

 

Haronych
Offline
Зарегистрирован: 31.01.2020

По ссылке то смотрел? Там таже беда у народа )

Я в своей прошивке по просьбам трудящихся тоже добавил поддержку BME280. Отдельным режимом

со значком градуса пока не заморачивался )))

 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Да, такой вариант Serial.write((byte)0x00); компилируется, но вместо символа пустое место

Haronych
Offline
Зарегистрирован: 31.01.2020

Кстати а зачем ты в loop`е Сериал инитишь и CustomFontLoad() вызываешь? Это один раз делается в сетапе.

Haronych
Offline
Зарегистрирован: 31.01.2020

Amatroskin пишет:

Да, такой вариант Serial.write((byte)0x00); компилируется, но вместо символа пустое место

Там в последнем сообщении чел пишет что в версии 1.0.1 эта проблема была, а в версии 1.0.6 всё ок.

У меня версия 1.8.12, проблем нет

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Спасибо, тебе огромное!! все поправил скетч как надо, и все заработало, Haronych, куда те задонатить? всю голову сегодня сломал просто, все перепробовал)) короче вот скетч:


#include <SoftwareSerial.h>
#include <Wire.h>                                         // Подключаем библиотеку Wire                     
#include <Adafruit_BME280.h>                              // Подключаем библиотеку Adafruit_BME280 
#include <iarduino_RTC.h>
#include <LiquidCrystal_I2C.h>
#define SEALEVELPRESSURE_HPA (1010.7)                    // Задаем высоту 

Adafruit_BME280 bme;
iarduino_RTC watch(RTC_DS3231);
LiquidCrystal_I2C lcd(0x27, 20, 4);
  SoftwareSerial mySerial(11, 10);


void setup() {
  delay(3000);
  pinMode (10, OUTPUT);
  mySerial.begin(9600);
  mySerial.write(0x0C);
  lcd.init();
  bme.begin(0x76);
}

void loop() {
  watch.gettime();
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x07);
  mySerial.write(0x01);
  mySerial.print(watch.gettime("H:i:s"));
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x0F);
  mySerial.write(0x02);
  mySerial.print(bme.readHumidity());
  mySerial.print("%");
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x01);
  mySerial.write(0x02);
  mySerial.print(bme.readTemperature());

  CustomFontLoad();
  mySerial.print("\260");
  
  mySerial.write(0x1B);
  mySerial.write(0x6C);
  mySerial.write(0x07);
  mySerial.write(0x02);

  mySerial.print("C");
  delay(1000);
}

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(0x30); // Значек градуса °
  mySerial.write(0x48); // \260
  mySerial.write(0x48); //
  mySerial.write(0x30); //
  mySerial.write((int)0x00); //


}

Вот результат его работы

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Доброго времени суток, всем! Подскажите, как оформлять setup для корректной работы дисплея, выше писали про задержку в несколько секунд при включении? а в каком именно месте она нужна, что на счет команды инициализации дисплея

mySerial.write(0x1B); //инициализация дисплея
mySerial.write(0x40);
 
до или после задержки она должна идти? нужно ли время на загрузку своих символов?

проблема такая, при отключении питания, после включения,  не отображаются пользовательские символы (с родными все в порядке),  если нажать на перезагрузку ардуины, все нормализуется, понимаю что проблемы на старте, но не понимаю где..

фото соответственно сразу после включения, и после последующей перезагрузки с кнопки (как и должно быть)
 
 
Amatroskin
Offline
Зарегистрирован: 21.04.2020

Перепробовал все, разные значения делея, ставил его в разные места сетапа, все или хуже или без изменений: при включении - только цифры (темп, влаж.), после перезагрузки появляются мои символы (большие цифры и градус), при последующих перезагрузках/прошивках ардуинки все норм, но стоит отключить дисплей, все заново - первое включение только цифры, можно конечно и так оставить, и в случает отключения часов нажимать перезагрузку, но не хочется - это костыль(((
сетап и луп на данный момент:

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();
  }
}

 

Green
Offline
Зарегистрирован: 01.10.2015

Матроскин, вы опишите членораздельно что у вас значит перезагрузка и что у вас значит "отключить дисплей".

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Включение

Подаю питание на всю схему (+12в), ардуино запитано через лм7850 - > на дисплее только цифры 

Далее жму ресет на ардуине (не снимая питания, просто получается перезагрузка ардуинки со включенным дисплеем) -> все начинает отображать как надо

Видео
 


#include <SoftwareSerial.h>
#include <Wire.h>                                         // Подключаем библиотеку Wire                     
#include <iarduino_RTC.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1010.7)                    // Задаем высоту 

Adafruit_BME280 bme;
iarduino_RTC watch(RTC_DS3231);
LiquidCrystal_I2C lcd(0x27, 20, 4);
SoftwareSerial mySerial(11, 10);

int temp_round, temp_round_c1, temp_round_c2, temp_round_d;
int hum_round, hum_round_c1, hum_round_c2, hum_round_d;
uint32_t counter = 1000, counter2 = 0;

String up_half [12] { // верхние половины цифр
  "\260\261", // ноль
  "\264\265", // один
  "\270\271", // два
  "\274\275", // три
  "\300\301", // четыре
  "\304\305", // пять
  "\310\311", // шесть
  "\314\315", // семь
  "\320\321", // восемь
  "\324\325", // девять
  "\330",     // :
};

String down_half [12] { // нижние половины цифр
  "\262\263", // ноль
  "\266\267", // один
  "\272\273", // два
  "\276\277", // три
  "\302\303", // четыре
  "\306\307", // пять
  "\312\313", // шесть
  "\316\317", // семь
  "\322\323", // восемь
  "\326\327", // девять
  "\331",     // :
};

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();
  }
}

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(0xda); // Последний адрес диапазона

  mySerial.write(0x05); // Размер символа 5 байт____Ноль
  mySerial.write(0x1F); // Большой ноль 1
  mySerial.write(0x3F); // \260
  mySerial.write(0X70); //
  mySerial.write(0x60); //
  mySerial.write(0x60); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x63); // Большой ноль 2
  mySerial.write(0x67); // \261
  mySerial.write(0x76); //
  mySerial.write(0x3F); //
  mySerial.write(0x1F); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x7C); // Большой ноль 3
  mySerial.write(0x7E); // \262
  mySerial.write(0x37); //
  mySerial.write(0x73); //
  mySerial.write(0x63); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x3); // Большой ноль 4
  mySerial.write(0x3); // \263
  mySerial.write(0x7); //
  mySerial.write(0x7E); //
  mySerial.write(0x7C); //

  mySerial.write(0x05); // Размер символа 5 байт____Один
  mySerial.write((int)0x00); // Единица 1
  mySerial.write((int)0x00); // \264
  mySerial.write((int)0x00); //
  mySerial.write(0x18); //
  mySerial.write(0x38); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x7F); // Единица 2
  mySerial.write(0x7F); // \265
  mySerial.write((int)0x00); //
  mySerial.write((int)0x00); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Единица 3
  mySerial.write((int)0x00); // \266
  mySerial.write((int)0x00); //
  mySerial.write(0x3); //
  mySerial.write(0x3); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x7F); // Единица 4
  mySerial.write(0x7F); // \267
  mySerial.write(0X3); //
  mySerial.write(0x3); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Двойка 1
  mySerial.write(0x30); // \270
  mySerial.write(0X70); //
  mySerial.write(0x60); //
  mySerial.write(0x60); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x60); // Двойка 2
  mySerial.write(0x61); // \271
  mySerial.write(0X73); //
  mySerial.write(0x3F); //
  mySerial.write(0x1E); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x3); // Двойка 3
  mySerial.write(0x7); // \272
  mySerial.write(0XF); //
  mySerial.write(0x1F); //
  mySerial.write(0x3B); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x73); // Двойка 4
  mySerial.write(0x63); // \273
  mySerial.write(0X43); //
  mySerial.write(0x3); //
  mySerial.write(0x3); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Тройка 1
  mySerial.write(0x60); // \274
  mySerial.write(0X60); //
  mySerial.write(0x61); //
  mySerial.write(0x63); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x67); // Тройка 2
  mySerial.write(0x6E); // \275
  mySerial.write(0X7C); //
  mySerial.write(0x78); //
  mySerial.write(0x70); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0xC); // Тройка 3
  mySerial.write(0xE); // \276
  mySerial.write(0X7); //
  mySerial.write(0x43); //
  mySerial.write(0x43); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x43); // Тройка 4
  mySerial.write(0x43); // \277
  mySerial.write(0X67); //
  mySerial.write(0x7E); //
  mySerial.write(0x3C); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x1); // Четверка 1
  mySerial.write(0x3); // \300
  mySerial.write(0X7); //
  mySerial.write(0xE); //
  mySerial.write(0x1C); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x60); // Четверка 2
  mySerial.write(0x7F); // \301
  mySerial.write(0X7F); //
  mySerial.write((int)0x00); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x70); // Четверка 3
  mySerial.write(0x70); // \302
  mySerial.write(0X30); //
  mySerial.write(0x30); //
  mySerial.write(0x30); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x30); // Четверка 4
  mySerial.write(0x7F); // \303
  mySerial.write(0X7F); //
  mySerial.write(0x30); //
  mySerial.write(0x30); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Пятерка 1
  mySerial.write(0x7F); // \304
  mySerial.write(0X7F); //
  mySerial.write(0x63); //
  mySerial.write(0x63); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x63); // Пятерка 2
  mySerial.write(0x63); // \305
  mySerial.write(0X63); //
  mySerial.write(0x61); //
  mySerial.write(0x60); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0xC); // Пятерка 3
  mySerial.write(0xE); // \306
  mySerial.write(0X7); //
  mySerial.write(0x3); //
  mySerial.write(0x3); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x3); // Пятерка 4
  mySerial.write(0x3); // \307
  mySerial.write(0X47); //
  mySerial.write(0x7E); //
  mySerial.write(0x7C); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0xF); // Шестерка 1
  mySerial.write(0x1F); // \310
  mySerial.write(0X39); //
  mySerial.write(0x73); //
  mySerial.write(0x63); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x63); // Шестерка 2
  mySerial.write(0x63); // \311
  mySerial.write(0X63); //
  mySerial.write(0x61); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x7C); // Шестерка 3
  mySerial.write(0x7E); // \312
  mySerial.write(0X47); //
  mySerial.write(0x43); //
  mySerial.write(0x3); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x3); // Шестерка 4
  mySerial.write(0x3); // \313
  mySerial.write(0X47); //
  mySerial.write(0x7E); //
  mySerial.write(0x7C); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Семерка 1
  mySerial.write(0x60); // \314
  mySerial.write(0X60); //
  mySerial.write(0x60); //
  mySerial.write(0x60); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x63); // Семерка 2
  mySerial.write(0x67); // \315
  mySerial.write(0X6E); //
  mySerial.write(0x7C); //
  mySerial.write(0x78); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Семерка 3
  mySerial.write((int)0x00); // \316
  mySerial.write((int)0x00); //
  mySerial.write(0x3F); //
  mySerial.write(0x7F); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Семерка 4
  mySerial.write((int)0x00); // \317
  mySerial.write((int)0x00); //
  mySerial.write((int)0x00); //
  mySerial.write((int)0x00); //


  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x1E); // Восьмерка 1
  mySerial.write(0x3F); // \320
  mySerial.write(0X73); //
  mySerial.write(0x61); //
  mySerial.write(0x61); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x61); // Восьмерка 2
  mySerial.write(0x61); // \321
  mySerial.write(0X73); //
  mySerial.write(0x3F); //
  mySerial.write(0x1E); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x3C); // Восьмерка 3
  mySerial.write(0x7E); // \322
  mySerial.write(0X67); //
  mySerial.write(0x43); //
  mySerial.write(0x43); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x43); // Восьмерка 4
  mySerial.write(0x43); // \323
  mySerial.write(0X67); //
  mySerial.write(0x7E); //
  mySerial.write(0x3C); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x1F); // Девятка 1
  mySerial.write(0x3F); // \324
  mySerial.write(0X71); //
  mySerial.write(0x60); //
  mySerial.write(0x60); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x60); // Девятка 2
  mySerial.write(0x60); // \325
  mySerial.write(0X71); //
  mySerial.write(0x3F); //
  mySerial.write(0x1F); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Девятка 3
  mySerial.write(0x43); // \326
  mySerial.write(0X63); //
  mySerial.write(0x63); //
  mySerial.write(0x63); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x63); // Девятка 4
  mySerial.write(0x67); // \327
  mySerial.write(0X4E); //
  mySerial.write(0x7C); //
  mySerial.write(0x78); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Двоеточие верх
  mySerial.write(0xE); // \330
  mySerial.write(0XE); //
  mySerial.write(0xE); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write((int)0x00); // Двоеточие низ
  mySerial.write(0x38); // \331
  mySerial.write(0X38); //
  mySerial.write(0x38); //
  mySerial.write((int)0x00); //

  mySerial.write(0x05); // Размер символа 5 байт
  mySerial.write(0x30); // Значек градуса °
  mySerial.write(0x48); // \332
  mySerial.write(0x48); //
  mySerial.write(0x30); //
  mySerial.write((int)0x00); //

}


void show_time () {
  watch.gettime();
  byte h1, h2, m1, m2, s1, s2;
  h1 = watch.Hours / 10;
  h2 = watch.Hours % 10;
  m1 = watch.minutes / 10;
  m2 = watch.minutes % 10;
  s1 = watch.seconds / 10;
  s2 = watch.seconds % 10;

  mySerial.print(up_half [h1]);
  mySerial.print(up_half [h2]);
  mySerial.print(up_half [10]);
  mySerial.print(up_half [m1]);
  mySerial.print(up_half [m2]);
  mySerial.print(up_half [10]);
  mySerial.print(up_half [s1]);
  mySerial.print(up_half [s2]);
  mySerial.print(" ");
  mySerial.print(temp_round_c1);
  mySerial.print(temp_round_c2);
  mySerial.print(".");
  mySerial.print(temp_round_d);
  mySerial.print("\332");
  mySerial.print(down_half [h1]);
  mySerial.print(down_half [h2]);
  mySerial.print(down_half [10]);
  mySerial.print(down_half [m1]);
  mySerial.print(down_half [m2]);
  mySerial.print(down_half [10]);
  mySerial.print(down_half [s1]);
  mySerial.print(down_half [s2]);
  mySerial.print(" ");
  mySerial.print(hum_round_c1);
  mySerial.print(hum_round_c2);
  mySerial.print(".");
  mySerial.print(hum_round_d);
  mySerial.print("%");

}

void get_temp() {
  temp_round = bme.readTemperature();
  temp_round_c1 = (temp_round / 10);
  temp_round_c2 = (temp_round % 10);
  int d  = (bme.readTemperature() * 10);
  temp_round_d = (d % 10);

  hum_round = bme.readHumidity();
  hum_round_c1 = (hum_round / 10);
  hum_round_c2 = (hum_round % 10);
  int f  = (bme.readHumidity() * 10);
  hum_round_d = (d % 10);
}

 

vitus73
Offline
Зарегистрирован: 30.03.2019

У меня при загрузке 5 секунд стоит delay, если меньше то ардуина быстрей начинает работать чем прогрузится дисплей и управляющие символы которые переключают работу дисплея не прогружаются. Vfd правда другой. 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Не, не прокатывает, я даже пробовал ради смеха пол минуты ставить, все то же самое

Green
Offline
Зарегистрирован: 01.10.2015

Тяжелый случай. Без научного тыка никак.( Попробуйте ещё в 52 1-сек задержку втулить.

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Спасибо, бро, за идею!) в общем проблема решена! я психанул и натыкал делеев после каждого действия в сетапе, и , о чудо, это помогло, дальше методом исключения была  выяснена рабочая комбинация, в итоге рабочий сетап выглядит так:

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 (); //________выводим информацию на дисплей
}

Продолжаем разработку))

imatt
Offline
Зарегистрирован: 18.04.2020

Матроскин, мужик выручай, у меня такой же дисплей, я пытаюсь так сказать идти по твоим стопам но у меня банально не получается завести этот дисплей от Ардуинки. от ПК с COM все завелось нормально подал питание 9 вольт на разьем и отлино, а с ардуинкой не как не врублюсь че надо сделать. Если банально подать на него питание 12 вольт (через ЛБП) вижу просадку напряжения до 5 вольт, то есть как я понимаю у него в разьеме есть два плюса и 2 минуса значит он должен еще брать доп питание от Ардуины тобиш 5 вольт, просьба сделай фото как у тебя провода подключены от дисплея к Ардуино и как подается питание? 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

просадки вроде быть не должно, может у тебя ограничение по току на ЛБП стоит? А подключено все просто, на сам дисплей я подаю 12в (минус подпаял к минусу конденсатору основному большому электрлитическому, и плюс на разъем выключателя),  к ардуине подключаю к 10 пину напрямую на ногу RX процессора,  (Haronych выше хорошо осветил этот вопрос) и земли обязательно соединить надо с ардуиной, вот и все.  От поста #116 почитай там все расписано

imatt
Offline
Зарегистрирован: 18.04.2020

Смотри, я так же как и ты подпаялся к к МК тобишь к RX его я подключаю к TX на ардуино нано v3 верно? 

и по поводу земли у меня родной кабель к этому дислею и из него выходит 2 провода  земли и 2 провода +12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?

 

Amatroskin
Offline
Зарегистрирован: 21.04.2020

Да у меня сейчас на нем нанао в3, на ардуине используется SoftwareSerial (а не стандартный хардварный) т.е. какую ногу назначишь, к такой и подключай, у меня 10
 

  SoftwareSerial mySerial(11, 10);

Я не знаю что у тебя за дисплей и распиновка, но на моем в разъеме два контакта на землю и два на питание, они соединены меж собой соответственно, просто продублированы, разъем я уже не использую ибо три провода, смысл..

+12v я подключаю ЛБП к одной из земель и +12 V а вторую землю тяну на GND на дуинке верно ? Или я что то напутал ?

можно и так, но проще припаяй 3 провода к дисплею и подключай соответвенно:
землю всю в кучу (ардуино и ЛБП)
питание +12 в лбп
нога RX проца дисплея на тот пин какаой в SoftwareSerial на ардуине назначишь.

imatt
Offline
Зарегистрирован: 18.04.2020

Спасибо за столь подробный ответ сегодня попробую

imatt
Offline
Зарегистрирован: 18.04.2020

Матроскин спасибо все заработало!