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