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

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

Метки:
  1. Lazycat

    Lazycat Нуб

    Зачем два таймера? Не понял. У меня моргает равномерно, вроде. У Вас моргает в дебагере или уже с подключенной ардуиной?

    Код (Text):

    if(ClockDivision.pco==0)
    {
      ClockDivision.pco=65535
    }else
    {
      ClockDivision.pco=0
    }
    if(DayNumber.val==1)
    {
      ClockDay.txt="Воскресенье"
    }
    if(DayNumber.val==2)
    {
      ClockDay.txt="Понедельник"
    }
    if(DayNumber.val==3)
    {
      ClockDay.txt="Вторник"
    }
    if(DayNumber.val==4)
    {
      ClockDay.txt="Среда"
    }
    if(DayNumber.val==5)
    {
      ClockDay.txt="Четверг"
    }
    if(DayNumber.val==6)
    {
      ClockDay.txt="Пятница"
    }
    if(DayNumber.val==7)
    {
      ClockDay.txt="Суббота"
    }
     
    Здесь ClockDivision - двоеточие, DayNumber - Var, получаемое с ардуино( в моем случае - ESP8266 ), ClockDay - текстовое поле дня недели.
    Каждый тик (1 сек) идут проверки на значение переменной и присвоение соответствующего значения цвета двоеточию или надпись дня недели
     
    Последнее редактирование: 9 фев 2018
  2. PaulIV

    PaulIV Нерд

    Спасибо, Lazycat
    У меня ардуинка посылает данные раз в минуту в дебагере (чего занимать интерфейс каждую секунду).
    И как бы показания часов статичны в течение минуты. Вот я и воспользовался Вашим советом и решил оживить символ : (типа один таймер 400 мс закрашивает : и второй 600мс показывает черным)...
    Вот ерунда и получилась :)
     
  3. PaulIV

    PaulIV Нерд

    Всем привет.
    Спешка хороша только в двух случаях: при ловле блох и при ... :)
    Частично стер и еще раз набрал и " : " начало моргать нормально.
    Смог одну пару цифр передать, принять-переработать в ардуинке и снова в дисплей отправить.
    Народ, всем спасибо за Ваши рекомендации и примеры.
     
  4. DIYMan

    DIYMan Гуру

    Для не желающих разбираться, как там устроен посыл команд в Nextion - написал простенькую обёртку: https://drive.google.com/file/d/15Lc7PBysHaMPMSf-gYHDpwkWR5i-eN0C/view?usp=sharing

    Можно кинуть два файла рядом с *.ino-файлом, подключить, и юзать, примерно так:

    Код (C++):
    #include "CoreNextion.h"

    Nextion nextion(Serial);

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

      nextion.begin();
      NextionText text("text");
      text.bind(nextion);
      text.text("bla bla");
    }

     
    Короче, там в примере описано, если что. Есть события, приходящие от Nextion, если надо - в примере тоже есть. Возможно, кому пригодится.
     
    ИгорьК нравится это.
  5. Belkin

    Belkin Гик

    Возможно, что-то недовкурил... ;)
    Отсылаю по UART в Nextion сформированную строку: "page0.obor.val=";rezultat;fin"
    Столкнулся с проблемой - как мне использовать значение "rezultat" побитно ?
    Каждый бит этого значения определяет состояние оборудования "вкл/откл" и это надо отобразить на состоянии кнопок на разных страницах.
     
  6. DIYMan

    DIYMan Гуру

    Никак на стороне Nextion. Если хотите устанавливать состояние различных кнопок на Nextion - то анализируйте биты вашего rezultat (правильно по-английски, кстати, будет result) и отсылайте на Nextion команды для установки состояния конкретных кнопок, profit.
     
    Belkin нравится это.
  7. Belkin

    Belkin Гик

    Вопрос не "правильном английском", это - имя переменной... ;)
    За остальное спасибо, придется корячиться... ;)
     
  8. DIYMan

    DIYMan Гуру

    Глаз режет :)
     
  9. serg7652

    serg7652 Нуб

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

    serg7652 Нуб

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

    Belkin Гик

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

    DIYMan Гуру

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

    Belkin Гик

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

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

    DIYMan Гуру

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

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

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

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

    Belkin Гик

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

    Belkin Гик

    А Nextion Editor, как я понял, имеет свою имитацию терминала и с внешним миром общаться не умеет ?
    Пока ни терминальной программой, ни с живым МК через переходник USB-UART связи не получилось, хотя МК и комп (терминал) друг с другом беседуют через переходник.
     
  17. 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));
    }
     
  18. alp69

    alp69 Гик

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

    timon131 Нуб

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

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

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