/*
 Karda SD - odczytywanie i zapisywanie danych
 
 Ten przykład demonstruje odczytywanie i zapisywanie danych z i w pliku na karcie SD
 Obwód:
 * Karta SD podłączona do magistrali SPI w następujący sposób:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 Szkic utworzony w listopadzie 2010
 Autor: David A. Mellis
 Szkic zaktualizowany 2 grudnia 2010
 autor modyfikacji: Tom Igoe
 
 Ten przykładowy kod jest dostępny publicznie.
 
 */

#include <SD.h>


File myFile;


void setup()
{
  Serial.begin(9600);
  Serial.print("Inicjalizacja karty SD...");
  // W module sieciowym funkcję pinu CS pełni pin nr 4. Pin domyślnie jest traktowany jako wyjście.
  // Należy pamiętać, że nawet gdyby pin nr 4 nie był używany w roli pinu CS, sprzętowy pin SS
  // (czyli pin nr 10 na większości płytek Arduino lub pin nr 53 na płytkach Mega) musi być pinem wyjściowym;
  // w przeciwnym razie biblioteka SD nie będzie działała prawidłowo.
  pinMode(10, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("Inicjalizacja zakończona niepowodzeniem!");
    return;
  }
  Serial.println("Inicjalizacja przebiegła prawidłowo.");

  // Otwiera plik. Należy pamiętać, że jednocześnie może być otwarty tylko jeden plik,
  // zatem przed otwarciem następnego pliku należy zamknąć aktualnie otwarty plik.
  myFile = SD.open("test.txt", FILE_WRITE);

  // jeśli plik został prawidłowo otwarty, można zapisać dane
  if (myFile) {
    Serial.print("Zapisywanie w pliku test.txt...");
    myFile.println("test 1, 2, 3.");
    // zamknięcie pliku:
    myFile.close();
    Serial.println("gotowe.");
  } 
  else {
    // jeśli plik nie został otwarty, wyświetla komunikat o błędzie:
    Serial.println("Błąd podczas otwierania pliku test.txt");
  }

  // Ponowne otwarcie pliku do odczytu:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // odczytuje dane do momentu osiągnięcia jego końca pliku:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // zamknięcie pliku:
    myFile.close();
  } 
  else {
    // jeśli plik nie został otwarty, wyświetla komunikat o błędzie:
    Serial.println("Błąd podczas otwierania pliku test.txt");
  }
}


void loop()
{
  // po zakończeniu wykonywania nie są wykonywane żadne operacje
}

