troubles with SD Datalogger Shield

Hello guys! I am trying to do a datalogger using Arduino Shield and a Shield SD Logger with DS1307. I noticed that with the example file RTCLib (DS1307) I can see the date and other messages working at Serial Monitor.

I am trying to write these information to my SD card but I noticed that the data on my SD card comes with errors, like 2185/865…

I believe that my shield and code are OK because at Serial Monitor I can see the year/month/day…but when I write at SD card I got this issue.

In attached I am putting the code .ino

ds1307_changed.ino (1.64 KB)

Olá Douglas_Rocha.
Que erros obténs mesmo?
Escreve coisas sem sentido no cartão?

Isto não funciona como o println do serial. Para escrever no SD, tens de fazer um string composta e escrever tudo duma vez.
Ou seja, quando tu mandas myFile = SD.open("log.txt", FILE_WRITE); essa variável ainda tá vazia.
Tenho aqui um exemplo que eu fiz uma vez para tu adaptares.

#include <SD.h>                        // carrega a biblioteca para o cartão SD
#include <LiquidCrystal.h>             // carrega a biblioteca para o LCD 16x2

//Definição de variáveis e constantes
LiquidCrystal lcd(10, 9, 8, 7, 6, 5); //Pinos do arduino para o LCD
const int chipSelect = 4;              //Pino do arduino que activa o Chipselect do cartão SD
int temperatura;                       //Variável de saída em ºC
int id = 0;                            //Variável de incremento para atribuir um id a cada registo


void setup() {                          
  lcd.begin(16, 2);                    //Inicialização do display
  lcd.clear ();                        //Limpa o display
  delay (250);                         //Espera para iniciar o boot
  lcd.print("Termometro PT100");
  lcd.setCursor(0, 1);                 //Determina posição do cursor na primeira linha 
  lcd.print("SDCARD LOG V6.0");
  delay (1000);
  lcd.clear();
  lcd.print("Universidade da ");
  lcd.setCursor(0, 1);                 //Determina posição do cursor na primeira linha 
  lcd.print("Madeira 2012");
  delay (1000);
  lcd.clear();
  lcd.print("Prof Luis Gomes");
  lcd.setCursor(0, 1);                 //Determina posição do cursor na primeira linha 
  lcd.print("Projecto TMI");
  delay (1000);
  lcd.clear();
  lcd.print("David Inacio ");           
  lcd.setCursor(0, 1);                  //Determina posição do cursor na primeira linha 
  lcd.print("Gregorio Sousa");
  delay (1000);
  lcd.clear();                          //
  Serial.begin(9600);
  Serial.print("Iniciando SD card...");
  lcd.print("Iniciando SDCard");
  delay (1000);
  lcd.clear();
  if (!SD.begin(chipSelect)) {              //verifica se não existe cartão. 
    Serial.println("Cartao nao presente, erro.");    //Se não existe cartão
    lcd.clear();
    lcd.print("SD not present");
    delay (1000);
  }
  else
  {
    Serial.println("cartao inicializado.");          //Se existe cartão
    lcd.clear();
    lcd.print("SDCard Status OK");
    delay (1000);
    lcd.clear();
  }
}

void loop() {

  int temperatura = analogRead(A0);            //leitura analógia da porta A0 
  lcd.setCursor(0, 0);
  lcd.print("Temperatura (C)");
  lcd.setCursor(0, 1);
  temperatura = map(temperatura,0,485,0,320);   //converte os valores lidos na porta para a gama de temperatura
  lcd.print(temperatura);
  String datastring = String(id) + "," + String(temperatura) ; //compõe a string que é enviada para, porta série, Lcd e SDcard.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  if (dataFile) { 
    dataFile.println(datastring);
    dataFile.close();
    Serial.println(datastring ); //
    delay (5000);
  }  
  else {
    Serial.println("erro ao abrir datalog.txt");
  }
  id++; 
}

no meu primeiro protótipo eu utilizei um shield DS3231 e um shield Micro SD. com o código em anexo eu consegui escrever as datas no cartão sem problemas.

porém quando fui tentar adaptar o código para o DS1307 (usando o shield datalogger que junto o cartão SD e o RTC em uma placa só) obtive as datas com valores estranhos…

jig_diadema.txt (5.93 KB)

será o que a pinagem desse shield precisa de um ajuste na lib?