Go Down

Topic: Aquariumcontroller: hängt sich auf / stürzt ab / friert ein - Hilfe! (Read 2 times) previous topic - next topic

michael--g


Selbst wenn der free()-Bug dort nicht drin wäre, das grundsätzliche String-Problem mit dem fragmentierten Speicher bleibt bestehen, somit ist die String-Klasse für Systeme, die mehr als ein paar Durchläufe der Hauptschleife überstehen sollen, gar nicht zu empfehlen. Das Bisschen Bequemlichkeit ist den Ärger nie und nimmer wert.


Guten Abend,

danke für die Anregung, auf eine aktuelle IDE-Version umzusteigen. Als ich mein Projekt begann, gab es für meinen I2C-LCD noch keine passende Library für 1.0 oder 1.0.1. Daher habe ich die 0023 eingesetzt. Jetzt bin ich nach einem Tag herumsuchen mit meinen Nerven am Ende - aber unter 1.0.2 es scheint alles wieder wie vorher zu laufen. Vielleicht läuft mein Sketch jetzt stabil - ich hoffe zuerst, auch mit unter Einsatz der String-Klasse. Und wenn nicht, ist diese als nächste dran. (Und ich dachte zuerst "Never touch a running system" - aber eigentlich war es kein "running system", insoweit danke für die Anregung ;-)

Viele Grüße
Michael

michael--g


Selbst wenn der free()-Bug dort nicht drin wäre, das grundsätzliche String-Problem mit dem fragmentierten Speicher bleibt bestehen, somit ist die String-Klasse für Systeme, die mehr als ein paar Durchläufe der Hauptschleife überstehen sollen, gar nicht zu empfehlen. Das Bisschen Bequemlichkeit ist den Ärger nie und nimmer wert.


Guten Abend,

bin gerade dabei, alle Strings aus meinem Sketch zu beseitigen - habe bitte eine Frage:
Die Stringinstanz habe ich rausgeworfen und arbeite mit Chararrays, wie empfohlen.
Aber wenn ich Strings an meinen LCD schicke, lcd.print("blablabla"), bastelt der Arduino da nicht auch "irgendwie" mit Strings herum? Oder schiebe ich nur unnötig Panik ;-), denn dieses Zeug aus dem Sketch zu tilgen, wäre ein richtiger "Act" ?

Grüße
Michael

handyfreak

Danke!!!

Es läuft alles wie nie zuvor! Dank euerer Hilfe habe ich mein Problem lösen können.
Der Sketch / der Code läuft seit gestern ohne probleme. Auch die Übertragung zu Google klappt super. Genial!

Die Ursache war, wie bereits von mehreren Leuten vermutet; die Lösung "Char-Arrays" anstelle von Strings einzusetzen, als snsprintf Variante.

Mit Hilfe von Prüfpunkten, wurde der Fehler schnell lokalisiert, und der Code angepasst.

HIER der Link für den funktionierenden Code:

http://pastebin.com/eFW7ys4t


PS: Ein kleines Problem bleibt jedoch, die RTC läuft irgendwie nicht weiter wenn ich die Spannungsversorgung trenne. Sie merkt sich nur die Uhrzeit, wann ich das letzte mal die Uhr eingestellt habe, und startet dann wieder mit dieser Uhrzeit.
Aber dafür finde ich/wir bestimmt auch noch eine Lösung.

Noch mal an dieser Stelle:

DANKE für eure unermüdliche Hilfe, eure Tips und Ratschläge!

Max

uwefed


PS: Ein kleines Problem bleibt jedoch, die RTC läuft irgendwie nicht weiter wenn ich die Spannungsversorgung trenne. Sie merkt sich nur die Uhrzeit, wann ich das letzte mal die Uhr eingestellt habe, und startet dann wieder mit dieser Uhrzeit.


Ist die Buffer-Batterie fast leer?

Grüße Uwe

mkl0815

Ich würde mal vermuten das es an folgender Zeile in Deinem setup() liegt:
Code: [Select]

   RTC.begin(DateTime(__DATE__, __TIME__));


__DATE__ und __TIME__ sind Konstanten, die der Compiler (genauer gesagt der Präprozessor ... da ist er wieder, mein Perfektionismus) zum Zeitpunkt an dem das Programm übersetzt wird durch reale Werte ersetzt.
Damit wird bei jedem Start des Arduino die Zeit wieder auf diese Werte gesetzt, weil be jedem Neustart auch wieder die setup() Funktion aufgerufen wird.

Go Up