【问题标题】:Nextion Display not sending data to ArduinoNextion Display 未向 Arduino 发送数据
【发布时间】:2018-07-01 07:45:49
【问题描述】:

我遇到了 Nextion NX4024T032_011 的问题。 我可以从 Arduino Uno 或 Leonardo 向它发送数据,但是当我按下按钮时 Nextion 似乎没有向 Arduino 发送数据(Arduino 板上的 Rx 二极管没有闪烁)。 在串行端口上,我只能在打开串行监视器后看到“recvRetCommandFinished err”: recvRetCommandFinished err

据我说,Nextion 按钮设置正确。 Nextion button

我正在使用这个库: https://github.com/itead/ITEADLIB_Arduino_Nextion 但我对其进行了一些修改。 我在 NexConfig.h 中更改了这一行:

 #define nexSerial Serial2

到:

#include <SoftwareSerial.h>
extern SoftwareSerial HMISerial;
#define nexSerial HMISerial

Arduino 代码:

    /*
How to use Nextion library:
https://create.arduino.cc/projecthub/tsavascii/nextion-lcd-communicate-with-arduino-uno-188a44
*/
#include "Nextion.h"
SoftwareSerial HMISerial(10, 11);

#define ledPin 13

NexButton b0 = NexButton(0, 1, "b0");
NexButton b1 = NexButton(0, 7, "b1");
NexButton b0_page2 = NexButton(0, 1, "b0");
NexNumber n1 = NexNumber(0, 5, "n0");
NexText t0 = NexText(0, 2, "t0");
NexText t1 = NexText(0, 6, "t1");
NexText t2 = NexText(0, 3, "t2");

int myInt=0;
NexTouch *nex_listen_list[] = {&b1,NULL};
  /*
    Difference between Serial write and print:
    https://arduino.stackexchange.com/questions/10088/what-is-the-difference-between-HMISerial-write-and-HMISerial-print-and-when-are-they
  */

void b1PushCallback(void *ptr)
{
  digitalWrite(ledPin, HIGH);
}

void b1PopCallback(void *ptr)
{
  digitalWrite(ledPin, LOW);  
}

void nextionPrint(String objectName, String value)
{
  objectName = objectName + "=\""+ value + "\"";
  HMISerial.print(objectName);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}

void nextionPrint(String objectName,int value)
{
  objectName = objectName + "=";
  HMISerial.print(objectName);
  HMISerial.print(value);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}

void setup() 
{
  pinMode(ledPin,OUTPUT);
  nexInit();
  digitalWrite(ledPin,LOW);
  b1.attachPush(b1PushCallback); //button press
  b1.attachPop(b1PopCallback); //button release
  nextionPrint("t1.txt", "Arduino Text");
}

void loop() 
{   
    nexLoop(nex_listen_list);
    
    ++myInt;
    
    nextionPrint("n0.val", myInt);
    
    if(myInt>254)
    {
      myInt=0;  
    }

    if(HMISerial.available())
    {
      Serial.println(HMISerial.read());
    }
    
    delay(500);
}

关于我无法从 Nextion 获取任何数据的任何提示?

【问题讨论】:

    标签: arduino serial-port microcontroller arduino-uno


    【解决方案1】:

    首先,重新检查您声明的 2 个按钮的页面 ID 和对象 ID。 NexButton b0 = NexButton(0, 1, "b0"); NexButton b0_page2 = NexButton(0, 1, "b0");

    页面 0 上的两个按钮如何具有相同的对象 ID 1

    另外,重新检查 Tx 和 Rx 连接。 Tx 到 Rx 和 Rx 到 Tx。 我希望这能解决您的问题。

    【讨论】:

      【解决方案2】:

      您对自己使用的物理引脚 Arduino 有信心吗?我总是很困惑,所以我不得不继续我关于 IDE 的引脚名称、MCU 的引脚号和电路板的引脚号的笔记。 在我的草图中,我写道:

      SoftwareSerial HMISerial(10, 11); // 接收,发送

      我正在使用 Arduino Nano 和 我在标有 D10 的引脚(来自 USB 连接器的第 3 个引脚)处从 Nextion(蓝线)接收数据; 我在标有 D11(USB 连接器的第二个)的引脚上将数据传输到 Nextion(黄线)。

      这不是一个很大的帮助,但这是我现在能做的。 祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-10
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多