Nextion Дисплеи

dreamol
Offline
Зарегистрирован: 19.07.2016

begin делаю. подключение прямое (RX-RX, TX-TX) хотя и наоборот пробовал. землю обьединял.

 

На метеной плате еще висит схема с датчиком температуры, LCD дисплеем и вентилятором.

 

Еще вопрос у UNO serial только один правильно я понимаю, пины 0 и 1. я ним подключаю RX-TX. А монитор порта в Ardulino IDE тоже должен команды показывать которые я на Nextion передаю???

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Подключение должно быть перекрёстное: с TX ардуины на RX Nextion, с RX ардуины - на TX Nextion, по-моему, это какбэ очевидно: что послала ардуина, должно приниматься Nextion, и наоборот.

Для тестирования совместно с монитором порта лучше юзать SoftwareSerial для Nextion.

dreamol
Offline
Зарегистрирован: 19.07.2016

Если я подключаю перекреснто при закгрузке на арделину выдает avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

У вас Nextion подключен к RX0 и TX0? Отключите его перед загрузкой скетча.

dreamol
Offline
Зарегистрирован: 19.07.2016

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

void ReadFromLCD ????

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

dreamol пишет:

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

void ReadFromLCD ????

Прочитать документацию: http://wiki.iteadstudio.com/Nextion_Instruction_Set#Format_of_Device_Return_Data - там всё написано, что и в каком формате возвращает экран в порт.

alex_r61
Offline
Зарегистрирован: 20.06.2012

В принципе можно и свой протокол сморозить. Для передачи там есть команды Print и Printh.

victorv
Offline
Зарегистрирован: 31.07.2015

Здравствуйте, не пробовали камеру через ардуиино подключать и выводить на этот дисплей , тормоза будут ?

AndrF
Offline
Зарегистрирован: 10.04.2016

victorv пишет:

Здравствуйте, не пробовали камеру через ардуиино подключать и выводить на этот дисплей , тормоза будут ?

Данный дисплей по определению не рассчитан на вывод потокового видео. 

victorv
Offline
Зарегистрирован: 31.07.2015

понятно , спасибо .

rull
Offline
Зарегистрирован: 11.08.2016

Народ, нужна помощь! Может ли кто нибудь слить дамп, с 4 мегабайтной флешки, для экранчика  tjc3224t022_011n. Заранее буду благодарен.

klukonin
Offline
Зарегистрирован: 14.08.2016

Всем привет!

У меня есть маленькая просьба к использующим данные экраны и желающим потестить эдитор под линуксом.

Не так давно от ITEAD был официальный ответ по поводу поддержки Nextion Editor для Linux
http://support.iteadstudio.com/support/discussions/topics/1000062201?page=1
Ответ отрицательный, хотя, изначально они обещали запилить.

Собственно, решением было подобрать конфигурацию под Wine и оттестировать.
Проблемой такого решения было слабое знание нюансов wine и сборки префиксов даже среди линуксойдов.

Вот и решил собрать автоматический скрипт для PlayOnLinux, ибо это самое простое и быстрое решение для всех =)

https://www.playonlinux.com/en/app-3021-Nextion_Editor_037.html

Запускать можно кописастой в браузер данной ссылки. PLayOnLinux должен быть установлен, разумеется.
playonlinux://www.playonlinux.com/repository/download_update.php?id=6104

Прошу помощи у сообщества для тестирования. Потестите как оно работает у вас, пишите о багах и траблах.

Ну и если работает - напишите отзыв прямо на странице. Так скрипт пройдет проверку быстрее и появится в официальных источниках. Можно будет устанаваливать в три клика))

alex_r61
Offline
Зарегистрирован: 20.06.2012

Кто нибудь покупал в этом магазине http://ru.aliexpress.com/store/group/LCD-Module-HMI/900905_503279166.htm...

Там появились новые, расширенные версии.

VXXXV
Offline
Зарегистрирован: 09.09.2016

Никак немогу понять как сделать чтобы, картинка появлялась при сигнале с ардуины. В библиотеке nextion-master такого не нашел.

alex_r61
Offline
Зарегистрирован: 20.06.2012

Библиотекой не пользуюсь, есть команда vis

https://www.itead.cc/wiki/Nextion_Instruction_Set#vis:_Hide.2Fshow_compo...

VXXXV
Offline
Зарегистрирован: 09.09.2016

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

jaxik2
jaxik2 аватар
Offline
Зарегистрирован: 25.11.2015

Пример для китайского Nextion 

NX3224T024

 который рисует графики по сигналам на аналоговых входах Arduino Leonardo

VXXXV
Offline
Зарегистрирован: 09.09.2016

Немогу поменять скорость юарта на дисплеи. Сначало Serial2.begin(9600); дальше в дисплей команду "baud=115200", затем уже сериал на 115200 перевожу и результата ноль. Если вместо 115200 ввести 9600 в эти все строки, дисплей работает.

alex_r61
Offline
Зарегистрирован: 20.06.2012

Есть команда bauds=115200, установка по умолчанию.

VXXXV
Offline
Зарегистрирован: 09.09.2016

Пробывал и эту команду. С их форума все последовательно делал, у них работает, у меня нет. Завтра попробую с компьютера отправить команду.

Настроил через отладчик на 115200. Почему с ардуины не настраивалось, непонятно.

Zombrero
Zombrero аватар
Offline
Зарегистрирован: 30.10.2016

Народ, ни кто не сталкивался с "разрезанием" изображения в кнопке "Button"? 

 

Zombrero
Zombrero аватар
Offline
Зарегистрирован: 30.10.2016

Нашел - картинку режет если в поле txt что либо написанно. 

VXXXV
Offline
Зарегистрирован: 09.09.2016

Треснул дисплей, точнее стекло под сенсором. Сенсор перестал откликаться окончательно, меняется ли он? Или можно перепаять дисплей на подобный?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Что-то тема затихла.

Коллеги, подскажите, кто пользуется библиотекой nextion-master, как запросить значение компонента дисплея? Есть цифровое поле с вводом, при нажатии кнопки на дисплее необходимо передать значение в ардуино.  Пробовал на симуляторе - значение посылается. А в ардуину приходят кракозябры, хотя другие значения (нажатия кнопок и т.д.) передаются корректно.

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

int value = myNextion.getComponentValue("z0");
Serial.println(value);

кракозябры в ответ.

Пробовал print z0.val из самого дисплея - аналогично. В чем проблема - не пойму.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Можно сообщить конкретно, что ожидается получить, и что на савмом деле приходит?

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

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Ожидается получть значение числового поля Numeric, которое на дисплее имеет значение 15.

В монитор порта приходят такие символы

alex_r61
Offline
Зарегистрирован: 20.06.2012

Если это "Terminal", то нужно включить "HEX". Я это 0xFF

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Разобрался я частично с проблемой, она была в библиотеке.

Получаю в итоге в терминал, к примеру: 71f000ffffffffffff, где значение после 71 (в данном случае "f") - это как раз значение которое мне нужно. Значение приходит строкой. Лишнее я откинул,  только никак не пойму, как мне f привести к десятичной систем (т.е. к 15).

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

0x0f и есть десятичное 15.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Да это я знаю :)
Функция есть, которая переводит из 0x0f в 15?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А что должна желать эта функция?

0x0f и 15 - это разные варианты записи одного и того же.

Или Вы имеете в виду преобразование из текста в текст? Тогда обычно переводят через внутреннее (бинарное) представление.

Но Вы уверены, что получаете именно текст, а не бинарные данные, которые затем Serial.print() переводит в текст, который Вы видите на экране?

То, что у Вас изображено в посте №126, это не текст, а как раз бинарные данные, которые каким-то образом были ошибочно трактованы как текст.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Все верно. Бинарные данные приходят и побайтно складываются и переводятся в строку, что мы затем видим в мониторе.
То, что было касательно кракозябр - это библиотека неправильно читала байты. С этим я и разобрался.
Теперь пытаюсь понять как перевести 0x0f в 15.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Ну в данном конкретном случае речь идет о преобразовании шестнадцатиричного представления в десятичное.

Sliva
Offline
Зарегистрирован: 18.01.2017

Не могу понять как часы сделать.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Победил я и преобразование. Код может и корявый, но работает. Мне необходимо преобразовывать в десятичные числа от 15 до 30. Serial.print для дебага.

      int tempDEC[] = {0,0};
      int tempX = 0;

      Serial.print("str_to_int.length()): " + String(str_to_int.length()) + "\r\n");
      int i=str_to_int.length()-1;
      
      while (i>=0)
        {
          Serial.print("i: " + String(i) + "\r\n");
          Serial.print("str_to_int.substring(i): " + String(str_to_int.charAt(i)) + "\r\n");
          if (String(str_to_int.charAt(i)) == "a")
          {
            tempDEC[i] = 10;
          }
          else if (String(str_to_int.charAt(i))== "b") 
          {
            tempDEC[i] = 11;
          } 
          else if (String(str_to_int.charAt(i)) == "c")
          {
            tempDEC[i] = 12;
          }             
          else if (String(str_to_int.charAt(i)) == "d") 
          {
            tempDEC[i] = 13;
          }        
          else if (String(str_to_int.charAt(i)) == "e") 
          {
            tempDEC[i] = 14;
          }        
          else if (String(str_to_int.charAt(i)) == "f") 
          {
            tempDEC[i] = 15;
          }   
          else {String a = String(str_to_int.charAt(i));
                tempDEC[i] = a.toInt();}
           
        Serial.print("for: tempDEC: "+ String(tempDEC[i]) + "\r\n");
        i = i-1; 
        } 
        if ((str_to_int.length()-1) == 0) {tempX = (int(tempDEC[0]));}
        else {
        tempX = (int((tempDEC[0]*16)) + int(tempDEC[1]));// ((1 * 16^1) + 6)
        Serial.print("tempDEC: "+ String(tempX) + "\r\n");  
        }

 

alex_r61
Offline
Зарегистрирован: 20.06.2012

Sliva

Если дисплей расширенный, то запускается таймер с периодом 1сек и в его обработчике пишите

n0.val=rtc3
n1.val=rtc4
n2.val=rtc5
n3.val=rtc2
n4.val=rtc1
n5.val=rtc0

Если базовый, то создаёте переменные Number и туда пишите значения часов, минут и т.д. А можно и текстовой строкой загонять, как удобнее. Некоторые библиотеки позволяют получать данные с часов в текстовой строке.

vvadim
Offline
Зарегистрирован: 23.05.2012

dr.lmg пишет:

Победил я и преобразование. Код может и корявый, но работает. Мне необходимо преобразовывать в десятичные числа от 15 до 30. Serial.print для дебага.

      int tempDEC[] = {0,0};
      int tempX = 0;

      Serial.print("str_to_int.length()): " + String(str_to_int.length()) + "\r\n");
      int i=str_to_int.length()-1;
      
      while (i>=0)
        {
          Serial.print("i: " + String(i) + "\r\n");
          Serial.print("str_to_int.substring(i): " + String(str_to_int.charAt(i)) + "\r\n");
          if (String(str_to_int.charAt(i)) == "a")
          {
            tempDEC[i] = 10;
          }
          else if (String(str_to_int.charAt(i))== "b") 
          {
            tempDEC[i] = 11;
          } 
          else if (String(str_to_int.charAt(i)) == "c")
          {
            tempDEC[i] = 12;
          }             
          else if (String(str_to_int.charAt(i)) == "d") 
          {
            tempDEC[i] = 13;
          }        
          else if (String(str_to_int.charAt(i)) == "e") 
          {
            tempDEC[i] = 14;
          }        
          else if (String(str_to_int.charAt(i)) == "f") 
          {
            tempDEC[i] = 15;
          }   
          else {String a = String(str_to_int.charAt(i));
                tempDEC[i] = a.toInt();}
           
        Serial.print("for: tempDEC: "+ String(tempDEC[i]) + "\r\n");
        i = i-1; 
        } 
        if ((str_to_int.length()-1) == 0) {tempX = (int(tempDEC[0]));}
        else {
        tempX = (int((tempDEC[0]*16)) + int(tempDEC[1]));// ((1 * 16^1) + 6)
        Serial.print("tempDEC: "+ String(tempX) + "\r\n");  
        }

 

 

а не проще по командам дисплея на дуне все вычисления делать

vvadim
Offline
Зарегистрирован: 23.05.2012

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

 

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Не понял Ваш комментрий к скрипту. Вычисления и производятся на меге. Но чтобы правильно их производить, необходимо иметь нужный формат полученных данных.
Получить команду с кнопки - проблема не велика. Я устанавливаю, к примеру, температуру кнопками + / -. Отправка выставленного значения происходит по нажатию на кнопку Ок. Так мне нужно получить не стгнал с кнопки, а введенную температуру.
Упрощенная библиотека, это которая nextion master? У нее есть такой косяк. Исправляется раскомментированием куска кода в библиотеке. Если мы именно об этой библиотеке говорим.

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

коллеги, а подскажите - нигде не нашел - какая шина используется при подключении этих дисплеев к Ардуино?

Какая может быть максимальная длина для подключения?

есть очень большое желание взять весь из себя такой умный дисплей. повесить его на стене в коридоре, а "мозги" - то бишь Ардуино - в двух метрах в шкафу.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Да по идее и на бОльшую длину должно хватить

alex_r61
Offline
Зарегистрирован: 20.06.2012

Я через витую пару метров на 5 подключал, всё работало.

Sliva
Offline
Зарегистрирован: 18.01.2017

Таймер без ардуино можно сделать?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Что-то у меня какая-то фигня с дисплеем. Карту SD то видит, то требует отформатировать с FAT32. А она и так FAT32. Вообще, кто какие карты пользует для дисплея? У меня была на 8Гб, но сдохла, купил на 16, то видит карту, то не не видит.

ProstoAlex
Offline
Зарегистрирован: 21.01.2015

dr.lmg, alex_r61

Спасибо!

 

и еще вопрос - производитель везде пишет, что питания требуется аж 5 Ватт!

это действительно так, и греется начинка; или просто производитель перестраховывается, поскольку в линейке есть большие экраны и им нужно много подсветки

alex_r61
Offline
Зарегистрирован: 20.06.2012

У меня сейчас дисплей 4.3, при подсветке по умолчанию от USB порта он не запускался.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Для дисплея этого нужен как минимум ток 1А. От usb такого не получить.

vvadim
Offline
Зарегистрирован: 23.05.2012

dr.lmg пишет:
Упрощенная библиотека, это которая nextion master? У нее есть такой косяк. Исправляется раскомментированием куска кода в библиотеке. Если мы именно об этой библиотеке говорим.

посмотрел библиотеку.
там закомментирован кусок

String Nextion::listen(unsigned long timeout)

так перед ним в три раза больший кусок с функцией с тем же названием.

если первый закомментировал а второй открыл, то вообще не фурычит
 

 

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Vvadim, а дисплей по софту подключен или по харду? Если по софту, попробуйте на хард подключить, у меня на софте тоже периодически приходили кракозябры.
А что касается библиотеки, то тут тогда сложно сказать, нужно код смотреть.

vvadim
Offline
Зарегистрирован: 23.05.2012

в принципе работает вроде всё нормально
температура на дисплей отсылается , меню бегает, параметры меняются
а вот с двойными кнопками беда
на дисплее при нажатии цвет меняется всегда, а на дуню команда не всегда проходит
при попадании нажатия на момент отправки температуры на дуню в сериале порта приходит яяя
получается цвет кнопки поменялся а реле не включилось

как только убираю отправку банных на дуню - всё гуд
myNextion.setComponentText("t3", String(celsius));

попробовал так
если не слушаем дисплей то отсылаем данные

if (nextion.isListening() == false)
  myNextion.setComponentText("t3", String(celsius));

в этом случае кнопки-реле работают хорошо, а температура вообще не отправляется