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

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

Метки:
  1. MAXKIT

    MAXKIT Нуб

    А теперь ещё раз мой вопрос прочитайте.
    Не экрану, а экраном. У экрана есть команды "print", "prints", "printh"
     
  2. DIYMan

    DIYMan Guest

    Код (C++):
    print "123\n"
    Не канает?
     
  3. MAXKIT

    MAXKIT Нуб

    Нет, ругается на эту строчку
     
  4. MAXKIT

    MAXKIT Нуб

    Спасибо кто откликнулся, способ нашёл
    Код (C++):
    printh 0A
    printh 0D
     
  5. PaulIV

    PaulIV Нерд

    Всем привет.
    Мне нужна подсказка. Смог передать с ардуинки на Nextion инфо от DS3231. На дисплейчике то, что хотел отображается. Проблема с днем недели. Могу настроить, чтобы отображались 3 латинские буквы дня недели. Могу отобразить номер дня недели (0...6). Но хочется сделать чтобы были 2 буквы на кириллице. (ВС,ПН...ПТ). Вроде, как и сделал. Но для того, чтобы обновилась запись из двух букв надо с одной страницы на другую перейти и обратно. Т.е. в режиме оn-line, без перехода со страницы на страницу, буквы не меняются. Может, есть какой рецепт?
    На экране следущее:
    16 : 40 2
    06-02-2018

    2 - это ВТ.
    Код (C++):
    // WeekRTC = "\"" + String(time.gettime("w")) + "\"";  
    // Это в ардуине w - номер дня недели
    ..........
    Это в Nextion
    cov w.txt,n0.val,0 // конвертация String в ЧИСЛО
    va0.val=n0.val
    if(va0.val==0)  // если день недели =0
    {
      t3.txt="ВС"  // на экране будет Воскресенье
    }else if(va0.val==1)  // если день недели =1
    {
      t3.txt="ПН"  // на экране будет Понедельник
    }else if(va0.val==2)  //
    {
      t3.txt="ВТ"  //
    }else if(va0.val==3)  //
    {
      t3.txt="СР"  //
    }else if(va0.val==4)  //
    {
      t3.txt="ЧТ"  //
    }else if(va0.val==5)  //
    {
      t3.txt="ПТ"  //
    }else if(va0.val==6)  //
    {
      t3.txt="СБ"  //
    }
     
     
  6. DIYMan

    DIYMan Guest

    Подсказка:
    Код (C++):
    ref t0 //refresh component t0
     
  7. PaulIV

    PaulIV Нерд

    Дима, спасибо. Пробовал. Пока не помогло. (возможно, что я еще что-то нахимичил :) а пока не увидел что)
    Буду еще пробовать, проверять что написал...
    Наверное, проще в коде ардуинки создать две буквы ВС и отправить в дисплей. Но не хотел лишнего писать в коде ардуинки.
     
  8. PaulIV

    PaulIV Нерд

    Всем привет.
    Пока не смог исправить то, что ранее написал. Остановился пока на Латинице для дней недели при приёме в Nextion.
    Есть другой вопрос, если у кого будет желание, помогите.
    Сделал страницу по настройке часов в Nextion (см рисунок). При нажатии на кнопку "дискета", в сторону ардуинки уходят актуальные данные (типа) - #C0,35,10,25,11,18,5; Т.е. формат для команды в ардуинке я сделал - time.settime(0,51,21,27,10,15,2); // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник
    А вот c функцией в ардуинке, где надо парсить сообщение ...
    Код (C++):
    void checkCommand(String ins) {
        // У нас информация от Nextion состоит из двух частей,
        // первая буква - идентификатор действия
        // ловим его:
        String first = ins.substring(0,1);
        // А все остальное - данные:
        String last = ins.substring(1);

        //Например "c" - идентификатор установки температуры
        if(first == "c") { // 'c'  ASCII Value: 99
    с этим у меня, виноват, напряг. Может, #ИгорьК , Вы подскажете.
    Заранее всем спасибо.
     

    Вложения:

  9. Lazycat

    Lazycat Нуб

    Дык, время же отображаете? Наверное и двоеточие мигает (по сути меняет цвет). А значит есть таймер. на таймер вешаете и обработку мигания двоеточия и проверку дня недели.
     
  10. ИгорьК

    ИгорьК Гуру

    Давно не писал для Си. Там делал пример как парсить типовую посылку. Отправьте все не единым блоком а отдельными командами. Все равно на стороне ардуино будете разбирать. Какая разница как их слать.
     
  11. ИгорьК

    ИгорьК Гуру

    Или найдите здесь мой проект инкубатора - там чего только не парсится.
     
  12. PaulIV

    PaulIV Нерд

    Всем привет.
    Этого у меня не было - решил сделаю. Добавил один таймер, указал t0.pco=65504 (желтый) длительность 600, добавил второй таймер, указал t0.pco=0 (черный) длительность 1000. Ну, думаю - шик. Почти анимация :)
    Запустил. Может я чего-то в этом не догоняю? Но эффект меня огорчил... Ну, думаю, надо на пустом проекте опробовать. Сделал тоже самое. :( Фигня полная. У Вас #Lazycat моргает так, как на обычных часах или живёт своей жизнью этот символ : ? Может, я этот китайский продукт не понял? Менял длительности и "дивился на нибо"... Равномерно "мигать" так и не получилось. И с буквами всё так же. Пока со страницы на страницу не передешь/вернешься - не изменяется... :(
     
    Последнее редактирование: 9 фев 2018
  13. 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
  14. PaulIV

    PaulIV Нерд

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

    PaulIV Нерд

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

    DIYMan Guest

    Для не желающих разбираться, как там устроен посыл команд в 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, если надо - в примере тоже есть. Возможно, кому пригодится.
     
    ИгорьК нравится это.
  17. Belkin

    Belkin Гик

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

    DIYMan Guest

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

    Belkin Гик

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

    DIYMan Guest

    Глаз режет :)