Aggiornamento ho modificato il codice come segue:
In pratica ho scomposto la parte decimale e quella intera delle variabili float (ax e ay) in due variabili intere,dopodiche convertite in stringhe tramite la funziona ITOA.Ho due problemi.
In caso di valori negativi tipo -1,43,visualizzo 1,-43! Altro problema,ho provato a concatenare le stringhe tramite la funzione strcat(),ma ottengi l'output:
0,13g 0,31gDati rilevati 000
23
Qual e' la sintessi esatta di strcat?
#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;
static char axb[100];
static char ayb[100];
static float ax,ay,az;
unsigned long time; // serve per misurare il tempo di esecuzione
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");
}
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 ()
{
// MISURO IL TEMPO DI ESECUZIONE
Serial.print("Time: ");
time = millis();
//prints time since program started
Serial.println(time);
DateTime now = RTC.now(); // leggiamo l'ora
accelerometer.getAcceleration(&ax,&ay,&az);
int Hix=ax;
int Lox = ax*100-Hix*100;
itoa(Hix,axb,10);
Serial.print(Hix);
Serial.print(",");
itoa(Hix,axb,10);
Serial.print(Lox);
Serial.print("g");
Serial.print("\t");
int Hiy=ay;
int Loy = ay*100-Hiy*100;
itoa(Hiy,ayb,10);
Serial.print(Hiy);
Serial.print(",");
itoa(Hiy,ayb,10);
Serial.print(Loy);
Serial.print("g");
Dati = SD.open("datalog.txt", FILE_WRITE); // apriamo il file in scrittura
if (Dati)
{
Dati.println(strcat(axb,ayb)); // Scriviamo in un sol colpo i dati sul file
Dati.close(); // chiudiamo e trasferiamo su SD
Serial.print("Dati rilevati \t");
Serial.println(strcat(axb,ayb));
}
else
{
Serial.println("Errore nell'apertura di datalog.txt");
}
delay (0); // cadenza dellascrittura dei dati
Serial.println(time);
}