Problema con libreria Sd.h

non c'è la SPI.h e non dichiari i pin 4 e 10
comunque a me così modificato funziona

/*
  SD card datalogger
 
 This example shows how to log data from three analog sensors 
 to an SD card using the SD library.
 	
 The circuit:
 * analog sensors on analog ins 0, 1, and 2
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4
 
 created  24 Nov 2010
 modified 9 Apr 2012
 by Tom Igoe
 
 This example code is in the public domain.
 	 
 */

#include <SD.h>
#include <SPI.h>
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.

int n=0;

void setup()
{
  pinMode(SS_PIN, OUTPUT);
  digitalWrite(SS_PIN, HIGH);
  pinMode(10, OUTPUT); 	// Set the CS pin as an output
  digitalWrite(10, 1); // Turn off the W5100 chip! (wait for configuration)
  pinMode(4, OUTPUT);       // Set the SDcard CS pin as an output
  digitalWrite(4, 1); 	// Turn off the SD card! (wait for configuration)
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it:
  //pinMode(53, OUTPUT);
  
  // see if the card is present and can be initialized:
  if (!SD.begin(4)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop()
{
  n++;
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) 
  {
    
    dataFile.println("Prova " + (String)n);
    dataFile.close();
    // print to the serial port too:
    //Serial.println(dataString);
  }  
  // if the file isn't open, pop up an error:
  else 
  {
    Serial.println("error opening datalog.txt");
  } 
  if(millis() > 30000) while(1); 
}

Attenzione a non estrarre la SD mentre sta scrivendo, sfasci il file system della sd e perdi tutto e questo sketch causa proprio questo, non smette mai di scrivere, in teoria hai pochi istanti in cui puoi estrarla, arduino dovrebbe fare la rimozione sicura e questo programma non lo fa assolutamente.

ciao