INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Nextion Senden von Variablen Problem
06.11.2020, 12:12
Beitrag #1
Nextion Senden von Variablen Problem
Hallo ich kämpfe seit Tagen damit einen int Wert einer Variablen auf das Nextion Display z.b. in ein Nummernfeld oder in ein Xfloat zu übertragen.

Ich weis nicht wie ich die Variable in die Serial Anweisung packe.

1. Was klappt ist einen Text in einer Stringvariable anzuzeigen.
2. Was auch klappt ist einen Ganzzahlen Wert in ein Nummernfeld oder Xfloat zu
übertragen.

Code beider funktionierender Fälle:
Fall 1 String:

//SoftSerial.print("t2.txt=\"" + String(test) +"\"");
//KLAPPT ! zwischen den "" kann noch ein Text vorangestellt werden, danach wird die String Variable angehängt und der Inhalt an das Display übertragen.

//SoftSerial.write(0xff);
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);
[/i]

Fall2 int:

// SoftSerial.print("x0.val=1234"); //klappt
//
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);


Wie heißt der richtige Syntax um x0.val=(VARIABLE)
zu senden?

Xfloat wäre super ich würde aber auch eine Nummernfeld nehmen.
Ich habe so viele Varianten ausprobiert, komme nicht weiter.

PS: die page1 davor macht keinen Unterschied.
Danke Euch ! Grüße Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2020, 12:33
Beitrag #2
RE: Nextion Senden von Variablen Problem
Hallo,
du kannst nur Ganzzahlen in ein Value-Feld schreiben.
Andere Zahlen musst du in Textfelder schreiben.

Und setze Sketche, auch Fragmente immer in Code-Tags.
Damit sind die für alle besser lesbar.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2020, 12:54 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2020 12:57 von Tesla.)
Beitrag #3
RE: Nextion Senden von Variablen Problem
Hi danke für deine Antwort. In der variablen würde eine Ganzzahl ja stehen.
In diesem Video wird ein Poti Übertragen: https://youtu.be/OhYyBpjyR14?t=711
Der Wert wird auf dem Display angezeigt. Wenn ich das so eingebe wie er, klappt es nicht. mhhh
EDIT: Hier mit Nummernfeld: https://youtu.be/OhYyBpjyR14?t=223
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2020, 13:00
Beitrag #4
RE: Nextion Senden von Variablen Problem
Gib uns bitte Deinen Code (in Codetags) und eine Info, wie Du welche Felder im Nextion definiert hast.
Die Wahrscheinlichkeiut, dass sich jemand die Sachen aus einem Video raus sucht, ist sehr gering.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2020, 13:06
Beitrag #5
RE: Nextion Senden von Variablen Problem
Code:
#include <Nextion.h>


#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);

#define SoftSerial mySerial
#define C02_TX 5
#define C02_RX 6

SoftwareSerial SoftSerial(C02_RX, C02_TX);

#define AmpPin A0  // Ampere Sensor Pin
#define VoltPin A1  // Spannung Sensor
#define WattMaxButtonPin 1 //D1 Pin Resetbutton für WattMax

double Ampere = 0.00;
double Spannung =0.00;
double Watt =0.00;
double amp[5];//Ampere Einzelmessung
double volts[5];
double WattMax=0; //Welcher Leistung war die höchste die gemessen wurde.
// int Wattint=0; //Dieser wert wird an das Nextion übertragen da es wohl keine Komma kann.
int Wattint = 3511;
bool WattMaxButton=0; //Resetbutton für WattMax
String test = "lala";

void setup() {
  for (int i=0;i<5;i++) volts[i]=0;  // initalisiert das Array mit 0
  for (int i=0;i<5;i++) amp[i]=0;  // initalisiert das Array mit 0


pinMode(AmpPin, OUTPUT);
pinMode(VoltPin, OUTPUT);


Serial.begin(9600);
SoftSerial.begin(9600);

lcd.init();
lcd.backlight();

  lcd.setCursor(0,0);         // Cursor auf Beginn der 1. Zeile
  lcd.print("Heilschwingung");
  delay(1000);
  lcd.clear();
  
lcd.setCursor(0,0);         // Cursor auf Beginn der 1. Zeile
lcd.print("ENERGIE: ");
lcd.setCursor(10,0);         //
lcd.print(Watt);

lcd.setCursor(0,1);         //
lcd.print("Maximum: ");
lcd.setCursor(10,1);         //
lcd.print(WattMax);

SoftSerial.print("t2.txt=\"Hi\"");
SoftSerial.write(0xff);
SoftSerial.write(0xff);
SoftSerial.write(0xff);
delay(500);
}

void loop()

{

amp[0] = analogRead (AmpPin) ;
amp[1] = analogRead (AmpPin) ;
amp[2] = analogRead (AmpPin) ;
amp[3] = analogRead (AmpPin) ;
amp[4] = analogRead (AmpPin) ;

Ampere = ( map ( ( ( ( ( amp[0] + ( amp[1] + ( amp[2] + ( amp[3] + amp[4] ) ) ) ) / 5.0 ) * 100.0 ) - 0000.0 ) , 0 , 102300 , 0 , 500 )  / 100.0 ) ;
Serial.print("Gemessene Ampere: ");
Serial.println(Ampere);
Serial.println(" ______ ");
//lcd.setCursor(1,0);         //
//lcd.print("A: ");
//lcd.setCursor(1,4);         //
//lcd.print(Ampere);

volts[0] = analogRead (VoltPin) ;
volts[1] = analogRead (VoltPin) ;
volts[2] = analogRead (VoltPin) ;
volts[3] = analogRead (VoltPin) ;
volts[4] = analogRead (VoltPin) ;

Spannung = ( map ( ( ( ( ( volts[0] + ( volts[1] + ( volts[2] + ( volts[3] + volts[4] ) ) ) ) / 5.0 ) * 100.0 ) - 0000.0 ) , 0 , 102300 , 0 , 1250 )  / 100.0 ) ;
Serial.print("Gemessene Spannung: ");
Serial.println(Spannung);
Serial.println(" ______ ");

//lcd.setCursor(1,10);         //
//lcd.print("V: ");
//lcd.setCursor(1,13);         //
//lcd.print(Volt);


Watt=(Spannung)*(Ampere);
Serial.print("Watt: ");
Serial.println(Watt);
Wattint = ((Watt)*(100));
lcd.setCursor(10,0);         // Cursor auf Beginn der 2. Zeile
lcd.print(Watt);

//Wattmax
//

if ((Watt) >= (WattMax))
{
  ((WattMax)=(Watt));
}


Serial.print("WattMax: ");
Serial.println(WattMax);

//
lcd.setCursor(9,1);         //
lcd.print(WattMax);

//SoftSerial.print("t2.txt=\"" + String(test) +"\"");            //KLAPPT ! zwischen den "" kann noch ein Text vorrangestellt werden, danach wird die String Variable angehängt und der Inhalt an das Display übertragen.

//SoftSerial.write(0xff);
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);


// SoftSerial.print("x0.val=1234"); //klappt
//
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);
//SoftSerial.write(0xff);

  SoftSerial.print("x0.var=");  // das klappt in verschieden Varianten überhaupt nicht...
  SoftSerial.print(Wattint);  //hilfsvariable hier soll später (Watt) stehen.
    
  SoftSerial.write(0xff);
  SoftSerial.write(0xff);
  SoftSerial.write(0xff);

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.11.2020, 13:57 (Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2020 13:58 von hotsystems.)
Beitrag #6
RE: Nextion Senden von Variablen Problem
Du hast die nextion-Lib eingebunden, nutzt diese aber nicht. Warum ?

Und das kann nicht funktionieren:
Code:
SoftSerial.print("x0.var=");
SoftSerial.print(Wattint);
SoftSerial.write(0xff);
SoftSerial.write(0xff);
SoftSerial.write(0xff);

So muss das da stehen:

Code:
SoftSerial.print("x0.val=");
SoftSerial.print(Wattint);
SoftSerial.write(0xff);
SoftSerial.write(0xff);
SoftSerial.write(0xff);

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.11.2020, 00:21
Beitrag #7
RE: Nextion Senden von Variablen Problem
Hallo,

zumindest meine Nextions können keine float. Float muss also wie oben gesagt auf dem Arduino in einen String gewandelt werden, der dann an ein Textfeld auf dem Nextion gesendet wird.

Ich habe das aber noch nie gebraucht! Auch bei Deiner Leistungsmessung halte ich "double" für überflüssig. Map arbeitet mit integer, wandelt also Deine amp[..] vor jeder Rechnung in integer um und das Ergebnis wieder in double.

Lieber alles als integer oder long. Overflow musst Du selbst im Auge behalten. Aber man kann auch in 1/10 A rechnen, das ergibt dann 1/10 W und Du hast mit wert/10 und wert%10 sofort Vor- und Nachkommaanteil für die Anzeige in einem Textfeld des Nextions.

Viele Grüße
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.11.2020, 18:34
Beitrag #8
RE: Nextion Senden von Variablen Problem
(07.11.2020 00:21)GuaAck schrieb:  Hallo,

zumindest meine Nextions können keine float. Float muss also wie oben gesagt auf dem Arduino in einen String gewandelt werden, der dann an ein Textfeld auf dem Nextion gesendet wird.
.....

Ist auch bei allen mir bekannten Nextion so. So steht es auch in der Dokumentation. Beim TO scheint es aber wohl noch andere Problem zu geben.
Und das mit der Ausgabe auf ein Textfeld ist je tatsächlich auch kein Problem.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  IR-Senden und Servomotor Ansteuern Schaefer 13 429 17.04.2021 16:47
Letzter Beitrag: N1d45
  Problem Relaisplatine Maui 14 749 23.03.2021 15:20
Letzter Beitrag: hotsystems
  Problem mit "pow" awillib 9 721 27.02.2021 19:22
Letzter Beitrag: Tommy56
  Pwm Problem safitom 4 424 20.02.2021 12:14
Letzter Beitrag: safitom
  Befehl für Variablen-Ausdruck Heiner 9 795 09.02.2021 11:31
Letzter Beitrag: Heiner
  Problem mit "Keyboard" und "Mouse" LK2567 4 481 03.02.2021 16:11
Letzter Beitrag: MicroBahner
  const char zu int Konvertierung Problem Lumplux 1 312 02.02.2021 10:26
Letzter Beitrag: Lumplux
  Arduino Uno+ Ethernetshield W5100 Website Problem Justus S. 9 715 31.01.2021 17:37
Letzter Beitrag: Tommy56
Sad MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt daja64 11 728 30.01.2021 11:07
Letzter Beitrag: daja64
  LCD via I2C Backlight-Problem Herby007 10 920 06.01.2021 14:46
Letzter Beitrag: Herby007

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste