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

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

Метки:
  1. AndreyFly

    AndreyFly Нерд

    Подскажите, экран у меня совсем недавно, еще не сильно разобрался, но появилась мысль, которая не дает мне покоя. У расширенной версии есть 8 GPIO портов, возможно ли повешать на них 16 кнопок? Кто нибудь вникал в работу портов? Идея такая: Стандартная клавиатурная матрица 4х4. По встроенному таймеру стробируются 4 вывода GPIO, и при нажатых кнопках на одном из 4 входов (или на нескольких) будет имитация нажатия кнопок. Там же при обработке по таймеру переназначать кнопки? Или это невозможно?
     
  2. ИгорьК

    ИгорьК Гуру

    Вы систему команд его видели? И все еще желание остается?
    Что мешает эти кнопки на экране то сделать?
     
  3. AndreyFly

    AndreyFly Нерд

    Экран к токарному станку собираюсь прикрутить, масляными руками в экран не очень охота лезть, вот цифровое поле 0-9 и несколько функций и хотел вынести на физические кнопки, но если не возможно, то стилус на веревочке подвешу рядом с экраном.
    И да, система команд у экрана специфическая :)
     
    ИгорьК нравится это.
  4. ИгорьК

    ИгорьК Гуру

    По секрету: Arduino Pro mini даже у Амперки стоит дешево.
     
  5. AndreyFly

    AndreyFly Нерд

    Там мега уже трудится, хотел вообще все меню и кнопки на некстион перенести, А так с китая ардуино нано - целая упаковка для опытов лежит.
    И мегу в планах поменять на DUE, но пока не разобрался с STM, да и DUE еще не приехала для экспериментов. Сам проект сильно впритык в меге по прерываниям и вычислениям, а в DUE и математика 16 битная побыстрее.
     
  6. ИгорьК

    ИгорьК Гуру

    Ну и завесьте клаву на нее, а информацию передайте в Мегу по UART.
     
  7. Avo

    Avo Нуб

    Здравствуйте!
    Прошу помочь начинающему.

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

    Пытаюсь разобраться на простом скетче.

    Итак, есть дисплей Nextion и плата arduino Uno. Tx дисплея подключаю к Rx arduino, и Rx к Tx соответственно.
    Питание диспея от ардуины, а самой ардуина- от USB.

    На странице дисплея с именем "Length_p" (page 5) есть глобальная переменная "L".
    Значение этой переменной меняется через меню дисплея.

    Необходимо переменной "L_a" (в ардуино) присвоить значение переменной "L".

    Код в ардуино:

    Код (C++):
    #include <SoftwareSerial.h>
    #include <Nextion.h>

    int L_a;
    NexVariable L_d=NexVariable(0,3,"Length_p.L");

    void setup()
    {
    Serial.begin(9600);
    nexInit();
    }

    void loop()
    {
    L_d.getValue(L_a);
    Serial.println (L_a);
    delay(1000);
    }
    При этом, независимо от того, подключен дисплей к ардуине, или нет, у меня монитор порта выдаёт :

    яяяbkcmd=1яяяpage 0яяяget Length_p.L.valяяя0
    get Length_p.L.valяяя0
    get Length_p.L.valяяя0
    get Length_p.L.valяяя0
    .
    .
    и т.д.

    Просьба к знатокам подсказать, где ошибка в скетче.
     
    Последнее редактирование: 10 май 2017
  8. ИгорьК

    ИгорьК Гуру

    Snap_2017.05.10_17h27m14s_015.jpg
    Здесь пасутся только олухи, которые не работают с Nextion при помощи библиотек. Знатоки встречаются редко.
     
    AndreyFly нравится это.
  9. AndreyFly

    AndreyFly Нерд

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

    Avo Нуб

    Спасибо, что ответили))
    Ветку читал с начала. Поскольку Си изучается вместе с Arduino, то не так всё просто.
    Мне пока проще работать с библиотеками.

    В общем, помучившись, с помощью YouTube и различных форумов, удалось понять как она работает.
    Во-первых, в файле "NexConfig.h" необходимо исправить ошибки:
    - 27-ую строку ("#define DEBUG_SERIAL_ENABLE") - закомментировать
    - 37-ой строке ("#define nexSerial Serial2") - убрать "2" (должно получиться "#define nexSerial Serial")

    Еще у меня была ошибка в строке:
    было
    Код (C++):
    L_d.getValue(L_a);
    должно быть:
    Код (C++):
    L_d.getValue(&L_a);
    Arduino по прежнему выводит какие-то непонятные значения, но, в принципе, работе с переменными это не мешает
     

    Вложения:

    • NexConfig.h
      Размер файла:
      1,3 КБ
      Просмотров:
      724
    Последнее редактирование: 23 май 2017
  11. Avo

    Avo Нуб

    Для таких же как и я, начинающих, выкладываю очень простой рабочий скетч с подробными комментариями для демонстрации работы библиотеки "ITEADLIB_Arduino_Nextion-master"

    В файле "var.HMI.ino" ".ino" нужно удалить (почему-то при попытке прикрепить нормальный файл выводится сообщения, что "файл с таким разрешением нельзя загрузить"
     

    Вложения:

    • var.HMI.ino
      Размер файла:
      253,5 КБ
      Просмотров:
      810
    • var.ino
      Размер файла:
      4,7 КБ
      Просмотров:
      795
  12. ИгорьК

    ИгорьК Гуру

    В работе с Некстион это неправильное направление. Вы сами связываете себе руки и тратите время зря.
     
  13. ИгорьК

    ИгорьК Гуру

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

    В общем, именно для начинающих в особенности, рекомендую понять что ходит между дисплеем и мк и как оно формируется "ручками". Для этого все в этой теме есть.
     
    Последнее редактирование: 23 май 2017
  14. Avo

    Avo Нуб

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

    Самый большой недостаток- это память жрет. Но я пока разрабатываю не сложные устройства, так что памяти хватает. Например, сейчас делаю макрорельсы типа таких:
    http://evtifeev.com/25646-obzor-elektricheskih-fokusirovochnyih-relsov-dlya-stekinga-stackshot.html
    Там ардуина будет брать значение нескольких переменных и управлять шаговым двигателем. Т.е. памяти много не надо.

    Это мой первый проект с использованием Nextion, а вообще 3-й. Так, что я совсем начинающий. Стою на распутье)))
    Поэтому буду очень благодарен если Вы распишите +/- использования и неиспользования библиотек с Nextion.
    А то фраза из одного из первых постов темы "библиотекa только мешает" не очень понятна.

    Спасибо!
     
  15. Avo

    Avo Нуб

    Думаю, это проект доделаю и буду пытаться без библиотеки работать, мыслей ещё много.

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

    А вообще, очень удобная штука эти Nextion
     
  16. ИгорьК

    ИгорьК Гуру

    Если коротко, то общаться с иностранцем можно на его языке или при помощи переводчика.
    Переводчик - это время и деньги. А в данном случае и "переводчик" (библиотека) еще и плохой - Вы же ее правили.
    Это очень коротко.
    Убеждать Вас ни в чем не буду - Ваше право поверить или действовать по своему усмотрению.
    Найдите мой проект инкубатора и попробуйте для тренировки повторить его с библиотекой для Некстион.
     
  17. ИгорьК

    ИгорьК Гуру

    Обучению программированию помогают учебники.
     
  18. Avo

    Avo Нуб

    Я не в коем случае с Вами не спорю. Спасибо за советы.

    В дальнейшем, я конечно, попробую без библиотеки справится с дисплеем.
    Но пока для меня Си- это и есть иностранный язык, в котором я только освоил фразы типа "What is your name?")))

    Да и обидно начинать сначала, когда потратил на изучение уже три недели. Доделаю макрорельсы, а там посмотрим. Есть ещё мысль сделать устройство для фотографирования капель с использованием дисплея
     
  19. ИгорьК

    ИгорьК Гуру

    Любое устройство, не только этот дисплей, имеет свой протокол общения.
    Иногда он чрезвычайно сложен и разнообразен, требуется безумно время чтобы с этим разобраться.
    Тогда мы применяем библиотеки, чтобы не тратить время.
    Здесь ситуация обратная. Нужно тратить время чтобы понять библиотеку, а протокол, как раз, раскрыт в одном посте на передачу и в другом на прием.
    ПС. Вот и Амперка без библиотек работает: http://wiki.amperka.ru/продукты:nextion
     
    Последнее редактирование: 26 май 2017
  20. VXXXV

    VXXXV Нуб

    Подскажите, с ардуины можно послать на дисплей русский текст? Что то типа "Пн", "Вт"....