für eine Messanwendung möchte ich jede Sekunde einen Wert erfassen und die Werte aufsummieren. Das erfassen der Werte funktioniert.
Für das Aufsummieren habe ich mir einen vereinfachten Sketch geschrieben um dies zu testen. Eigentlich sollte sich der Wert jede Sekunde um das vorgegeben Inkrement erhöhen und dies an der seriellen Schnittstelle anzeigen:
Wegen der Ungenauigkeit von Fließkommazahlen beim Arduino kannst Du keine Summe mit einer Fließkommazahl machen. Irgendwann hat das Aufsummieren keinen Einfluß mehr auf die Fließkommazahl.
Hallo Arduino_Andi,
gerade Anfangs in der Lernphase finde ich es erleichternd, Strukturen zu lernen, an die man sich später, nach einer Pause möglichst gut erinnert und auch nach kurzem Einblick nachvollziehen kann.
Wie Serenifly schrieb, hören Variablen am Ende einer function() auf zu existieren. Und wenn zu Begin einer function() Variablen deklariert werden, sind sie bei wiederholtem Aufruf immer wieder neu, mit dem Anfangswert da.
Du kennst den Film mit Jack Nicholson "Und ewig grüßt das Murmeltier"?
Static, wie von Serenifly zu verwenden, funktioniert. Allerdings mußt Du immer im Augen behalten, wo Du Static angewendet hast und wo nicht.
Selbst ziehe ich vor, Variablen, mit denen in loop() fortlaufend gearbeitet wird, im Deklarationsteil zu deklarieren. Dann sind sie global und sind in jeder function() verfügbar.
Wie mans macht, ist etwas Geschmackssache. Allerdings sollte man sich im eigenen Code immer wieder finden und nicht willkürlich einmal eine und dann die andere Strategie verfolgen, wenn es keinen sinnvollen Grund dazu gibt, sonst schleichen sich schnell Fehler ein.
Aber was solls, letztens bin ich selbst noch über einen ähnlich gelagerten eigenen Fehler gestolpert und Serenifly machte mich darauf aufmerksam;)