Sensorwerte vom Arduino zum Nextion Display aber wie

Hy,

ich bin neu hier im Forum und auch was den Arduino angeht.

Ich besitze einen Arduino Mega 2560 CLON, habe vor damit Temperaturen zu mesen mit wasserdichten DS18B20 Sensoren.

Mit diesem Code hier habe ich es nun schon soweit einmal geschaftt das mir über den seriellen Monitor die erfassten Temperaturen angezeigt werden.

#include <OneWire.h> // http://www.arduino.cc/playground/Learning/OneWire
#include <DallasTemperature.h> // http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library
 
#define ONE_WIRE_BUS 52
#define TEMPERATURE_PRECISION 12
 
OneWire oneWire(ONE_WIRE_BUS); // Einrichten des OneWire Bus um die Daten der Temperaturfühler abzurufen
DallasTemperature sensors(&oneWire); // Bindung der Sensoren an den OneWire Bus
 
DeviceAddress tempDeviceAddress; // Verzeichniss zum Speichern von Sensor Adressen
int numberOfDevices; // Anzahl der gefundenen Sensoren
 
void setup(void)
{
   Serial.begin(9600);
   Serial.println("Abfrage mehrerer Dallas Temperatur Sensoren");
   Serial.println("-------------------------------------------");
 
   // Suche der Sensoren
   Serial.println("Suche Temperatur Sensoren...");
   sensors.begin();
   numberOfDevices = sensors.getDeviceCount();
 
   Serial.print("Habe ");
   Serial.print(numberOfDevices, DEC);
   Serial.println(" Sensoren gefunden.");
 
   // Setzen der Genauigkeit
   for(int i=0 ;i<numberOfDevices; i++) {
      if(sensors.getAddress(tempDeviceAddress, i)) {
         sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
         Serial.print("Sensor ");
         Serial.print(i);
         Serial.print(" hat eine genauigkeit von ");
         Serial.println(sensors.getResolution(tempDeviceAddress), DEC);
      }
   }
   Serial.println("");
 
}
 
void loop(void)
{
   // Aufruf der Funktion sensors.requestTemperatures()
   // Dadurch werden alle werte abgefragt.
   Serial.print("Abfrage der Temperatur... ");
   sensors.requestTemperatures();
   Serial.println("DONE");
 
   // Ausgabe der Daten für jeden Sensor
   for(int i=0 ;i<numberOfDevices; i++) {
      float tempC = sensors.getTempCByIndex(i);
      Serial.print("Sensor ");
      Serial.print(i, DEC);
      Serial.print(" hat grad Celsius: ");
      Serial.println(tempC);
   }
   delay(20000);
}

Erst wollte ich die Daten ja ein zweizeiligen LCD Displays ausgeben lassen, aber nachdem ich nun Videos zu Nextion Display sah musste davon auch eins zu mir. Ich habe nun ein 3,2" der verbesserten Variante nach Hause bekommen. Ich habe soweit auch schon mit dem Netion Editor herumgespielt und mir auch diese Tutorials angesehen. Nur stellt sich mir immer noch die Frage wie ich die erfassten Temperaturen nun vom Arduino zum Nextion an eine richtige Stelle bekomme so das dann auch Temp1 auch imm Bereicht des Temp1 auf dem Display angezeigt wird? Welches Tool muss ich den im Nextion Editor nehmen um mir z.B "28°C" dann auf dem Display anzeigen zu lassen?

Könnt ihr mir da helfen?

Achso den Code oben habe ich glaube ich auch nicht richtig so wie ihr das macht angezeigt bekommen. Wie muss ich das dann in Zukunft machen?

Gruß Frank

Sportage:
Ich habe soweit auch schon mit dem Netion Editor herumgespielt und mir auch diese Tutorials angesehen.

Herumspielen und und die Tutorials "anschauen" reicht in dem Fall def. nicht. Sondern nur jeden Satz, jedes Wort lesen, einprägen, lernen und ausfühlich austesten, kann da helfen. So ein bischen wischiwaschi ansehen kann man sich da sparen, das ist völlig sinnlos. Aber die Tutorials die du hier aufzeigst sind auf jeden Fall schon mal richtig. Wenn du die drauf hast, kannst du schon mal das, was du hier angefragt hast. Aber es bleiben noch genug Fragen offen. Du hast dir mit dem Nextion Display keine Anfängerbaustelle ausgesucht. Aber es ist ein tolles Display. Wenn man es dann mal kann.

Franz

Wenn du hier im Forum mal ein wenig suchst, findest du zahlreiche Beiträge, in denen das beschrieben und mit Beispielen auch dokumentiert wurde.

Auch bei Boecker (dein Link) wurde das sehr gut und ausführlich beschrieben. Also was genau ist deine Frage ?

Hallo HotSystems,

also ich möchte z.B. die gemessene Temperatur von 22,06°C vom Sensor 2 auf das Nextion übertragen. Aber irgendwie will mir das nicht in den Kopf wie. Da muss doch auch die Temperatur von dem dementprechendem Sensor auch an der richtigen Anzeigemöglichkeit beim Nextion gesendet werden.

Denn was würde mir das bringen wenn ich die Temperatur vom Sensor 1 dann z. B. am Nextion am Platz des Sensors 3 angezeigt wird. Das weiß ich noch nicht wie ich das zu machen habe auch wenn ich die sagenhafte Tutorialseite böcker mir schon zu Gemüte geführt habe und das auch nicht nur einmal.

KennT ihr das denn nicht auch ihr lest und lest was aber trotzdem will das nicht rein und klappen :confused:

Gruß

Frank

Sportage:
also ich möchte z.B. die gemessene Temperatur von 22,06°C vom Sensor 2 auf das Nextion übertragen. Aber irgendwie will mir das nicht in den Kopf wie. Da muss doch auch die Temperatur von dem dementprechendem Sensor auch an der richtigen Anzeigemöglichkeit beim Nextion gesendet werden.

Denn was würde mir das bringen wenn ich die Temperatur vom Sensor 1 dann z. B. am Nextion am Platz des Sensors 3 angezeigt wird. Das weiß ich noch nicht wie ich das zu machen habe auch wenn ich die sagenhafte Tutorialseite böcker mir schon zu Gemüte geführt habe und das auch nicht nur einmal.

das habe ich schon verstanden....und auch geschrieben, du sollst mal hier im Forum suchen.
Z.B. hier: https://forum.arduino.cc/index.php?topic=458079.0

Jedes Feld im Nextion hat einen Namen, den du selbst vergeben hast. Diesen musst du per serieller Anweisung ansprechen und deinen Wert draufschreiben.
Hier kannst du auch noch nachlesen: Kommandos zum Nextion senden - Böcker Systemelektronik

Und da gibt es noch mehr Beiträge zum Nextion.
Da solltest du auch in Google noch weiter suchen.

Aber wie dir schon geschrieben wurde, das Nextion ist kein Teil für Anfänger. Ohne jegliche Erfahrung musst du einfach nur lernen....lesen und lernen.

Das steht z.B. hier. Das ist im Tutorial der Bereich "Kommandos zum Nextion senden".

Und das hier:
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Lässt sich sehr schön vereinfachen, indem man es so handhabt:

Deklarationen:
byte NexT[3] = {255, 255, 255};

Ausführen:
Serial2.write(NexT, 3);

Franz54:
Das steht z.B. hier. Das ist im Tutorial der Bereich "Kommandos zum Nextion senden".

Und das hier:
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Lässt sich sehr schön vereinfachen, indem man es so handhabt:

Delarationen:
byte NexT[3] = {255, 255, 255};

Ausführen:
Serial2.write(NexT, 3);

Du solltest unbedingt beischreiben, dass dein Beispiel auf eine Programmierung ohne die Nextion-Library abzieht.
Mit der Library sieht das schonmal ganz anders aus
Und der TO sollte sich unbedingt entscheiden, ob er die Programierung mit oder ohne diese Library durchführen möchte.
Auch sollte er sich zuvor über Vor- und Nachteile der Library erkundigen.

Hallo,

soll ja ohne auch funktionieren und das sogar besser wenn ich das richtig nachgelesen habe. Ich danke euch für eure Hinweise auch mit der Verlinkung der Böckerseite. Aber wie ich schon schrieb irgendwie will es nicht ins Hirn rein und ich bekomme es nicht hin, so eine Scheiße.

OK konnte ja auch schon nachlesen das ich wenn ich es mit Komma darstellen möchte die Temperatur, dann kein Numbersfeld nehmen sollte sondern ein Textfeld. Soweit bin ich auch schon einmal und ich hoffe damit auch richtig?

Sorry das ich halt noch einmal nachfrage aber ich bin halt am verzweifeln, wie bekomme ich das hin das mir die Temperatur vom Sensor 1 z. B. auch in dem Textfeld t0 im Nextion angezeigt wird?

Gruß

Frank

Na dann zeige doch mal den Sketch, wie Du die Zahl zum Nextion überträgst. Setze ihn bitte in Codetags (</> oben links im Forumseditor).

Ansonsten probiere einfach erst mal einen festen Text ans Textfeld zu übertragen:

const char[] = "23.4";

Gruß Tommy

Sportage:
.....
Sorry das ich halt noch einmal nachfrage aber ich bin halt am verzweifeln, wie bekomme ich das hin das mir die Temperatur vom Sensor 1 z. B. auch in dem Textfeld t0 im Nextion angezeigt wird?

Und du musst zur Übergabe der Daten gemäß Beispiel den kompletten Pfad angeben, also auch die Displayseite muss mit angegeben werden.

HotSystems:
Du solltest unbedingt beischreiben, dass dein Beispiel auf eine Programmierung ohne die Nextion-Library abzieht.
Mit der Library sieht das schonmal ganz anders aus

Naja, das wird ja im Tutorial am Anfang auch gleich klar geschrieben. Ich fürchte hier im Forum werden keine Tipps für die Arbeit mit Nextion Library geben.

Franz

Hier noch ein Tipp ohne Library zum Senden an das Display !

Und das könnte so im Sketch aussehen:

Serial2.print(F("page0.datum.txt=\""));
Serial2.print(F("dein Text"));    // nur wenn nötig
Serial2.print(deine_Variable);    // Messdaten
Serial2.write('"');               // Nextion Terminator
Serial2.write(NexT, 3);           // Nextion Terminator, siehe Post #5

Serial2 = deine serielle Verbindung
page0 = Name der Displayseite
datum = Name des Textfeldes auf der Displayseite
txt = Kennzeichnung dass Text übertragen wird
="" = Formatierung

Edit:
Nach Tommys Einwand korrigiert.

Franz54:
Naja, das wird ja im Tutorial am Anfang auch gleich klar geschrieben. Ich fürchte hier wir keine Tipps für die Arbeit mit Nextion Library geben.

Franz

Stimmt, aber wie ich sehe, versteht der TO das Tutorial nicht, daher der Hinweis.

HotSystems:
Hier noch ein Tipp ohne Library zum Senden an das Display !

Und das könnte so im Sketch aussehen:

Serial2.print(F("page0.datum.txt=\""));

Serial2.print(F("dein Text"));    // nur wenn nötig
Serial2.print(deine_Variable);    // Messdaten
Serial2.write(NexT, 3);          // Nextion Terminator, siehe Post #5

Da fehlt noch ein abschließendes """.

Gruß Tommy

Tommy56:
Da fehlt noch ein abschließendes """.

Gruß Tommy

Wo soll das fehlen ?

Was ich tatsächlich noch unterschlagen habe, ist ein '"', mehr nicht.

Aber danke für den Hinweis.

Du machst in der ersten Zeile mit "...="" ein zu übertragendes " auf, ich sehe aber nicht, wo Du es zu machst.

Gruß Tommy

Tommy56:
Du machst in der ersten Zeile mit "...="" ein zu übertragendes " auf, ich sehe aber nicht, wo Du es zu machst.

Gruß Tommy

Das hatte ich ja in #14 entsprechend noch geschrieben und in #11 auch korrigiert.

Mein Posting bezog sich aber auf den ursprünglichen Zustand ohne die Korrektur.

Gruß Tommy

Tommy56:
Mein Posting bezog sich aber auf den ursprünglichen Zustand ohne die Korrektur.

Gruß Tommy

Daraufhin habe ich ja den Fehler gesehen und korrigiert.

Oder ist das deiner Meinung nicht ausreichend ?
Allerdings funktioniert es so, wie in #11 geschrieben und dementsprechend kann der TO das auch so einsetzen, wenn er es dann versteht. :wink:

Mit der Korrektur ist es ok.

Gruß Tommy