Programm stopt aber warum??????

Habe in mein Script einen SD write/read eingebaut aber aber danach will er nicht weiter laufen.

Hab hier dass teil von mein Script es ist nur ein test für die SD-karte

void setup() {


  Serial.begin(9600);   //Monitor function an
    Serial.println("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  Serial.println ("Programm lauft");

  FlexiTimer2::set(500, flash); //pulsschlag 0,5 sec
  FlexiTimer2::start();
}
//=================================================
void loop()

Es wird auch geschrieben und gelesen

Von mein Serieller Monitor

Initializing SD card...
Initializing SD card...
initialization done.
Writing to test.txt...done.
test.txt:
.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.
testing 1, 2, 3.

Warum lauft es nicht es gibt nach meine Meinung kein Stopp aber er Stoppt vor

  Serial.println ("Programm lauft");

Ich danke schon mal im Voraus

Der bleibt an der While-Schleife "myFile.available" hängen.

Danke HotSystems

habe ein Stuck Script raus geschmissen

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

Und lauft jetzt weiter bis nach

 Serial.println ("Programm lauft");

und geht dann nicht weiter.

Serieller Monitor gibt

Initializing SD card...
initialization done.
Writing to test.txt...done.
Programm lauft
In

Was dass jetzt wieder ist muss ich raus finden

Ich bedanke mich bei dir

Merkwürdig.

  1. Verstehe ich nicht HotSystems’ Erklärung mit dem available()
  2. Woher kommt in deiner Version 1 die Ausgabe-Zeile mit dem Punkt?
Writing to test.txt...done.
test.txt:
.

← woher kommt das ?

testing 1, 2, 3.


3. Fehlt in der neuen Version die Ausgabe

test.txt:

Oder alternativ die Fehlerausgabe

Und wann du in der zweiten Version Programm lauft ausgibst, sieht man leider auch nicht.

  1. sehe ich im Schnipsel der zweiten Version keinen Unterschied zur ersten Version.

michael_x:
Merkwürdig.

Da stimme ich Dir zu! Der Sketch aus #0 hat bei mir diese Ausgabe:

Initializing SD card...
initialization done.
Writing to test1.txt...done.
test1.txt:
testing 1, 2, 3.
Programm lauft

Ich vermute daher den Fehler außerhalb des gezeigten Schnipsels :slight_smile:
Mir fehlt SPI.begin();.

So habe ich mit einem Mega2560 getestet:

#include "SPI.h"
#include <SD.h>

#define SD_CS 53   // Set the chip select line for SD-card

void setup() {
  Serial.begin(9600);   //Monitor function an
  Serial.println("Initializing SD card...");
  SPI.begin();

  if (!SD.begin(SD_CS)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test1.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test1.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test1.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test1.txt");
  if (myFile) {
    Serial.println("test1.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test1.txt");
  }

  Serial.println ("Programm lauft");
}
//=================================================
void loop() {}