Nextion Дисплеи

evgta
Offline
Зарегистрирован: 02.09.2016

цикл в дисплее запустил а вот как из него выйти непонятно

while(1<2)
{
  print "200"
  delay=200
}
 
похоже придется делать на стороне ардуины, т.е при нажатии клавиши на дисплее шлется 1 байт дуину, и начинается добавление +1 каждые 200мс до тех пор пока не отпущу клавишу после чего пришлется байт на прекращение +1.
 
печалька, хотелось решить это со стороны дисплея
dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Выходим по функции отпускания кнопки. Это другая закладка в свойствах.

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

https://vk.com/video77773708_456239021
Вот что получилось

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:
https://vk.com/video77773708_456239021 Вот что получилось

Отлично получилось, а стекло на заказ делали и как его крепили?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

d_tramp пишет:

Вот дали надежду а потом окончательно запутали :))))
буду конечно пробовать с командами завтра.
Но мне хочется, чтобы если на прикасались к экрану, скажем, 5 минут
выключил сам яркость, но при этом сам работал и 
пас расписание, и когда время придет отправлял в порт что положено
с выключенной яркостью.
вот как мне надо? 
мне начинать мудрить с ручной яркостью?
в режиме сна он работать не будет?

Привет, чтоб погасить яркость дисплея, можно сделать таймер на 5 минут и вписать туда строки:

while(dim>1)
{
  dim=dim-1
  delay=10
}
page 0

Тогда по наступлению таймера яркость дисплея будет плавно угасать, а после перейдет на начальную страницу(если надо)

------------------------

На начальной страницу можно сделать так - при нажатии на дисплей, яркость плавно возрастет и перейдет на страницу 1(если надо), создаем объект кнопки, код кнопки в Touch Press Event:

while(dim<100)
{
  dim=dim+1
  delay=5
}
page 1
 
 
stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

d_tramp пишет:

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

Привет, можно сделать запрос о состоянии кнопки на Arduino.

При переходе на page1 делаем запрос Arduino о состоянии кнопки:

printh 0d 0z
print "SendStatusBtn"
printh 0d 0a

При этом должен быть компонет добавлен Variable с названием например StateBtn типа Number

При получении с Arduino ответа в переменную Statebtn (1 - вкл реле, 0 - выкл. реле)

На самой странице делаем таймер на 100мсек

и пешем туда:

if(StateBtn.val==1)
{
  t1.txt = "Включено" // текстовое поле
}else if(StateBtn.val==0)
{
  t1.txt = "Выключено"
}

 

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

Стекло держится на 4-х магнитах "обратного действия". Стекла "исполнитель" переделывал 4 раза.

https://vk.com/video77773708_456239020

https://vk.com/video77773708_456239019

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

Стекло держится на 4-х магнитах "обратного действия". Стекла "исполнитель" переделывал 4 раза.

а дисплеи емкостные?, и как они к стеклу крепятся?

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

https://ru.aliexpress.com/item/20-23D-Current-Degauss-Magnet-Voltage-Not...

это магниты. 

Стекло крашено на 3 слоя (2-светлый, 1-черный). Магниты приклеены на аквариумный клей-герметик.

Дисплеи расширенные, резистивные. 1-ВЕДУЩИЙ --он имеет свойства ТАЧ. Остальные-только как дисплей! Правда с возможностью чтения Карт доступа (для ОТМЕТКИ). Междустеклом и коробом-уплотнительная резинка. Короб металл, сварной, с регулировкой высоты и самого короба, и высоты магнитов (для выведения плоскости под стекло. СТЕКЛО съемное. Прилепил присоску, подал 24 в.-и стекло снялось.

 

Как-то ТАК!

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

Да! ВСЕ клеяно на акквариуммный....

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

Да! ВСЕ клеяно на акквариуммный....

 

спасибо за ответ)

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

могу поделиться картинками!!! (свякие... Может кому и сгодится!)

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

могу поделиться картинками!!! (свякие... Может кому и сгодится!)

Давай

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

Куда кидать? Весит МНОГО!

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

Куда кидать? Весит МНОГО!


Stambylov@yandex.ru

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

stambylov пишет:
Каримов пишет:

Куда кидать? Весит МНОГО!

Stambylov@yandex.ru

Поймал?

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

stambylov пишет:
Каримов пишет:

Куда кидать? Весит МНОГО!

Stambylov@yandex.ru

Поймал?

ага

 

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Каримов пишет:

stambylov пишет:
Каримов пишет:

Куда кидать? Весит МНОГО!

Stambylov@yandex.ru

Поймал?

ага

 

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Каримов пишет:

Куда кидать? Весит МНОГО!

Можешь на Яндекс Диск папку расшарить? Интересно глянуть , неплохо получилось.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

nikolaki пишет:

Каримов пишет:

Куда кидать? Весит МНОГО!

Можешь на Яндекс Диск папку расшарить? Интересно глянуть , неплохо получилось.

 

Он скинул мне, там вирусы, даже скачать нельзя(MAIL не дает скачать), вот ссылка

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017
Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

https://yadi.sk/d/l_DSTzqh3Ujo4M

gif-ки не проканали!

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

.

Bukmop
Offline
Зарегистрирован: 22.10.2017

Ребята, оюъясните почему в сторонних бибилиотеках для дисплея используются пины для передачи данных 2 и 3, а без библиотек 0 и 1. Я как понимаю если использовать пины 2 и3 то что то явно будет ограничено в полном использовании десплея и ардуино в общении между собой?

clawz
Offline
Зарегистрирован: 17.05.2018

где то на просторах интернета я видел сектч для загрузки проекта в дисплей через rx tx, не подскажите где его найти?

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

Доброго..ВСЕМ!

Подскажите,плз! Как переместить картинку в коде?

Есть P1. Координаты Х=100, Y=100. Надо переместить в координаты X=200,Y=200.

Каримов
Каримов аватар
Offline
Зарегистрирован: 24.05.2017

УПС! ПРОПУСТИЛ!

Есть команда pic x, y, picid

Anton2009
Offline
Зарегистрирован: 27.07.2018

Привет всем. Купил я на AliExpress дисплей Nextion NX4827T043_011R, создал проект в Nextion Editor, залил его на дисплей, все работало. Решил по управлять подсветкой, сгорел чип драйвер подсветки. Поменял чип драйвер, включаю дисплей, а он выдает: Model does not match, Device Model: BX4827T043_011R.Больше проект в него залить не удается. Пробовал через CD карту и UART, не выходит. Через UART команды принимает и распознает. Может у кого было что подобное? 

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

Anton2009 пишет:

Решил по управлять подсветкой, сгорел чип драйвер подсветки. 

Накохер? Ручонки шаловливые? Есть же штатная команда ухода в сон, и wake on touch есть из коробки - нафига к лисапеду базуку прикручивать?

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

Думаю, всем известно, что несмотря на убого выглядящие шрифты Nextion - поддержка кириллицы там есть, для этого достаточно указать ISO-8859-5 в настройках проекта, как кодовую страницу для шрифтов.

Но беда в том, что лично у мну, например, все исходники прошивок хранятся в кодировке UTF-8, соответственно, послав в UART Nextion пакет вида t0.txt="тут UTF-8" - ничего не выйдет, в текстовом поле будут кракозябры. В общем, функция ниже - конвертирует из UTF-8 в ISO-8859-5 - и уже сконвертированную строку мона смело пулять в Nextion - и он послушно будет отображать русский текст.

String convert(const char* in)
{  
    String out;
    if (in == NULL)
        return out;

    uint32_t codepoint = 0;
    while (*in != 0)
    {
       uint8_t ch = (uint8_t) (*in);
        if (ch <= 0x7f)
            codepoint = ch;
        else if (ch <= 0xbf)
            codepoint = (codepoint << 6) | (ch & 0x3f);
        else if (ch <= 0xdf)
            codepoint = ch & 0x1f;
        else if (ch <= 0xef)
            codepoint = ch & 0x0f;
        else
            codepoint = ch & 0x07;
        ++in;
        if (((*in & 0xc0) != 0x80) && (codepoint <= 0x10ffff))
        {
            if (codepoint <= 255)
            {
                out += (char) codepoint;
            }
            else
            {
              if(codepoint > 0x400)
                out += (char) (codepoint - 0x360);
            }
        }
    }
    return out;
}

Возможно, кому-то будет полезно.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Нафига  пулять русский язык на дисплей, забивать память контроллера, когда можно кодами пулять и уже разбирать на дисплее.

Русский язык в коде Arduino жрет много память, и если у вас не маленький проект, то Arduino может просто зависнуть, т.к. в коде у вас много переменных, хранящие данные, и при переполнении переменной, если её не очищать, то может подвиснуть контроллер.

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

Всем удачи в начинании и в проектах с дисплеями Nextion/

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

stambylov пишет:

Нафига  пулять русский язык на дисплей, забивать память контроллера, когда можно кодами пулять и уже разбирать на дисплее.

Хинт: подписи к датчикам может настраивать юзер через конфигуратор, эта инфа хранится на SD и на память дуни не влияет никак. Именно так у меня и сделано. Получаем минимум секаса: на Nextion не надо никаких надписей хардкодить - что юзер захочет - то и выведется. Если кастомной надписи нет на SD - пуляется дефолтная вида "Температура #1". И да - на SD всё тоже хранится в UTF-8 - у мну везде UTF-8, так меньше головняка с переводом на практически любой человечий язык.

Такой юзкейс устроит?

 

stambylov пишет:

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

Я проверял его на работоспособность, поэтому и выложил. Крутится в проекте за здрасте.

slider
Offline
Зарегистрирован: 17.06.2014

Народ, а есть ли какие HMI аналоги замена дисплеев Nextion ?  с какой нить понятной графической оболочкой, хорошо бы  русскоязычной.

не устраивает в nextion что: 

1. нет 5" 7" IPS матриц ( на обычных дисплеях при свете ничего на невидать), 

2. не возможно считывать картинки с карты памяти (надо работать с камерой , выводить изображение из карты памяти сделанные камерой ). по uart это ооочень медленно , по GPIO нет примеров и тож медленно.  //хоть они и обещали что Enhanced версии это смогут делать , но нифига. В форумах на ITEAD поднимался этот вопрос 2 года назад, и ничего , закрыли. Никаких поддержек, развитий , видимо просто сейчас клепают старое и не хотят развиваться. 

 

Cмотрел HMI дисплеи 4D System , но какая-то малоизвестная Австралийская контора в русскоязычном инете. Нормальная графическая оболочка стоит у них денег. сайт http://www.4dsystems.com.au/group/Whats_New как-то медленно работает , мож что ооочень далеко сайт. Плюсы что есть IPS, быстрый интерфейс SPI (хоть по нему можно будет фотку с камеры передать посредством к примеру stm32), работа с microSD (считать картинки).

 

остается пугающая (по написанию программы) задумка с orange pi от 10$ https://ru.aliexpress.com/store/top-rated-products/1553371.html, но там дофига для меня непоняток как писать программу содействия с модулями arduino.  // Плюс в том, что можно камеру 5мпикс с автофокусировкой подключить, и все  будет быстро работать , но сильно греться и жрать  li-ion аккумулятор. И хорошо что относительно быстро будет включаться в отличии планшетников . 

По деньгам с IPS дисплеем 5", 7" обойдется дешевле чем nextion. Есть и с GSM модулем https://ru.aliexpress.com/store/product/Pi-3g-IOT-B-512-Cortex-A7-4-EMMC-3g-sim/1553371_32882003305.html за 2тр , и с GPS на борту кому надо. И камеру можно напрямую подключить.

 

Если альтернатив больше нет , то вопрос с чем быстрее будет разобраться с дисплеем 4D System (дорогие млин), или с orange pi ?

diger67
Offline
Зарегистрирован: 25.07.2015

Альтернатива есть. stm32f429 и выше, есть периферия SDIO (SD), LTDC (18 - 24 RGB) + DMA2D (графический ускоритель) + SDRAM (32Мбайт 133 МГц), видеокамеры. Среда WB(бесплатная среда), Keil(с ограничением 32Кбайт по коду) графическая библиотека от Seger EmWin(условно бесплатная). Можно прикрутить OS FREERTOS и FatFS. С преобразователем ARGB8888 -> протокол матрицы (планшета, ноутбука, телевизора) м/с стоит не дорого любую матрицу можно запустить, хватило бы объема SDRAM. В принципе EmWin работает и с RGB565 только настроить должным образом среду. Запускал IPS 7", угол обзора приличный, есть с емкостным тачем. и стоят примерно как Nextion 4". Уроки по stm простые и доходчевые тут http://narodstream.ru      

Вот пример работы обычного TFT RGB с библиотекой Chana JPEG http://youtu.be/oxVMUIFLVRw

А это терминал, еще не дописан до конца, жду платку PS/2 клавиатуры и работает это все на stm32f103vet http://youtu.be/4PD1aeNQMgg

gtandrey
Offline
Зарегистрирован: 04.11.2016

Гуру подскажите (гугл не помог :).  У меня в проекте 3 ползунка (RGB).  При их изменении сразу передаю в ардуино, чтобы сразу демонстрировать цвет.

И чтобы уменьшить количество байт. Возможно ли конвертировать значение ползунка в HEX (у меня значения от 0 до 255) и передать в порт ардуино?

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

gtandrey пишет:

Гуру подскажите (гугл не помог :).  У меня в проекте 3 ползунка (RGB).  При их изменении сразу передаю в ардуино, чтобы сразу демонстрировать цвет.

И чтобы уменьшить количество байт. Возможно ли конвертировать значение ползунка в HEX (у меня значения от 0 до 255) и передать в порт ардуино?

Т.е. пакет с типом 0X71 вас не устраивает из-за того, что там 4 байта передаётся как число? Сходу решение - cov в текст, потом get текстовую переменную, можно сэкономить как минимум 1 байт. Но - там будет в DEC, не в HEX всё равно - поэтому, сказав про экономию минимум 1 байта - имел в виду, что три байта DEC 123 в строке "123" займут на байт меньше места, если передавать get'ом значение ползунка как число (где под число по-любому отведено 4 байта). Если же значения ползунка по большей части находятся в диапазоне двузначных чисел - тогда cov + get сэкономят 2 байта.

А так, из-за скудности внутреннего языка - ручками, пмсм, будет секас с реализацией, хотя там всего ничего кода, буквально пару строчек, на примере дуни:

const char HEX_CHARS[]  PROGMEM = {"0123456789ABCDEF"};

int idx = byteWithValue & 0xF;
  char char1 = (char) pgm_read_byte_near( HEX_CHARS + idx );
  i>>=4;
  idx = byteWithValue  & 0xF;
  char char2 = (char) pgm_read_byte_near( HEX_CHARS + idx );

И всё - в char1 и char2 - лежит что надо. Конечно, можно поизвращаться и на Nextion, но - стоит ли оно того?

З.Ы. Если я ничего не пропустил в документации по Nextion, конечно.

sadman41
Offline
Зарегистрирован: 19.10.2016

Дисплей не передаёт байты, а передает исключительно строки?

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

sadman41 пишет:

Дисплей не передаёт байты, а передает исключительно строки?

Не, передаёт и байты, пакет 0x71 - это передача числа в little-endian, 4 байта на ЛЮБОЕ число. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто я не совсем понял в чем проблема передать 0..255 одним байтом и чем поможет конвертация DEC->HEX. Давно смотрю на эти дисплеи и думаю - стоит взять поиграться или нет? Если там такие странные финты нужны, то пока обожду ))

sadman41
Offline
Зарегистрирован: 19.10.2016

Просто я не совсем понял в чем проблема передать 0..255 одним байтом и чем поможет конвертация DEC->HEX. Давно смотрю на эти дисплеи и думаю - стоит взять поиграться или нет? Если там такие странные финты нужны, то пока обожду ))

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

sadman41 пишет:

Просто я не совсем понял в чем проблема передать 0..255 одним байтом и чем поможет конвертация DEC->HEX. Давно смотрю на эти дисплеи и думаю - стоит взять поиграться или нет? Если там такие странные финты нужны, то пока обожду ))

Там свой формат пакетов: хочешь передать число - помимо обвязки будь добр получить 4 байта как число, даже если его значение помещается в 1 байт.

Поиграться - однозначно стоит, вещь годная. Но - ITEAD не развивается, что печально. Давно подмывает сделать что-то подобное Nextion, с блекджеком и... - но останавливает, помимо нехватки времени, объективное понимание объёма работ. Пмсм, ниша удобных HMI-дисплеев ещё не занята полностью, и если предложить решение, перекрывающее Nextion - спрос будет. Но - только не у нас, есно: в нашем болоте не взлетит.

gtandrey
Offline
Зарегистрирован: 04.11.2016

Почесал репу и нашёл решение :)

printh ff
va0.val=h2.val
va0.val*=256
va0.val+=h1.val
va0.val*=256
va0.val+=h0.val
print va0.val
printh ff ff ff

есть нечтожный минус - ползунки теперь от 0 до 254.

gtandrey
Offline
Зарегистрирован: 04.11.2016

всем спасибо что откликнулись

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

gtandrey пишет:

Почесал репу и нашёл решение :)

printh ff
va0.val=h2.val
va0.val*=256
va0.val+=h1.val
va0.val*=256
va0.val+=h0.val
print va0.val
printh ff ff ff

есть нечтожный минус - ползунки теперь от 0 до 254.

Ну так это не совсем то, о чём вы вопрошали, не? Тут ясно, что вам надо было все три значения в одном пакете отправить. Да, решение интересное и очевидное, но - по вводным было непонятно, что именно нужно. А так - в документации написано:

print j0.val //returns val’s property value of component j0 in 4-byte hexadecimal data

Т.е. необязательно юзать printh и делать свой псевдопакет - достаточно в любую числовую переменную сделать то, что вы делали, и позвать get va0.val - тогда на выходе получим штатный пакет 0x71, где показания трех ползунков объединены в одно число.

Без обид, но: в следующий раз так и спрашивайте - "как объединить показания трёх ползунков в одно число". А то непонятки - рождают непонятки.

gtandrey
Offline
Зарегистрирован: 04.11.2016

конечно без обид :)

в голове то я всё сказал, а вот изложил не всё

Ursinoid
Offline
Зарегистрирован: 04.03.2018

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

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

Ursinoid пишет:

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

Если UART не работает, то, боюсь, что никак - у него интерфейс общения только по UART, по SD-карточке - только перезакачка прошивки.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ursinoid пишет:

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

если UART железно сдох, то можно перманентным маркером организовать передачу информации.  Нарисовать на экранчике крестик и положить в ведро. 

Ursinoid
Offline
Зарегистрирован: 04.03.2018

Печально конечно,а я уж было его приспособил на приборку в авто. Придётся что-то другое придумывать.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Привет друзья)

Покупал много уже дисплеев Nextion, ссылка на дисплей , устанавливал в дверцы щитов, но теперь пришлось колхозить, нужно было на стену повесить, а как его вешеть, если крепление дисплея предназначено для установки на дверь щита и т.п.

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