SD Karten-Code Problem

Gast #4822638
Hallo.
Ich habe ein Problem mit dem Code des SD-Karten Moduls.
Mein Ziel:
Auf die SD Karte soll nur am Anfang ein einziges mal zB. "SD karte 
bereit" geschrieben werden.
Danach sollen in der loop() Funktion jede Sek. sensor Daten gespeichert 
werden.
Mein Problem:
...
void setup(){
if (SD.begin())
  {   myFile = SD.open("Projekt.txt", FILE_WRITE);
    myFile.println("SD Karte ist funktionsbereit");
   } else{
    myFile.println("Fehler beim einlesen der SD Karte!");
    return;
  }}

void loop() {
myFile = SD.open("test.txt", FILE_WRITE);
  if (myFile) {
myFile.println(val);
 myFile.close(); // close the file
  } else {
   Serial.println("Dokument kann nicht geöffnet werden! ");
  }
  delay(1000);
}


 Bei dem Code habe ich in loop und setup  SD.open() verwendet weil ich 
meine,
das in setup für das einmalige speichern von "SD Karte ist 
funktionsbereit"
schon SD.open() notwendig ist, aber in loop ebenfalls weil bei der 
Schleife jedesmal wieder SD.open() gebraucht wird ansonsten bleibt das 
txt-Dokument durch das letzte myFile.close() doch geschlossen und kann 
keine Sensor-Daten aufnehmen ?!
Dieser Code funktioniert wie schon gedacht nicht.
Hat jemand einen schlauen Tipp oder Lösung parat?

MfG Heike
heike schrieb:
> Dieser Code funktioniert wie schon gedacht nicht.

Was genau funktioniert nicht? Mit der Fehlerbeschreibung kan niemand was 
anfangen.


Im setup() fehlt übrigens das myFile.close(), d.h. das File wird nicht 
geschlossen und u.U. nix auf die SD Karte geschrieben.

IMO müsste das eine Projekt.txt mit 0 Bytes ergeben, die nach einem 
Scandisk Lauf eine Länge von einem Cluster bekommt. Kenne mich aber mit 
den Arduino Libs nicht sonderlich gut aus.

Der else Zweig im setup() ist auch alles Andere als funktional.
Gast
heike schrieb:
> void setup(){
> if (SD.begin())
>   {   myFile = SD.open("Projekt.txt", FILE_WRITE);
>     myFile.println("SD Karte ist funktionsbereit");
>    } else{
>     myFile.println("Fehler beim einlesen der SD Karte!");
>     return;
>   }}

Wie genau soll denn die Fehlermeldung in die Datei geschrieben werden, 
wenn die Datei nicht geöffnet werden konnte?!

Außerdem ist es natürlich enorm ineffizient, die Datei ständig aufs neue 
zu öffnen und zu schließen... Die Karte lebt so vermutlich auch kürzer, 
wenn ständig der Verzeichniseintrag neu geschrieben wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.