Дисплей Nextion: азы. Arduino, ESP8266.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 9 авг 2016.

Метки:
  1. skalinas

    skalinas Нерд

    Добрый вечер! А не про то спрашивал.
    Если Вы зальете в ардуино мой скетч и в эмуляторе экрана запустите проект в работу.
    То при нажатии на поле Dat0, открывается четвертая страница, там можно ввести любое значение и нажать Готово. Данные при нажатии отправляются в ардуино (индивидуальный номер, он равен для этого поля 18 и набранное значение), в ардуино они дешифруются и отправляются опять на первый экран в поля Temp10 и Dat0. Кнопки Жми - это просто переход на другие экраны, к вопросу не имеют отношение.

    Вопрос был в том, что бы передавать и дешифровать данные в ардуино в формате:

    print "#р"
    print
    va0.txt - индивидуальный номер (в ардуино сохранить в переменной nn= целое число)
    print ":"
    print
    va1.txt - данные (в ардуино сохранять в переменной dd= число с плавающей запятой)
    print ";"

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

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

    print "#р" - определяем кто передает информацию
    print va0.txt - индивидуальный номер (в ардуино сохраняю в переменной nn= целое число)
    print ";"

    print "#d" - данные
    print va1.txt - данные (в ардуино сохраняю в переменной dd= число с плавающей запятой)
    print ";"
     
    Последнее редактирование: 27 ноя 2017
  2. ИгорьК

    ИгорьК Гуру

    Аааа.... Ну понял.
    Так работает? Не трогай!

    Иначе сам... Я ардуино не люблю и тратить время не хочется.

    Вот смотрите - вы делаете две типовые посылки. В порт приходят типовые данные(условно):
    "#p123;" и "#d321;"
    Каждый пакет данных передается все равно ТРЕМЯ посылками. Получается 2 пакета по 3 отправки.
    Итого 6 посылок. (Сильно переживаете? :) )

    Вы можете сэкономить - отправить что-то типа:
    "#p:123,d:321;"
    или в формате json:
    {p:123,d:321}

    Вот его и надо словить и распарсить. (Для этого есть библиотека - ищите.)
    Не сможете сами - смело создавайте отдельную тему с названием Распарсить JSON и вам обязательно помогут.

    Но, оно Вам надо...?
     
  3. skalinas

    skalinas Нерд

    В общем, сделал как хотел. Сейчас очень удобно вводить данные, практически нет ограничений. Данные с экрана записываются в EEPROM ардуино, при старте считываются и отправляются в Nextion.
    Реализовал такую посылку с дисплея print "#р 09 : 12.42" ; Где 09 – уникальный номер (00..05…99 – обязательно нужно вводить две цифры), : - разделительный знак, 12.42 – сами данные (float -ограничил 7 знаками). Для отправки данные (страницы, поля и т.д.) берутся из массивов и выбираются по уникальному номеру. По кнопкам передачу с экрана сделаю аналогично.
    Всем спасибо и удачи.
     

    Вложения:

    Последнее редактирование: 29 ноя 2017
    ИгорьК нравится это.
  4. Sadesign

    Sadesign Нерд

    Здравствуйте!
    Только начал изучать этот Nextion, прошу подсказки.
    Одна из страниц (экранов) в проекте выглядит так: суточный график температуры из 24 слайдеров. Как сделать так, чтоб при нажатии на зеленую кнопку "ОК" значения всех 24 скопом записывались в одну строку и отправлялись на Ардуино? И почему при переходе на другую страницу перестают считываться значения с этих слайдеров?


    Screen.png
     
    Последнее редактирование: 13 дек 2017
  5. событие по кнопке ОК - print со значениями слайдеров.http://forum.amperka.ru/posts/139072
    а зачем считывать их на другой странице, они же все-равно не изменятся?
     
    Sadesign нравится это.
  6. Sadesign

    Sadesign Нерд

    Да, спасибо. Понемногу разбираюсь - становится всё понятнее. )

    Заодно спрошу - какое решение выбрать? Мне нужно вынести дисплей на 15-20 метров от Ардуино. Проводами. Как проще и лучше поступить?
     
    Последнее редактирование: 13 дек 2017
  7. DIYMan

    DIYMan Guest

    RS-485, как вариант.
     
    Sadesign нравится это.
  8. Sadesign

    Sadesign Нерд

    А без Ардуино на стороне дисплея не получится по RS-485 дисплей к контроллеру подключить? )
     
  9. DIYMan

    DIYMan Guest

    Хрен его знает, я не задавался вопросом - есть ли автоматический конвертер UART-RS485, возможно, оно существует в природе, хз.
     
  10. Sadesign

    Sadesign Нерд

    Буду пробовать с RS-422. RS-485 не взлетит - желателен же полный дуплекс.
     
  11. Sadesign

    Sadesign Нерд

    Еще спрошу - как выводить значение со слайдера в поле "Number" с одним знаком после запятой? К примеру, слайдер от 1 до 100, а значения выводить в виде 0,0 - 10,0.
     
  12. DIYMan

    DIYMan Guest

    На скрине всё видно:
    screen.png

    Код:
    Код (C++):

    va0.val=h0.val/10
    va1.val=h0.val%10
    cov va0.val,va2.txt,0
    va2.txt+=","
    t0.txt=va2.txt
    cov va1.val,va2.txt,0
    t0.txt+=va2.txt
     
    Три переменных на экране: va0 и va1 - числовые, va2 - текстовая. Обработчик у слайдера - Touch Release Event. Всё, что понадобилось для написания - это прочитать инструкцию: https://www.itead.cc/wiki/Nextion_Instruction_Set#cov:_variable_type_conversion

    Можно оптимизировать, уменьшив кол-во промежуточных переменных: как - не скажу, думайте, за всех всю работу не сделаешь.
     
    Последнее редактирование модератором: 16 дек 2017
    Sadesign нравится это.
  13. Sadesign

    Sadesign Нерд

    Спасибо, стало понятно. )

    Предположу, что можно обойтись и двумя переменными. Вроде, работает. )


    va0.val=h0.val/10
    cov va0.val,va1.txt,0
    va1.txt+=","
    t0.txt=va1.txt
    va0.val=h0.val%10
    cov va0.val,va1.txt,0
    t0.txt+=va1.txt
     
  14. Sadesign

    Sadesign Нерд

    Кто-нибудь в курсе - в Nextion Editor функция Zoom экрана назло пользователям не предусмотрена, или я её просто не нашел?!
     
  15. DIYMan

    DIYMan Guest

    Что за Zoom? Не нашёл ничего подобного в спецификации по командам. Вы просто масштабирование хотите, и считаете, что от вас его прячут? Гугль по запросу "nextion zoom" ничего внятного не выдаёт, да и я в первый раз об это слышу, в разрезе Nextion.
     
  16. Sadesign

    Sadesign Нерд

    Я имел ввиду элементарное увеличение отображения дисплея на мониторе компьютера. Как приближение картинки в каком-нибудь Фотошопе. Иногда очень неудобно расставлять мелкие элементы.
     
  17. DIYMan

    DIYMan Guest

    Ааа, вот вы о чём. Не видел такого функционала в редакторе.
     
  18. alp69

    alp69 Форумчанин

    Как вариант - уменьшить разрешение экрана монитора компьютера.
     
    Sadesign нравится это.
  19. ИгорьК

    ИгорьК Гуру

    Да, невозможность увеличить поле дисплея в редакторе выбешивает: работать очень не удобно. Благо - сделал и забыл. Не часто с этим дисплеем работать приходится.
     
  20. Sadesign

    Sadesign Нерд

    Да, так и делаю. )
    "Почувствуй себя в 1998-ом!"
     
    Последнее редактирование: 19 дек 2017