Hallo Zusammen
Ein Luftzylinder für eine Hatch wird über ein Nextion Display von einem Arduino gesteuert.
Programm TEIL 1
Durch betätigen des Nextion Button läuft der Luftzylinder (an pin 6) bis er den Endschalter (an Pin 3) erreicht hat.
Programm TEIL 2
Nach Erreichen des Endschalters schaltet im Display das Bild „Hatch“ von pic ID 8 auf pic Id 9 um. Der Bediener weiß bescheid
PROBLEM:
Beide Programmteile arbeiten, wenn ich sie getrennt „aufspiele“ einwandfrei.
Schreibe ich sie aber zusammen in einen Sketch steigt der Programm TEIL 1 aus. d.h. der Button läst sich noch auf dem Nextion-Display betätigen (wechsel von grau auf rot ist erkennbar), aber die Serialle Übertragung erfolgt nicht mehr.
Noch kurioser ist es, das nach dem Programmstart, solange kein nextion.print ausgeführt wird nextion.write ausführt. Nach dem ersten nextion.print ist kein nextion.write mehr möglich.
Vielen Dank für Eure Überlegungen dazu
SunRunner
#include <SoftwareSerial.h>
SoftwareSerial nextion(10, 11); // RX, TX
int HatchAUFPin = 6; // Pin für Railaus Hatch AUF
int EndschPin = 3; // Endschalter abfrage
int CRLED = 12; // Control LED
int valEndS = 0; // FLAG zeigt an, ob der Endschalter geöffnet oder geschlossen ist, nur mit geschlossenen Schalter kann weiter aufgefahren werden
String daten_display = "";
void setup() {
// Define pin modes for TX and RX
pinMode(10, INPUT);
pinMode(11, OUTPUT);
pinMode (HatchAUFPin, OUTPUT);
pinMode (EndschPin, INPUT); //Pin für Endschalter Hatch heben
pinMode (CRLED, OUTPUT);
// Set the baud rate for the SoftwareSerial object
Serial.begin(9600);
nextion.begin(9600);
}
//==================================================================
//==================================================================
void loop() {
// Hier wird geguckt ob Daten an der Seriellen Schnittstelle vorliegen.
if (nextion.available() > 0)
{
daten_display += char (nextion.read());
}
//==================================================================
// TEIL 1
// Abfrage Hatch AUF Button.
if (daten_display == "HatchAUF gedr")
{
digitalWrite(HatchAUFPin, HIGH); // Relais zieht an
daten_display="";
}
else if (daten_display == "HatchAUF los")
{
digitalWrite(HatchAUFPin, LOW); // Relais fällt ab
daten_display="";
}
//============================================================================
// TEIL 2
// Abfrage Endschalter Button.
valEndS = digitalRead(EndschPin);
// check if the Endschalter, wenn er betätigt ist ist er auf LOW
if (valEndS == LOW) {
// turn LED off:
digitalWrite(CRLED, LOW);
nextion.print("page2.Hatch.pic=8"); // Es wird ein Bild mit der ID8 angezeit
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
} else {
// turn LED on:
digitalWrite(CRLED, HIGH);
nextion.print("page2.Hatch.pic=9");// Es wird ein Bild mit der ID9 angezeigt
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
}
}
