Nextion & MAX6675 aktuallisieren die Werte nicht

Schönen Guten Morgen an alle,
ich benötige eure Hilfe beim Aktualisieren von Werten über das Nextion Display.

Meine Bauteile:

  • Nextion 3,2 Zoll Enhanced Modell
  • Temperatur Sensor MAX6675 TYP K
  • Arduino Mega 2560
  • TX/RX Über Serial 2

Ich habe einen Code geschrieben der die Temperatur Werte vom MAX6675 auf das Nextion Display überträgt.

Soweit so gut, den Wert bekomme ich “teils” auf das Nextion und “teils” auch nicht. Ab und zu verschwinden diese einfach & beim Start erscheinen diese irgendwie gar nicht.

Das Nextion Kommuninziert aufjedenfall mit dem Arduino Mega 2560, da ich auch andere “Nummern” ansteuern kann.

Mein Problem bei der ganzen Sache ist jetzt, das wenn der Wert mal auf dem Nextion drauf ist, sich der Werte nicht aktualisiert…

Wenn ich den Code über Serial.println ausgebe, Updaten sich die Werte…
Wäre schön wenn mir jemand helfen könnte.

Danke & Gruß, Nicolas

#include "Nextion.h"

#include <Thermocouple.h>
#include <MAX6675_Thermocouple.h>
#include <AverageThermocouple.h>

#define SCK_PIN 9
#define CS_PIN 8
#define SO_PIN 7
//===============================================================================/

Thermocouple* thermocouple = NULL;
//===============================================================================/
void numb_zyl_PopCallback(void *ptr);
NexNumber numb_zyl = NexNumber(1, 16, "numb_zyl");
//===============================================================================/

NexTouch *nex_listen_list[] = 
{

};
//===============================================================================/

void setup() {

  nexInit();
  thermocouple = new MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN); 
  
  dbSerialPrintln("setup done");
}
//===============================================================================/
void loop() {
  // put your main code here, to run repeatedly:
const double celsius = thermocouple->readCelsius();  // definiert die temperatur celsius in ein double
numb_zyl.setValue(celsius);      // Hier wird die Temperatur auf das Nextion display übertragen                                       
nexLoop(nex_listen_list);  
}

Da Du mit der Nextion-Lib arbeitest, wird Dir hier wohl kaum jemand helfen können, da die hier (und anderswo) wohl keiner benutzt.

Gruß Tommy

Hi Tommy,
danke für die Rückmeldung.

Habe ich mir fast schon gedacht. Alle Arbeiten mit der Serial Schnittstelle, dann muss ich das wohl auch so machen.

Danke & Gruß, Nicolas

krxpto:
Hi Tommy,
danke für die Rückmeldung.

Habe ich mir fast schon gedacht. Alle Arbeiten mit der Serial Schnittstelle, dann muss ich das wohl auch so machen.

Danke & Gruß, Nicolas

Das ist evtl. etwas mehr Tipparbeit, aber auch deutlich flexibler und funktioniert prima.
Hier im Forum gibt es auch reichlich Infos dazu.

Hi HotSystems,

ja das denke ich auch, jedoch komm ich irgendwie besser mit der Library klar. Hab mich schon länger mit ihr befasst und finde sie "Meiner Meinung" nach, auch übersichtlicher. Klar, damit zu arbeiten ist schon ein Krampf, jedoch für mich verständlicher :slight_smile:

Habe den Code nun umgeschrieben, so funktioniert nun alles.
Das Nextion braucht einen Delay um die Werte in einer bestimmten Zeit über mitteln.

dafür habe ich einfachh

delay(250);

benutzt.

Der neue Code sieht nun so aus, für alle die auch etwas mit dem MAX6675 vorhaben :slight_smile:

#include "Nextion.h"

#include "max6675.h"

int thermoSO = 10;
int thermoCSS = 9;
int thermoSLK = 8;

MAX6675 thermocouple(thermoSLK, thermoCSS, thermoSO);

void numb_auspuff_PopCallback(void *ptr);
NexNumber numb_auspuff = NexNumber(1, 17, "numb_auspuff");

NexTouch *nex_listen_list[] = 
{

};

void setup() {
  // put your setup code here, to run once:
  nexInit();
  dbSerialPrintln("setup done");
}

void TEMP_AUSPUFF() {
numb_auspuff.setValue(thermocouple2.readCelsius());   
}

void loop() {
  // put your main code here, to run repeatedly:
delay(250);  
TEMP_AUSPUFF();
nexLoop(nex_listen_list);  
}

Ist doch gut, wenn du damit klar kommst.
Dann kannst du zukünftig die Fragen diesbezüglich beantworten. :wink:

Hi,

du kannst es mal mit einer höheren Baudrate versuchen, vielleicht kannst du dir das delay dann sparen.

Dazu musst du über den Nextion Editor auf der ersten Page, also die das Display als erstes anzeigt, im Feld "Preinitialize Event" den Eintrag "bauds=38400" setzen und diesen Wert in der Nextion.h ebenfalls setzen, Display neu starten nicht vergessen.

Einen höheren Wert als 38400 hab ich noch nicht getestet und schon gar nicht mit der Lib. :wink:

Hi wapjoe,
mega Tipp, danke hat sofort funktioniert. Jetzt springt der Sensor sofort in den Bereich, in dem er sich auch gerade befindet :slight_smile:

Danke men <3

Gruß, Nicolas

Nabend,

freut mich das es hinhaut! :slight_smile: Danke für die Rückmeldung.