Nextion Display не получает обновленных данных

Я использую Arduino Mega для отображения показаний 4 горшков на дисплее Nextion, а также для хранения его на SD-карте с отметкой времени. Я продолжаю получать:

recvRetCommandFinished err

на последовательном мониторе дисплей не обновляется со временем.

Я приложил свой код ниже:

#include "Nextion.h"
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

// Объявите свои объекты Nextion - Example (page id = 0, component id = 1, component name = "b0") 
NexText tDate = NexText(0, 1, "tDate"); 
NexText tPot1 = NexText(0, 6, "tPot1");
NexText tPot2 = NexText(0,7, "tPot2");
NexText tPot3 = NexText(0, 8, "tPot3");
NexText tPot4 = NexText(0, 9, "tPot4");

File myFile;

void setup(void) {    
  Serial1.begin(9600);
  // Откройте последовательную связь и дождитесь открытия порта:
  Serial.begin(9600);

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // следующая строка устанавливает RTC на дату и время компиляции этого скетча
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // Эта строка задает RTC с явной датой и временем, например:
    // 21 января 2014 года в 3 часа ночи вы бы позвонили:
    //rtc.adjust(DateTime(2016, 11, 19, 19, 45, 0)); // <---------------------- УСТАНОВИТЕ ВРЕМЯ И ДАТУ: ГГГГ, ММ, ДД, ЧЧ, ММ, СС
  }

  delay(100);
    
  // Возможно, вам придется изменить файл NexConfig.h в папке ITEADLIB_Arduino_Nextion
  // Установите baudrate, который предназначен для отладки и связи с экраном Nextion
  nexInit();
 
  SPI.begin();

  int pot1 = 0;
  int pot2 = 0;
  int pot3 = 0;
  int pot4 = 0;

  while (!Serial) {
    ; // дождитесь подключения последовательного порта. Требуется только для родного USB-порта
  }

  Serial.print("Initializing SD card...");
  if (!SD.begin(53)) {
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");

  // откройте файл. обратите внимание, что одновременно можно открыть только один файл,
  // таким образом, вы должны закрыть этот, прежде чем открывать другой.
}

void loop(void) {   
  myFile = SD.open("testpot1.csv", FILE_WRITE);
  // если файл открылся нормально, напишите в него:
  if (myFile) {
    Serial.print("Writing to testpot1.txt...");

    while(1) {
      DateTime now = rtc.now();
      myFile = SD.open("testpot1.csv ", FILE_WRITE);
      int pot1 = analogRead(A0);
      int pot2 = analogRead(A1);
      int pot3 = analogRead(A2);
      int pot4 = analogRead(A3);
      myFile.print(now.hour());
      myFile.print(":");
      myFile.print(now.minute());
      myFile.print(",");
    
      myFile.println(pot1);
      myFile.println(",");
      tPot1.setText(pot1);

      myFile.println(pot2);
      myFile.println(",");
      tPot2.setText(pot2);

      myFile.println(pot3);
      myFile.println(",");
      tPot3.setText(pot3);

      myFile.println(pot4);
      myFile.println(",");
      tPot4.setText(pot4);

      Serial.print(pot1);
      Serial.print(",");
      Serial.print(pot2);
      Serial.print(",");
      Serial.print(pot3);
      Serial.print(",");
      Serial.print(pot4);
      Serial.print(",");
   
      delay(2000);
      myFile.close();
    }
  } else {
    // если файл не открылся, выведите сообщение об ошибке:
    Serial.println("error opening test.txt");
  }
}

Image of the serial Monitor

Как получить значения банка на дисплее? Любая помощь или советы были бы полезны!

, 👍3


2 ответа


Лучший ответ:

0

Я изменил текстовые компоненты на числовые в графическом редакторе Nextion. Это сработало, так как я в первую очередь хотел показать числовые показания банка.

,

2

recvRetCommandFinished err означает, что что-то не так с последовательной связью между Arduino и дисплеем Nextion; это то, что recvRetCommandFinished() печатает при возникновении ошибки.

Проверьте, правильно ли вы используете контакты (TX1 и RX1 для Serial1) для последовательного подключения к дисплею, фактические соединения (RX1- TX, TX1-RX), скорость передачи данных в бодах и кабель.

,

Спасибо. Это сработало, а также я изменил текстовые компоненты на числовые компоненты в графическом редакторе Nextion., @Niteesh Shanbog

Отлично! Пожалуйста, примите ответ (если вы принимаете ответ), чтобы вопрос не оставался открытым., @ocrdu