Pages: [1]   Go Down
Author Topic: Datei auf SD mit Text füllen  (Read 693 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich habe folgendes Sketch:
Code:
#include <SD.h>

File datei;

void setup()
{
  Serial.begin(9600);
while (!Serial)
{
;//Auf seriellen Port vom Leonardo warten
}


Serial.print("Initialisiere SD Karte...");
pinMode(10, OUTPUT);

if(!SD.begin(10))
{
  Serial.println("Initialisierung fehlgeschlagen!");
  return;
}
Serial.println("SD Karte Initialisiert");
if (SD.exists("templog.txt"))
{
  Serial.println("templog.txt exists.");
}
else
{
  Serial.println("templog.txt existiert nicht.");
}

Serial.println("Erstelle templog.txt...");
  datei =SD.open("templog.txt", FILE_WRITE);
  if (datei)
  datei.print("test");
  datei.close();
 
if (SD.exists("templog.txt"))
{
  Serial.println("templog.txt exists.");
}
else {
  Serial.println("templog.txt existiert nicht.");
}
Serial.println("Entferne templog.txt...");
SD.remove("templog.txt");

if (SD.exists("templog.txt"))
{
  Serial.println("templog.txt existiert.");
}
else
{
  Serial.println("templog.txt existiert nicht.");
}
}

void loop()
{
}

Die Datei wird auch ganz normal auf meiner SD Karte gespeichert, nur bekomme ich keine Statustexte auf dem seriellen Monitor angezeigt und die Datei bleibt leer.
Und das obwohl ich im Sketch folgendes geschrieben habe:
Code:
Serial.println("Erstelle templog.txt...");
  datei =SD.open("templog.txt", FILE_WRITE);
  if (datei)
  datei.print("test");
  datei.close();

Wenn das falsch wäre, würde ich doch eine Fehlermeldung bekommen, oder nicht?

Gruß Denis
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 56
Posts: 2972
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
nur bekomme ich keine Statustexte auf dem seriellen Monitor angezeigt
Gar keine ?

D.h. weder
    SD Karte Initialisiert
noch
    Entferne templog.txt...

Was passiert, wenn vorher eine Datei templog.txt mit Inhalt existiert ? Bleibt dieser Inhalt unverändert erhalten ?

Du solltest übrigens ansehen, was Tool -- automatisch Formatieren aus

Code:
  datei =SD.open("templog.txt", FILE_WRITE);
  if (datei)
  datei.print("test");
  datei.close();

macht: 1. besser lesbar, 2. logische Fehler in Form fehlender Klammern werden sichtbar.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für den Tip mit dem automatischen formatieren.
Stimmt, ich bekomme nicht eine einzige Meldung auf dem seriellen Monitor.
Habe nun auch mal eine templog datei auf der Karte mit text gefüllt, aber auch danach passierte nichts.
Keine Anzeige und keine Änderung an der Datei.
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 56
Posts: 2972
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also fehlt vermutlich die Ausgabe von
Code:
Serial.println("Initialisierung fehlgeschlagen!");

Schliess den Serial Monitor an und drück danach die Reset-Taste ...

Funktioniert der cardinfo Beispiel-Sketch ...

Bau mal ein delay in setup() ein...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also theoretisch sollte das Sketch laufen, oder?
Ich hab noch irgendein Problem mit meinem SD Modul. Das INFO Sketch funktioniert nicht!
Was ich komisch finde, denn die templog datei wird ja ohne inhalt erstellt.
Ich denke mal das es mit dem leonardo noch einige Probleme gibt oder noch etwas in der Bibliothek angepasst werden muss.
Denn nachdem ich ein delay eingebaut habe passierte auch nichts.
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 56
Posts: 2972
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Also theoretisch sollte das Sketch laufen, oder?
Ich hab noch irgendein Problem mit meinem SD Modul. Das INFO Sketch funktioniert nicht!

Ja, dein Code ist so ok:
Code:
File f = SD.open();
if (f) {
 // open hat geklappt
}
else {
 // open failed
}

Was heisst denn "funktioniert nicht" ? CardInfo sollte Fehlermeldungen liefern, wenn es Probleme mit der SD Card hat.
Wenn du weiterkommen willst, schau dir mal den Sourcecode von SD.begin() an, das sind nur 3 Initialisierungen nacheinander.
Evtl. hilft es rauszukriegen, wie weit es läuft, indem du dies in deinem eigenen sketch Schritt für Schritt mit Fehlermeldungen nachbaust...

Aber, nachdem ich diesen Satz gelesen hab:
Quote
The Leonardo has some slight differences in the capabilities and assignments of various pins (especially for SPI and TWI). These are detailed on the hardware page
....
SPI: on the ICSP header. These pins support SPI communication using the SPI library. Note that the SPI pins are not connected to any of the digital I/O pins as they are on the Uno, They are only available on the ICSP connector. This means that if you have a shield that uses SPI, but does NOT have a 6-pin ICSP connector that connects to the Leonardo's 6-pin ICSP header, the shield will not work. 
frag ich erstmal nicht nach Besonderheiten deines SD Moduls oder deiner Speicherkarte (hast du einen UNO, mit dem es funktioniert ?) sondern eher :
Kannst du die MISO / MOSI /SCLK Signale von dort holen ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 34
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das mit den ICSP hatte ich auch alles gemacht.
Da ich dann aber gestern durch den ganzen Frust mich dazu entschlossen habe den Leonardo umzutauschen, habe ich mir dann einen uno smd gekauft.
Dort funktioniert jetzt auch alles so wie es sein sollte. anscheinen hätte ich noch einiges in den Bibliotheken ändern müssen. Da ich das aber durch meine Unkäntniss nicht kann, ist es mir so nun lieber.
Dennoch danke für die Hilfe. Ich bekomme nun auch alle Daten richtig auf dem seriellen Monitor ausgegeben.
Logged

Pages: [1]   Go Up
Jump to: