#include "Nextion.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SoftwareSerial.h>
#define NEXTION_SERIAL_RX_PIN 0
#define NEXTION_SERIAL_TX_PIN 1
#define NEXTION_BAUDRATE 9600 // Change this if your Nextion display uses a different baud rate
#define ONEWIRE_PIN_1 9 // Sensor 1 on pin 9
#define ONEWIRE_PIN_2 12 // Sensor 2 on pin 12
#define ONEWIRE_PIN_3 13 // Sensor 3 on pin 13
SoftwareSerial HMISerial(NEXTION_SERIAL_RX_PIN,NEXTION_SERIAL_TX_PIN);
//nexSerial Serial(10,11);
NexPage page1 = NexPage(1, 1, "second");
NexPage page2 = NexPage(2, 1, "third");
// NexText nexTFurnace = NexText(1, 7, "tfurnace");
// NexText nexTSolar = NexText(1, 5, "tsolar");
// NexText nexTBoiler = NexText(1, 6, "tboiler");
NexButton b0Second = NexButton(1, 8, "b0");
NexButton b0Third = NexButton(2, 2, "b0");
NexNumber n0TSolar = NexNumber(2, 3, "n0");
NexNumber n1TFurnace = NexNumber(2, 16, "n1");
NexNumber nexTFurnace = NexNumber(1, 18, "n0");
NexNumber nexTSolar = NexNumber(1, 19, "n1");
NexNumber nexTBoiler = NexNumber(1, 20, "n2");
NexTouch *nex_listen_list[] =
{
&b0Second,
&b0Third,
&n0TSolar,
&n1TFurnace,
NULL
};
OneWire ds_1(ONEWIRE_PIN_1); //sensor 1 na pin 9
OneWire ds_2(ONEWIRE_PIN_2); //sensor 2 na pin 12
OneWire ds_3(ONEWIRE_PIN_3); //sensor 3 na pin 13
DallasTemperature sensorSolar(&ds_1);
DallasTemperature sensorBoiler(&ds_2);
DallasTemperature sensorFurnace(&ds_3);
float temp_1; //Solar
float temp_2; //Boiler
float temp_3; //Furnace
float tsolar = 0;
float tkotol = 0;
void tempReading()
{
sensorSolar.requestTemperatures(); //Žiadosť
sensorBoiler.requestTemperatures();
sensorFurnace.requestTemperatures();
temp_1 = sensorSolar.getTempCByIndex(0); //Čítanie
temp_2 = sensorBoiler.getTempCByIndex(0);
temp_3 = sensorFurnace.getTempCByIndex(0);
Serial.print(" Solar: ");
Serial.print(temp_1);
Serial.print(" Boiler: ");
Serial.print(temp_2);
Serial.print(" Furnace: ");
Serial.print(temp_3);
Serial.println("");
}
void fromNumberToString()
{
// Send updated values to the Nextion display
HMISerial.print("n0.val=");
HMISerial.print(temp_1);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
HMISerial.print("n1.val=");
HMISerial.print(temp_2);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
HMISerial.print("n2.val=");
HMISerial.print(temp_3);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
nexSerial.write(0xFF);
HMISerial.print("tsolar.val= " + String(temp_3)); //aj toto robi
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
//Serial.flush();
// static char temperature3CTemp[4];
// dtostrf(temp_3, 4, 1, temperature3CTemp); //So jedným decimálnym číslom
// nexTFurnace.setText(temperature3CTemp);
// delay(10);
// static char temperature1CTemp[4];
// dtostrf(temp_1, 4, 1, temperature1CTemp); //So jedným decimálnym číslom
// nexTSolar.setText(temperature1CTemp);
// delay(10);
// static char temperature2CTemp[4];
// dtostrf(temp_2, 4, 1, temperature2CTemp); //So jedným decimálnym číslom
// nexTBoiler.setText(temperature2CTemp);
// delay(10);
}
void setup()
{
Serial.begin(NEXTION_BAUDRATE); //Hardware serial
nexSerial.begin(NEXTION_BAUDRATE);
nexInit(); // Library
HMISerial.begin(NEXTION_BAUDRATE);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
//HMISerial.begin(NEXTION_BAUDRATE); //Software serial // toto apsolutne nist nerobi
// nexSerial.write(0xFF);
// nexSerial.write(0xFF);
// nexSerial.write(0xFF);
sensorSolar.begin(); //inicializacia senzora
sensorBoiler.begin();
sensorFurnace.begin();
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
Serial.println("Sensors on!");
}
void loop()
{
nexLoop(nex_listen_list);
tempReading();
fromNumberToString();
Serial.println();
delay(1000);
}
This is my code, and I have tried many thing but it just doesnt work... To be honest I was searching through internet for help, but I didnt get to the solution... And after many videos of code, I came to point where I dont understand why I have so many Serials to communicate. Can you guys explain me what do I need to use? Im using ITEADLIB_Arduino_Nextion-master library, I changed the #define nexSerial Serial1 to #define nexSerial Serial, because I use Arduino Uno WiFi. I use Nextion NX8048K070_011C, it is Enhanced version.
Output I get with this code:
15:40:03.354 -> ���bkcmd=1���recvRetCommandFinished err
15:40:03.453 -> page 0���recvRetCommandFinished err
15:40:03.648 -> Sensors on!
15:40:05.838 -> Solar: 22.00 Boiler: 22.56 Furnace: 22.19
15:40:05.838 -> ���������
Thank you very much, any help is welcome!