Start/ Stop mit Display funktioniert nicht wie gewünscht

Allen erstmal ei gutes und erfolgreiches neues Jahr gewünscht!

Ich stehe mir vermutlich selber auf dem Schlauch, ich komme gerade nicht weiter.

Ich baue gerade für meinen Arbeitgeber ein Testgerät, an dem an 5 Ausgängen (gemeinsam über MOSFET) 5 Lüfter hängen, welche zyklisch (100% ein für 6 Sekunden, aus für 8 Sekunden) gesteuert werden.

Das ganze wird auf einem 5" Nextion Display mit mehreren Seiten angezeigt, wobei die Anzahl der abzuarbeitenden Zyklen in (aktuell 1000er) Schritten vorgewählt werden kann.
Die Ausgänge sind mit Stromsensoren versehen, die den jeweiligen Strom messen.
Die Versorgungsspannung wird ebenfalls gemessen.

Später soll das ganze mittels RTC und SD Breakout geloggt werden und als .csv auf eine Karte geschrieben werden. (noch nicht im Code) Textfarbwechsel bei Überstrom folgt auch noch.

Displayoberfläche ist soweit programmiert, und die Kommunikation zwischen Arduino Mega2560 und Display funktioniert auch. Werte werden aktualisiert und korrekt angezeigt, können vorgewählt werden und die Kommandos kommen auch sauber auf den Arduino (serieller Monitor)
Und ja, ich arbeite mit der NextionLib…

Was aber nicht funktioniert ist die Zyklenabrbeitung…
Nach dem hochladen oder einschalten wird im ca. Sekundenrythmus hochgezählt…
Start/Stop Knopf auf dem Dysplay hat jeweils keine Wirkung…

hier mein bisheriger Code, musste (leider) als Datei angehängt werden, da Fehlermeldung:

The message has the following error or errors that must be corrected before continuing:
The message exceeds the maximum allowed length (9000 characters).

Vermutlich ist es nur eine Kleinigkeit…

Man möge mir verzeihen, wenn gewisse Sachen nicht perfekt programmiert sind, bitte…
Falls der Topic Titel irreführend ist, bitte um Hinweise.

Vielen Dank euch!

Tom

Nextion_test_simple_arbeit.ino (11.3 KB)

ArduBastler:
Ich baue gerade für meinen Arbeitgeber ein Testgerät ...

An einem Feiertag?!

Ich dachte immer, dass ich der Einzige sei, der einen an der Klatsche hat.

Gruß

Gregor

PS: Achte darauf, eine echt strenge Trennung zwischen privat und arbeit zu machen! Mir hat das, was ich daheim für die Arbeit gemacht habe, zwar immer Spaß gemacht, aber die fehlende strenge Trennung hat mir im Nachhinein riesige Probleme bereitet.

ArduBastler:
Ich baue gerade für meinen Arbeitgeber ein Testgerät, an dem an 5 Ausgängen (gemeinsam über MOSFET) 5 Lüfter hängen, welche zyklisch (100% ein für 6 Sekunden, aus für 8 Sekunden) gesteuert werden.
.....

Was genau heißt hier "gemeinsam über Mosfet" ?

Gemeinsam über einen Mosfet ?

Wenn du deinen Sketch noch als txt-Datei anhängst, kann ich den auch mobil lesen.

Und was genau funktioniert nicht ?
Deine Mosfetschaltung oder deine Tasten auf dem Display ?

Analogeingänge brauchen kein pinMode()

Hallo!

*.txt File und Display Screenshots angehängt

gregorss:
An einem Feiertag?!

Ich dachte immer, dass ich der Einzige sei, der einen an der Klatsche hat.

Gruß

Gregor

ja, kann vorkommem… haben wir das im positiven Sinn nicht alle irgendwie? :grinning:
Ist kein Problem, wir haben da eine entsprechende Vereinbarung.

@noiasca: die Funktion “void test_startPopCallback(void *ptr)” und “test_stop” darunter funktionieren nicht wie angenommen. Die entsprechenden Kommandos kommen aber vom Display zum Mega rüber.
Debug und Taster probiere ich heute aus.

@HotSystems: die Lüfter haben +V und GND, und einen PWM- “Ausgang”, der auf GND
gezogen wird, um die Geschwindigkeit zu regeln, hier mittels MOSFET (an Pin 11). Hatte ich schon in einem anderen Projekt so gemacht, funktioniert einwandfrei.

Der Datenstrom zwischen Display und Mega ist OK, die Kommandos der Buttons kommen an, und die Werte werden auf dem Display auch aktualisiert (Text wie Zahlen).
Irgendwie macht der Loop und die Start/ Stop Aufrufe nicht das, was ich eigentlich erwarte…
Druck auf den Startbutton soll die Zyklen starten, Stop wieder anhalten. Endgültiges Ende, wenn die vorgegebene Zyklenzahl erreicht ist mit Textmeldung “finished”.

Hoffe, es ist verständlicher…

Gruss
Tom

Nextion_test_simple_arbeit.txt (11.3 KB)

Ich hab' mit nicht deinen ganzen Sketch im Detail angeschaut, aber das:

void test_stopPopCallback(void *ptr) {                        //stop cycle (button read)

  test_cycle_stop;

}

macht doch sicher nicht das, was Du willst. Das sollte doch wohl erher

void test_stopPopCallback(void *ptr) {                        //stop cycle (button read)

  test_cycle_stop();

}

so aussehen oder?

OK, da war einer schneller :wink: