Hallo.
Ich arbeite gerade mit dem Arduino MEGA 2560 und möchte damit eine Prüfeinheit realisieren, daß eine Baugruppe von uns überprüft.
Das Monitoring mit den Messdaten sowie die Ansteuerungsausgänge funktionieren schon.
Ich kann ein Befehl über den Serial Monitor eingeben, dann läuft die Testprozedur los.
Aber ich möchte für das Gerät ein Display (Nextion 7") anschließen und die Befehle damit eingeben.
Das funktioniert nicht, obwohl der Nextion den richtigen String herausgibt.
Bei der Spannungsmessung habe ich gesehen, daß ich den Pegel noch anpassen muss von 3,3V (Nextion) auf 5V (Arduino Mega). Das habe ich gemacht.
Wenn ich aber einen Befehl vom Nextion schicke, funktioniert das einfach nicht.
Wenn ich den String über eine weitere serielle Schnittstelle vom PC (mit Umsetzer auf TTL Pegel) auf Serial2 schicke, dann funktioniert das nur, wenn ich die Software neu draufprogrammiere.
Sobald ich die Schaltung aber mal spannungslos mache, geht das auch nicht.
Bei diesem Problem hänge ich erst mal fest.
Bei der Loop Funktion sperrt der Arduino die Lauscher auf bei Serial2 und ruft dann die Funktion readinputbuffer auf, sobald was anliegt. Mit Status_Reset setzt er Error und OK Flags im Nextion zurück, damit die im Testdurchlauf neu gesetzt werden können.
Mit Serial.print(inputbuffer) habe ich (nur zu Testzwecken) den inputstring noch mal ausgeben wollen.
Hier der Code:
void loop() { //Main
//int Befehl; //Befehl vom Display in integer
//String inputbuffer="";
//Lesen serielle Schnittstelle
if (Serial2.available() >0){
Serial2.setTimeout(20);
//String auslesen und anschließend auswerten
//Beispiel: "!01;2;2;1;3;1*"
inputbuffer = Serial2.readString();
//Serial.println(inputbuffer);
readinputbuffer(inputbuffer); //Auswertung von dem, was das Nextion gesendet hatint commandInt;
Status_Reset();
Command_Auswertung();
}
//Inhalt von inputbuffer ausdrucken testweise
Serial.print(inputbuffer);
//Inputbuffer leeren
inputbuffer="";
delay(60);
}
Bei der Überprüfung hat sich ergeben, daß der Arduino in die if Bedingung nicht reingeht. Er erkennt also nicht, daß etwas anliegt. Am Oszilloskop kann ich aber erkennen, daß er Nextion sein String schickt.
Hatte jemand von Euch schon mal so einen Fehler?
Danke für Eure Hilfe.