Speichergröße bei Arduino?
Hallo,
ich möchte für ein Projekt Messdaten aus einem Sensor lesen und diese dann später auf eine SD Karte abspeichern.
Das Problem ist, dass der Sensor alle 20ms Daten ausgibt, das abspeichern auf die SD Karte selbst allerdings ebenfalls so viel (wenn nicht sogar noch mehr) Zeit beansprucht.
Um mir bei der Messung nicht mit dem Abspeichern im Weg zu stehen, habe ich mir überlegt, eventuell erst einmal die Messdaten in ein Array zu speichern und dieses dann am Ende oder zwischendurch auf die SD Karte zu speichern.
Ich weiß jedoch nicht wie viele Messungen in so ein String Array reinpassen. Daher die Frage an euch, wie viel dort reinpasst, ob das Sinn macht oder ob es bessere Lösungen gibt. Bedingung ist allerdings, keine weiteren Bauteile wie z.B. einen richtigen Datenlogger zu benutzen.
Eine Messung würde etwa so aussehen: "156/4/198/4/16/" (String)
mögliche Boards sind ein Wemos D1 mini und ein Arduino Nano
1 Antwort
Warum als String Array?
uint16_t werte[256];
Wäre ein Array mit 256 ganzzahlwerten die schreibst du nacher als String auf die SD Karte. Ist wesentlich Effizienter als der String. Und je nach deiner Programm größe sollten sich 256 Integer bzw 512 Byte im Ram ausgehn.
Aber warum benötigt das Speichern bei dir länger als 20ms. SD Karten erreichen selbst im SPI Modus um die 1Mbit/s Schreibgeschwindigkeit, das sollte locker reichen auch ohne Bursts.
Ja das Dokument öffnen dauert länger aber du kannst es ja offen lassen und musst es nicht ständig öffnen und schließen.
Wenn das keine Wahl ist dann eben die Werte in einem normalen Array speichern und dann eben die Datei öffnen alle Werte aus dem Array reinschreiben und wieder schließen.
Danke für den Vorschlag!
Ich schätze, dass das Zeitproblem in der Kontaktaufnahme zur SD Karte liegt. Die Karte braucht 0.5-2ms für eine Zeile Text schreiben. Aber das Dokument zu öffnen und zu schließen und alles drum herum dauert glaube ich länger.