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

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

Метки:
  1. serg7652

    serg7652 Нуб

    Здравствуйте! Подскажите пожалуйста, а что означает данная строчка
     
  2. serg7652

    serg7652 Нуб

    Спасибо, почти разобрался сам. Тернарный оператор.
     
  3. Belkin

    Belkin Гик

    Вопрос по отправке значений...
    Заглобалил уже все, что только можно (кроме графики), но отправка по UART нужного значения (из конкретного поля) получается только, если активна страница, где существует это поле.
    Отправка ведется событием таймера (тоже global).
     
  4. DIYMan

    DIYMan Гуру

    Как обращаетесь к полю?
     
  5. Belkin

    Belkin Гик

    Возможно, неточно объяснил, сорри... ;)
    Из дисплея отправить, а не в дисплей.
    На page0 есть таймер, по событию которого идет отправка.

    В дисплей запихать без проблем...
     
  6. DIYMan

    DIYMan Гуру

    Вот из кода таймера как обращаетесь к полю? С указанием страницы?

    Правка: проверил в симуляторе - несмотря на global, таймер активен только, когда активна страница, его содержащая. Сейчас попытаюсь найти решение.

    Вот отсюда: http://support.iteadstudio.com/support/discussions/topics/11000005749/page/2?url_locale=

    Вывод - на каждой странице по таймеру, а что делать, если жизнь такая?
     
    Последнее редактирование: 19 апр 2018
    Belkin нравится это.
  7. Belkin

    Belkin Гик

    Пришел уже к такому же выводу и сделал одинаковые обработчики на всех страницах.
    Теперь работает, как планировалось.
    Спасибо !
     
  8. Belkin

    Belkin Гик

    А Nextion Editor, как я понял, имеет свою имитацию терминала и с внешним миром общаться не умеет ?
    Пока ни терминальной программой, ни с живым МК через переходник USB-UART связи не получилось, хотя МК и комп (терминал) друг с другом беседуют через переходник.
     
  9. timon131

    timon131 Нуб

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

    Код:
    String message = myNextion.listen(); //check for message
    int value = myNextion.getComponentValue("page1.n0");
    if (message == "65 1 3 1 ffff ffff ffff" & value == 150)
    {
    digitalWrite(rele, HIGH);
    }

    if(potent>=130 & value == 150 ) {digitalWrite(rele, LOW);}
    potent = (analogRead(pot)/2);
    myNextion.setComponentText("page1.t0", String(potent));
    }
     
  10. alp69

    alp69 Гик

    Не силен в работе с Nextion, но что я вижу:
    1. Нечетное количество фигурных скобок. В последней строке стоит закрывающая скобка, а открывающей не увидел.
    2. Переменная potent. Сначала Вы ее сравниваете со значением 130, а потом только присваиваете ей значение. Вообще-то должно быть наоборот. Или это намеренно "вывернутая" логика?
    3. Ну а по поводу "включалось при каждом нажатии", тут предположений два. Первое - устраняйте дребезг кнопки. Второе - делайте задержку между подачей высокого уровня на реле и проверкой условия на его выключение. Возможно оно не успевает включиться, как его тут же "гасит" команда на выключение, сформированная при выполнении условия.
     
    Последнее редактирование: 9 май 2018
  11. timon131

    timon131 Нуб

    скобка есть в void loop. Просто не скопировал ))) Так бы ошибка выскакивала...)) Насчет Potent нет, это не "вывернутая" логика..))) Просто эту эту строку пробывал ставить в разные места и, так получилось,что поставил не туда и скопировал вам сюда так.. Это мой косяк, но Вам "+", что увидели...))). Нвсчет дребезга, его здесь нет... это же не механическая кнопка, а сенсорная... И устройство устроено так, что преждевременно оно никак не отключит его.
     
  12. ИгорьК

    ИгорьК Давно здесь Команда форума

    тема должна была скатиться к вопросам про библиотеку от Nextion... Ардуино...
     
  13. ИгорьК

    ИгорьК Давно здесь Команда форума

    Научись хотя бы код в тему вставлять.
     
  14. timon131

    timon131 Нуб

    Часть кода у меня вставлена нормально, просто с опечаткой. Это дураку понятно, что с такой опечаткой он бы не работал. А у меня он работает... я же конкретно задал вопрос: Почему кнопка не всегда с первого раза включает реле, т.е не всегда проходит код с кнопки, а иногда просто шлет ???...
     
  15. alp69

    alp69 Гик

    Юноша, не хамите! Не надо оправдывать свои ошибки предполагаемой Вами (весьма ошибочно) необразованностью собеседника. Если Вы такой умный, то что же тогда за помощью обратились?Прежде чем пытаться скатиться на оскорбления, устраните кривизну своих рук. И научитесь излагать свои мысли так, чтобы собеседник не должен был догадываться о сути Вашего вопроса. Если Вам нужен ясновидящий - меняйте форум.
    На этом считаю для себя неприемлемым продолжение попыток помощи Вам.
     
    Последнее редактирование: 13 май 2018
    9xA59kK нравится это.
  16. Belkin

    Belkin Гик

    При добавлении изображения на объект Button уже имеющегося проекта на изображении (поверх) проявляются черные буквы "ne". Дальше не видно из-за маленького (100х100) объекта...
    Да и сами буквы видны на 70-75% сверху, нижняя часть скрыта.
    Так же они видны и при Debug...
    Программа при этом отрабатывает нормально.
    На самом изображении этих букв нет...
    Кто сталкивался, что за дрянь ?

    UP.
    Вопрос решен.
    Вместо Button использован Picture.
    Видимо, есть ограничение на количество однотипных объектов, Button было 12, а проблемный стал 13-м. ;)
     
    Последнее редактирование: 10 июн 2018
  17. Jendos77

    Jendos77 Нерд

    Благодарю!
    Проект теперь парсит целые строки с названиями городов и паролями WIFI в настройках метеостанции.
    Код (C++):

    void getNextionData()
    {
      while (Serial.available())
      {
      char inn = Serial.read(); // читаем один символ
      if(serialReadFlag)
      { // Если установлен флаг приема - действуем
      if(inn == 0xFF)
      {  // Находим конец передачи "FF"
      if(inStr.length() > 0)
      { // Проверяем длину сообщения и отправляем в "переработку"
      checkCommand(inStr); // В этой функции будем парсить сообщение
      }

      serialReadFlag = false; // Сбрасываем флаг приема
      break;
      }else
      { // А это нормальный прием
      inStr += (char)inn; // Создаем String от Nextion
      //inStr.trim();  // Это можно удалить, просто для ручной настройки,
      // а там возникает перевод строки
      }
      }else
      { // А здесь отлавливается начало передачи от Nextion
      if(inn == 0x23)
      { // Символ "#"
      serialReadFlag = true; // После # начинаем чтение при следующем заходе
      inStr = ""; // Но до этого очистим стринг приема

      }
      }
      }
    }
    void checkCommand(String ins)
    {
      // У нас информация от Nextion состоит из двух частей,
      // первая буква - идентификатор действия
      // ловим его:
      String first = ins.substring(0,2);
      // А все остальное - данные:
      String last = ins.substring(2);

      if(first == "1p")
      {
      String city = last;
      }
      if(first == "2p")
      {
      String state = last;
      }
      WOUpdate = true;
    }
     
     
    ИгорьК нравится это.
  18. Чего-то запутался с отрицательными числами, в итоге плюнул. Вычесть из 100 значение (отрицательное или положительное), а на другой стороне провести обратную операцию оказалось проще.
     
  19. Belkin

    Belkin Гик

    А если повнимательнее почитать доки, то выяснится, что Nextion работает только с целыми положительными числами...
    И плеваться не пришлось бы... ;)
     
  20. Библиотека не работает, а сам Nextion - на ура