Forum: Mikrocontroller und Digitale Elektronik SD-KArte jede stunde einen Wert speichern


von Eva T. (Firma: ASch) (evatonna)


Angehängte Dateien:

Lesenswert?

SD-Karte soll alle jede stunden einen Wert speichern. Das aber nur 5 
mal. Nach dem 5ten mal soll immer der älteste Wert gelöschte werden.
Die Werte +Uhrzeit zu speichern klappt schon.
Vermute das man hier einen for schleife benötigt die ich einfach bis 5 
zählen lasse?
Bitte um Hilfe LG

: Bearbeitet durch User
von Schlaumaier (Gast)


Lesenswert?

Eva T. schrieb:
> Vermute das man hier einen for schleife benötigt die ich einfach bis 5
> zählen lasse?

Kann man machen, aber ich würde es anders machen.

Ein Array (5 Werte) anlegen, mit den Werten und zum Speichern das Array 
schreiben.
Dann via Schleife die Werte im Array Hochschieben.
den Werten den letzten Wert in Feld 5 schreiben

Und das Array speichern.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Warum vermischst du eigentlich diesen
1
  if (! rtc.begin()) {
2
     ...
und diesen Klammerunsstil
1
  if (SD.begin())
2
  {
3
     ...
dauernd? Das erschwert das Lesen unheimlich. Kommt das einfach daher, 
dass du den einen Codeschnipsel dorther und den anderen von woandersher 
kopiert hast?

Eva T. schrieb:
> Vermute das man hier einen for schleife benötigt die ich einfach bis 5
> zählen lasse?
Ich würde einfach
* 1 Stunde abwarten
* die geschriebene Datei einlesen, und dabei von den 5 eingelesenen 
Strings nur die letzten 4 speichern
* diese 4 Strings wieder in die Datei schreiben (O_TRUNC "leert" die 
Datei)
* den neuen Wert ebenfalls in die Datei schreiben

Denn dann musst du keinen lokalen Puffer vorhalten und verwalten, 
sondern du kannst dich z.B. bei einem Stromausfall auf die der SD 
gespeicherten Daten verlassen.

Schlaumaier schrieb:
> Ein Array (5 Werte) anlegen, ....
> Und das Array speichern.
Genaus das meinte ich: bei einem Stromausfall? Daten futsch...

: Bearbeitet durch Moderator
von Falk B. (falk)


Lesenswert?

Eva T. schrieb:
> SD-Karte soll alle jede stunden einen Wert speichern. Das aber nur 5
> mal. Nach dem 5ten mal soll immer der älteste Wert gelöschte werden.

Kann man machen, ist hier aber eher fragwürdig. Bei sooooo wenig 
Datenaufkommen speichert man das einfach in eine Datei und gut. Vor 
allem bei den heutigen Speichermengen und Preisen.

> Die Werte +Uhrzeit zu speichern klapt schon.

Dein Programm ist "leicht" chaotisch. Außerdem sollten das "echte" 
Programm nicht in die Funktion setup() packen, auch wenn das rein 
technisch geht. Bei deinem Quelltest sieht man nicht, was einmaliges 
setup und dauerhaftes Programm ist!

> Vermute das man hier einen for schleife benötigt die ich einfach bis 5
> zählen lasse?

Nicht ganz. Wenn man es ohne SD-Karte machen würden, dann braucht man 
einen Ringpuffer, sehr ähnlich zu einem FIFO. Dort schreibt man 
Daten rein, wobei irgendwann die alten Daten überschrieben werden.

> Bitte um Hilfe LG

Strukturiere erstmal deinen Quelltext vernünftig. Denn wer den so 
chaotisch schreibt, der denkt und arbeitet ebenso. Und das wird nix, 
schon gar nicht als AnfängerInnen ;-)

Strukturierte Programmierung auf Mikrocontrollern

von Schlaumaier (Gast)


Lesenswert?

Lothar M. schrieb:
> Schlaumaier schrieb:
>> Ein Array (5 Werte) anlegen, ....
>> Und das Array speichern.
> Genaus das meinte ich: bei einem Stromausfall? Daten futsch...

OK. An ein Stromausfall habe ich nicht gedacht.

Aber ich finde 5 Werte auch echt was Wenig. Ne SD-Karte ist groß genug. 
Jeden Tag ne Datei mit den Datum anlegen und dann mit APPEND einfach 
dran schreiben.

Die 24 Werte pro Tag machen den Käse auch nicht Fett.

Mit Display und Tastatur (4 Tasten reichen locker) kann ich mir die 
letzten Werte auch anzeigen lassen. Einfach von der SD-Karte lesen.

von Rolf M. (rmagnus)


Lesenswert?

Lothar M. schrieb:
> Schlaumaier schrieb:
>> Ein Array (5 Werte) anlegen, ....
>> Und das Array speichern.
> Genaus das meinte ich: bei einem Stromausfall? Daten futsch...

Da könnte man aber auch einfach beim Start in der "setup()"-Funktion 
einmal die Daten von der Karte lesen.

Aber ich frage mich auch, warum nur 5 Werte. Heute hat man doch 
eigentlich kaum noch Karten unter 4 GB, und da passen bei dem Format 
Daten für die nächsten 19.000 Jahre drauf.

: Bearbeitet durch User
von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Etwa so.

von Schlaumaier (Gast)


Lesenswert?

Falk B. schrieb:
> Etwa so.

Genau. Immer drauf auf die Karte. ;) Selbst die kleinste Karte reicht 
locker für einige Jahre. ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rolf M. schrieb:
> Aber ich frage mich auch, warum nur 5 Werte.
Steht halt so in der Schulaufgabe. Was sonst?

von Schlaumaier (Gast)


Lesenswert?

Lothar M. schrieb:
> Steht halt so in der Schulaufgabe. Was sonst?

Wenn du recht hast, habe ich auch Recht ;)

Dann sollen sie Array lernen und keinen Stromausfall ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.