Hi,
ich habe mittlerweile einige FUnktionen an meiner Aquariumsteuerung aber leider stürzt diese auch regelmäßig ab.
Habt ihr Tipps bzgl. des Vorgehens um herauszufinden, warum der Arduino abstürzt?
Vor allem bin ich nicht sicher, ob das nun einfach nur ein Softwarefehler ist oder ob das an der Hardware liegt? Kann es zB sein dass irgendwo ein kleiner Kurzschluss auftritt oder sowas?
Danke
Thorsten
Sehr schwierig zu sagen; Meine Kristallkugel ist in Reinigung.
Ich tippe auf eine Softwarefehler. zB du verwendest ein 4-Element-Array und schreibst 5 Werte rein.
Hartware kannst Du ausschleißen indem Du alle Ausgänge trennst und schaust ob Arduino trotzdem blockiert. Falls er sich nicht blockiert einen Ausgang nach dem anderen wieder anschleißen und kontrollieren.
Wenn Du möchtst, daß wir die mehr helfen Brauchen wir die Schaltung und den Kode.
Grüße Uwe
Hi Uwe,
klar, so ohne weitere Infos könnt ihr mir nicht helfen. Wollte auch erst mal hören, wie man generell als Anfänger seinen Code prüft & verbessert, ohne dass ihr Profis meinen Code selbst auseinander nehmen müsst.
Mittlerweile ist der Code recht lang, aber ich bin mir sicher, dass da einige Dinge sind, die man besser/kürzer programmieren kann.
Vermutlich sind doch einige Dinge umständlich. Ich habe einfach mal die PDE Datei angehängt, da der Code die max zulässigen Zeichen hier übertrifft glaube ich.
Es gibt eine große Datei und eine abgeschwächte wo nur ein paar Grundfunktionen aktiviert sind. Aber auch die crasht. Die hatte ich in den letzten 12 Tagen für meine UrlaubsVertretung laufen.
Falls Fragen zu bestimmten Parts sind einfach fragen
Gruß
Thorsten
AquaController.pde (21 KB)
AquaControllerBasic.pde (9.14 KB)
Schnelle Kontrolle der Basic Version:
long currmillis[5];
long lcdmillis = 0;
müssen unsigned long Variablen sein.
"minute" ist eine reserviertes keyword. Als Variable wählst Du besser einen anderen Namen.
Das gleiche gilt für "loop" und "check"
Grüße Uwe
schon mal ersten dank....heisst das, dass die variablen als long relativ schnell volllaufen und dadurch einen abbruch erzwingen?
Nein, das Überlaufen ist nicht das Problem. Wenn man den Vergleich mit millis() richtig schreibt, wird der Überlauf richtig behandelt (Zeit ist richtig). Das Problem ist, daß die Variable nach der Hälfte negativ wird. Bei millis() ist das nach ca 25 Tagen der Fall.
Ich würde aber nicht sagen, daß das einen Abbruch hervorruft sondern für 25 Tage Die bedingungen entweder sofort wahr sind oder gar nicht (müßte den Kode kontollieren, wozu ich jetzt keine Zeit habe)
Grüße Uwe
Hi,
ich denke wohl, ich komme nicht dran vorbei, den gesamten Code noch einmal neuaufzusetzen und dabei alles noch einmal zu prüfen inwiefern ich da Bugs drin habe. FAlls Dir noch was auffällt, freu mich über Tipps.
Gruß