SparkFun Forums 

Where electronics enthusiasts find answers.

General project discussion / help
Did you make a robotic coffee pot which implements HTCPCP and decafs unauthorized users? Show it off here!
By hathatool
#192980
Hi

I am trying to build a data logger with time stamp

the result should be a file like this "DD/MM/YYYY HH/MM/SS DATA1 DATA2 ....."

I am using Arduino Uno with SparkFun DeadOn RTC Breakout - DS3234, Basic 16x2 Character LCD - Red on Black 5V and SparkFun microSD Shield.

and sampling the Data from A0

I try this sketch:


#include <SPI.h>
#include <SD.h>
#include <SparkFunDS3234RTC.h>
#include <LiquidCrystal.h>


LiquidCrystal lcd( 2, 3, 5, 6, 7, 8);


void setup() {

SD.begin(4) ;

lcd.begin(16, 2);

#define DS13074_CS_PIN 10

SPI.setDataMode(SPI_MODE1);

rtc.begin(DS13074_CS_PIN);

rtc.set24Hour();

lcd.clear();
lcd.setCursor(0, 0);
lcd.print ("DATA LOGGER");
lcd.setCursor(0, 1);
lcd.print ("Ready To Start");

delay (3000);

lcd.clear();
lcd.setCursor(0, 0);

}

void loop() {

float sddata ;
String dnt ;
String dntlcd ;
String alog0 ;
String alog0lcd ;



lcd.clear();
lcd.setCursor(0, 1);


rtc.update() ;


dnt="" ;
dntlcd="" ;

//build Date And Time Strings dateandtime for sd card and dtlcd to display on lcd

dnt=dnt + String(rtc.date()) + "/" + String(rtc.month()) + "/" + String(rtc.year()) + " " + String(rtc.hour()) + ":" ;
if (rtc.minute() < 10)
dnt=dnt + "0"; // Print leading '0' for minute
dnt=dnt + String(rtc.minute()) + ":" ; // Print minutes
if (rtc.second() < 10)
dnt=dnt + "0"; // Print leading '0' for minute
dnt=dnt + String(rtc.second()) + " " ; // Print secondes

dntlcd=dntlcd + String(rtc.date()) + "/" + String(rtc.month()) + " " + String(rtc.hour()) + ":" ;
if (rtc.minute() < 10)
dntlcd=dntlcd + "0"; // Print leading '0' for minute
dntlcd=dntlcd + String(rtc.minute()) + ":" ; // Print minutes
if (rtc.second() < 10)
dntlcd=dntlcd + "0"; // Print leading '0' for minute
dntlcd=dntlcd + String(rtc.second()) + " " ; // Print secondes

// Finsh building tame and date Strings and building date strings

// read sensor date

// read the input on analog pin 0:
float sensorValue0 = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage0 = sensorValue0 * (5.0 / 1023.0);

alog0=String(voltage0,4) ;
alog0lcd="s1: " + alog0 + " Volt";

//finish the data strings

//writing to SD

// Open DataFile On SD:


File myFile;
myFile=SD.open("data.txt", FILE_WRITE);
myFile.println(dnt+" "+alog0);
myFile.close();



//finish wring to SD
//printing to lcd

lcd.clear();
lcd.setCursor(0, 0);
lcd.print (dntlcd);
lcd.setCursor(0, 1);
lcd.print (alog0lcd);

delay (1000);

}

But the RTC and The SD does not work together without the sd the time is accurate and without the time the i can Write to the SD
together (as in the sketch) the time is strange and it does not write to the sd

Can anyone help me?
what am i done wrong?

thank you