Anzitutto grazie per la pazienza,ma sono davvero agli inizi con la programmazione in c.Magari per alcuni queste cose sono delle banalita',ma per me sono abbastanza difficili (ad ogni modo ho gia provveduto ad ordinare un manuale di C)Allora ho modificato il codice nel modo seguente:
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
#include "ADXL335.h"
ADXL335 accelerometer;
RTC_DS1307 RTC;
File Dati; // La variabile di tipo file che useremo per il log
const int chipSelect =10;
char buffer[70];
void setup ()
{
Serial.begin(9600);
Wire.begin(); // inizializziamo la libreria WIRE per usare
RTC.begin(); //il Real Time clock basato su ds1307
accelerometer.begin();
if (! RTC.isrunning())
{
Serial.println("RTC NON STA FUNZIONANDO");
//LA SEGUENTE ISTRUZIONE SERVE SOLO PER REGOLARE L'OROLOGIO.ATTIVARE SOLO SE NECESSARIO.
// RTC.adjust (DateTime(__DATE__, __TIME__)); //imposta ora e data
}
Serial.print("\nSto verificando la presenza della scheda..\n");
pinMode(10, OUTPUT); // fa funzionare la sdlib
if (!SD.begin(chipSelect))
{
Serial.println("SD card non trovata");
return;
}
else
{
Serial.println("Scheda inserita e funzionante");
Serial.println();
}
}
void loop ()
{
float ax,ay,az;
DateTime now = RTC.now(); // leggiamo l'ora
snprintf(buffer,70,"\t%d g,%d g,%d g\t%02d:%02d:%02d\t",ax,ay,az,now.hour(),now.minute(),now.second());
Dati = SD.open("datalog.txt", FILE_WRITE); // apriamo il file in scrittura
if (Dati)
{
Dati.println(buffer); // Scriviamo in un sol colpo i dati sul file
Dati.close(); // chiudiamo e trasferiamo su SD
Serial.print("Dati rilevati \t");
Serial.println(buffer);
}
else
{
Serial.println("Errore nell'apertura di datalog.txt");
}
delay (0); // cadenza dellascrittura dei dati
}
Il programma viene compilato,ma ho errori nell'output:
tipo questo:
Dati rilevati -15744 g,15821 g,28832 g 16003:-32768:16300
voltage:
1.24
1.28
1.58
Dati rilevati -31488 g,15739 g,-7872 g 15986:-32768:16295
voltage:
1.23
1.27
1.57
Dati rilevati -31488 g,15659 g,-7872 g 15966:00:16293
Come si vede,i valori misura in g dell'accelerometro sono totalmente sbagliati, cosi' come i valori del RTC.
Forse il buffer dovrebbe essere inizializzato ogni volta?