Daten vom Arduino ans Nextion-Display senden, das im Sleep Modus ist

Hua, länger geht der Betreff nicht!

Aber erst einmal wünsche ich allen einen schönen guten Abend!

Ich habe ein Nextion-Display, das ich mit “thsp=60” automatisch in den Sleep-Modus versetze. Damit ich ihn wieder wach bekomme gibt es gleich ein “thup=1” hinterher (Quelle: letzter Eintrag hier: http://support.iteadstudio.com/support/discussions/topics/11000010958).

Der Arduino (Libary: “Nextion.h” von “ITEAD Intelligent Systems Co”… reicht das?) sendet allerdings in regelmäßigen Abständen unter anderem die gemessene Temperatur an das Display, damit es immer auf den aktuellen Stand ist. Solange das Display “wach” ist, gibt der Serielle Monitor “recvRetCommandFinished ok” aus.

Wenn das Display aber im Sleep-Modus ist, gibt es ein “recvRetCommandFinished err” (ERROR)…

Welche Einstellung muss/kann ich machen, dass das Display auch im Sleep-Modus, Daten empfangen kann? bzw ich mit dem Arduino auch Daten abfragen kann? Sprich dass die Serielle Verbindung “wach” bleibt…

Alles klar? Vielen Dank für die Hilfe…

Danke ~Ralf~

PS: Puh, bald bin ich fertig. Wenns soweit ist, möchte ich meine Ideen und Umsetzungen gerne anderen zugänglich machen. Wie gehe ich da am besten vor?

Hi

Wie sich Das liest, werden Deine gesendeten Daten halt vom schlafendem Display nicht wirklich aufgenommen.

Was stört Dich daran? Wenn das Display die Daten aufnehmen soll, darf Es nicht schlafen - rein theoretisch also wecken, Daten senden, pennen schicken. Oder eben NICHT schlafen lassen - wenn'S nicht pennt, muß man Es auch nicht wecken.

MfG

Hallo Ralf,

Ich bin zwar ein ziemlicher Neuling auf dem Gebiet, aber evtl. hilt dir meine Lösung hier.

Ich habe es bei meinem Display so gelöst, dass ich es [u]nicht[/u] mit

thsp=15 thup=1

in denn Sleep-Mode versetze, sondern einfach mit einem Timer und dem Timer Event dim=0 und dem Timer-Attribut tim 15000 nach 15 Sekunden auf 0% Beleuchtung dimme.

Auf page0 habe ich ein TouchPress Event dim=100 eingefügt um den Bildschirm wieder auf 100% Beleuchtung zu bringen wenn ich darauf tippe. Der Wert hinter dem dim= kann ein Wert zwischen 0 und 100 sein. Dieser Wert gibt die Helligkeit der Displaybeleuchtung in % an.

Je nachdem wie viele Pages dein Display-Projekt hat, muss das TouchPress Event "dim=100" wahrscheinlich auf jeder Seite eingefügt werden.

Ob es auf jeder Seite extra eingefügt werden muss kann ich aber nicht sagen, da mein Projekt nur eine Seite hat. Müsstest du mal versuchen.

Durch das dimmen sollte die serielle Verbindung weiterhin aktiv bleiben aber du hast trotzdem einen ausgeschaltenen Display.

Schöne Grüße

Andreas

Ich frage mich auch, warum das Display in den Sleep-Modus gehen soll ? Betreibst du es an einer Batterie/Akku ? Wenn nicht, dann ist die Lösung von Nowe101 die richtige.

Im Sleep-Modus kann es einfach keine Daten weiter verarbeiten, anders würde der Sleep-Modus keinen Sinn machen.

Vielen Dank!

Die Dim-Variante ist die Lösung.

Der Bildschirm ist aus, und der/die/das Nextion kann noch Werte erhalten.

Schönen Sonntag noch ~Ralf~

BastelRalf:
Vielen Dank!

Die Dim-Variante ist die Lösung.

Der Bildschirm ist aus, und der/die/das Nextion kann noch Werte erhalten.

Schönen Sonntag noch ~Ralf~

Also verstehe ich das richtig.
Kein besonderer Grund für den Sleep-Modus ?

(deleted)

@anwofis

Danke :)

@BastelRalf

Noch eine kurze Anmerkung die ich vergessen habe. Das dimmen lässt sich dann auch über das Board steuern. Das heißt, wenn man will kann mann auch noch einen Vergleich im Sketch einbauen der z.B. die Temparatur vergleicht und wenn diese eine gewisse Temperatur unterschreitet oder übersteigt lässt man das Display automatisch wieder angehen. Dann sieht man sofort das irgendetwas nicht stimmt.

Schönen Sonntag noch.

Vielen Dank,

es gibt wirklich keinen wirklichen Grund für den Sleep modus...

ich habe aber jetzt ein ganz komisches Problem: Die wichtigen Auschnitte aus dem Sketch:

Die Zahl 10 wird an das Nextion gesendet (Number);

FANminTN.setValue(10);

Diese Zahl wird auch auf dem Nextion brav angezeigt. Will ich die Zahl auslesen:

uint32_t FANminT; FANminTN.getValue(&FANminT);

wird im Serial.println(FANminT);

538976315 oder irgend etwas nicht nachvollziehbares angezeigt.

kopfschuttel... Was ist a nur los?

~Ralf~

Mit Codefragmenten kommt man da nicht klar. Also bitte den kompletten Sketch in Code-Tags posten.

Vermutlich ist es ein Variablen-Überlauf.

Und warum überhaupt aus dem Display auslesen, wenn du den Wert doch im Sketch hast ?

tatsächlich ... im schnell zusammengebastelten ProbeSketch läuft es..

#include "Nextion.h"

NexNumber FANminTN = NexNumber(1, 3, "Lufter_a.Lufter_minT");
NexNumber FANmaxTN = NexNumber(1, 4, "Lufter_a.Lufter_maxT");




void setup() {
  // put your setup code here, to run once:

  /* Set the baudrate which is for debug and communicate with Nextion screen. */
  nexInit();
  /*  Reste       */
  Serial.begin(9600);
}

void loop() {





  uint32_t FANminT, FANmaxT;

  FANminTN.setValue(10);
  FANmaxTN.setValue(80);

  FANminTN.getValue(&FANminT);
  FANmaxTN.getValue(&FANmaxT);

  Serial.print("# min Temp ");
  Serial.println(FANminT);

  Serial.print("# max Temp ");
  Serial.println(FANmaxT);


  delay(5000);

}

Möglicherweiße irgendeine Überschneidung in der seriellen Verbindung bei der Übertragung der Daten, wenn das überhaupt möglich ist?

Hast du den Monitor über den TX und RX Pin angeschlossen oder über über andere Pins?

Sonst könntest du versuchen die Daten an das Display über ein SoftwareSerial zu senden und zu empfangen und die gelesenen Daten über die normale serielle Verbindung am Serial Monitor auszugeben.

Ob das mit dem Problem zusammenhängt kann ich nicht sagen, dafür bin ich zu neu. :o

Hatte bei mir nur das Problem das ich das Display zuerst am RX und TX Pin angeschlossen hatte. Was das Problem verursacht hat, dass ich, wenn das Display angesteckt war, nicht oder nur komisch abgehackt zwischen PC und Board kommunizieren konnte. Habe dann den Tipp bekommen das ich das Display über eine SoftwareSerial verbinden soll da dann der normale Serielle Port, der für die Kommunikation zwischen PC und Port benötigt wird, nicht durch das Display belegt wird.