Nextion mit Arduino

Hallo zusammen

Ich kriege kein Beispiel mit dem Nextion zum laufen.

Die Kommunikation scheint zu funktionieren, denn wenn ich RX und TX umdrehe, dann kann ich auch keinen Sketch hochladen.

Hier mein Code (ohne Nextionintegration) denn ich verarbeiten möchte.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> // OLED
#include <Adafruit_SSD1306.h> // OLED
//#include <DHT.h>
//#include "MQ135.h"
#include "cactus_io_BME280_I2C.h"

// LED
const int ledRedPin =  4;
const int ledGreenPin =  3;
unsigned long previousMillis = 0;        // will store last time LED was updated
int ledRedState = LOW;             // ledState used to set the LED
const long intervaldisplay = 2000;           // interval at which to blink (milliseconds)
const long intervalhumy = 1000;           // interval at which to blink (milliseconds)

// bmp280
BME280_I2C bme(0x76);  // I2C address = 0x76

// Oled-Display
#define OLED_RESET 4 // OLED
Adafruit_SSD1306 display(OLED_RESET); // OLED

#if (SSD1306_LCDHEIGHT != 64) // OLED
#error("Height incorrect, please fix Adafruit_SSD1306.h!"); // OLED
#endif // OLED

void setup() {
  Serial.begin(9600);
  pinMode(ledGreenPin, OUTPUT);
  digitalWrite(ledGreenPin, HIGH);

  display.begin(SSD1306_SWITCHCAPVCC); // OLED
  if (!bme.begin()) {
    Serial.println("Could not receive values from sensor");
    while (1);
  }
}

void loop() {
  bme.readSensor();
  get_ueberwachung_bmp280();
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= intervaldisplay) {
    previousMillis = currentMillis;
    display.clearDisplay(); //Display leeren
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.print("Temp:");
    display.println(bme.getTemperature_C(),1); // neu
    display.setCursor(0,18);
    display.print("Luft:");
    display.println(bme.getHumidity(),1); // neu
    display.setCursor(0,36);
    display.print("Druck:");
    display.println(bme.getPressure_HP() / 100, 0); // neu
    display.display(); 
  }
}
void get_ueberwachung_bmp280(){
unsigned long currentMillis = millis();
  
  if (bme.getHumidity()>= 50.0 ) {
    if (currentMillis - previousMillis >= intervalhumy) {
      previousMillis = currentMillis;
        
        if (ledRedState == LOW) {
          ledRedState = HIGH;
        } else {
          ledRedState = LOW;
        }
      digitalWrite(ledRedPin, ledRedState);
    }
  } else {
      digitalWrite(ledRedPin, LOW);   
  }
}

ist noch auf OLED display ausgelegt.

Die Variablen die ich da verarbeite, möchte ich geren am Nextion sehen.

Gerne würde ich mein HMI hier posten, aber leider geht das Attachment irgendwie nicht bei mir!

Falls gewünscht kann ich es dann demjenigen zusenden, der helfen kann

Auf dem Nextion habe ich die drei Felder

Temp
Luft
Druck

die ich gerne verarbeiten würde.

Ich hoffe irgendeiner weiss wieso das bei mir nicht geht

homewetter.zip (406 KB)

Wenn Du uns Deinen Sketch mit Nextion nicht zeigst, woher sollen wir dann wissen, was nicht funktioniert?

Gruß Tommy

Weil ich einfach nicht weiss wie ich Nextion einbinden soll, weil kein Beispile funktioniert.

Habe also nicht wirklich Sketch dazu mit Nexion.

Dann arbeite Dich mal durch diesen Lehrgang. Die Nextion-Lib weg lassen.

Gruß Tommy

Hallo Darter69,

bei google ist das erste Ergebniss was angezeigt wird, wenn man nach sachen wie "Nextion tutorial" oder sowas sucht, dieser Link

https://www.boecker-systemelektronik.de/epages/63381271.sf/de_DE/?ObjectPath=/Shops/63381271/Categories/Tutorials/Nextion_Tutorials

Damit hättest du sicher was anfangen können.

Edit:

Mein vorredner hat alles gesagt :)

Habe dieses Tutorial schon einmal versucht.

Im Monitor erscheint 6 mal die 0 und dann nix mehr.

Ich denke es liegt am Eingang. Normalerweise ist dies für RX=0 und TX=1 leider geht da gar nichts

Dann musst Du Softserial nehmen. Die Pins 0/1 sind dafür nicht geeignet. Wir wissen ja nicht, welchen Arduino Du benutzt und wie Du alles verschalten hast. Da hätte auch der nicht funktionierende Sketch geholfen, diesen Fehler zu erkennen. Da es von Dir aber kaum Infos gibt, können die Hilfen auch nur sehr allgemein ausfallen.

Gruß Tommy

Hallo, schreibe den Sketch einmal so, das alles Ausgaben auf den Seriellen Monitor gehen. Also alles DisplayZeug´s raus. Dann legst Du eine serielle Schnittstelle für das Nextion fest. Hier kannst Du dann nachlesen wie etwas zum Nextion gesendet wird. Gruß und Spaß Andreas

Kommt mal runter.. Das Problem ist das z.B. ein Uno nur eine Serial hat. Desshalb kannst du nichts hochladen wenn das nextion angeschlossen ist. D.h Nextion abhängen, Programm laden und wieder verbinden. Naürlich kannst du so auch nix mit dem Seriellen Monitor machen, da die Serielle-Schnitstelle vom Nexion gebraucht wird.

Lösung: Ein arduino Mega der über mehrere Serielle-Schnitstellen verfügt. Das gleiche gilt für die Kommunikation von Arduinos untereinander.

->Der maga hat dann einfach Serial1, Serial2 usw...

Das Programm kannst du Via USB aber nur über die normale Serial übertragen. (Diese muss also frei sein)

LG Marvin

@ MarVs2 Der Aduino UNO hat zwar nur eine serielle Hardware-Schnittstelle, aber man kann eine zweite via Software für das Display emulieren. Das wurde aber schon in #6 gesagt. Grüße Uwe

Voll nice…
An diesem Probelm sass ich auch gerade.
Dann sollte ja alles funktionieren :slight_smile:
library muss noch angepasst werden für nexion.

THX

Besser ist es wohl, die Nextion-Lib ganz weg zu lassen und die Kommunikation mit dem Nextion direkt selbst abzuwickeln.

Gruß Tommy

MarVs2: ..... Dann sollte ja alles funktionieren :) ....

Das wird es auch, wenn man es richtig macht. Und wie Tommy schreibt, am Besten ohne die Nextion Library und mit SoftwareSerial. Der TO wird das sicher auch zum Laufen bekommen haben.

Hallo, hier gibt es eine 100%tig laufende Lib mit dem passendem Display dazu. Das Ding lauft auch mit einem UNO ohne Probleme. Gruß und Spaß Andreas

Langsam wird Deine Verkaufswerbung lästig.

Gruß Tommy

Grüße Dich Tommy, ich weiß, ist der letzte Versuch gewesen. Gruß und Spaß Andreas