Hello i have a problem with rtc 1307 module, it appears date 00:00 1/1/2000 , how can i make him work ?
Here is the code:
#include <dht11.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
#include <SD.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int buttonPin = A0; //pinul la care este conectat butonul
int buttonState = 0;
dht11 DHT11;
#define DHT11PIN A0
const int chipSelect = 8;
byte termometru[8] = //pictograma pentru temperatura
{
B00100,
B01010,
B01010,
B01010,
B01110,
B11111,
B11111,
B01110
};
byte picatura[8] = //pictograma pentru umiditate
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
void setup() {
pinMode(buttonPin, INPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.createChar(1,termometru);
lcd.createChar(2,picatura);
lcd.setCursor(0,0);
lcd.print("Initializare");
lcd.setCursor(3,1);
lcd.print("card SD...");
delay(1000);
lcd.clear();
pinMode(10, OUTPUT);
digitalWrite(10,HIGH);
if (!SD.begin(chipSelect)) {
lcd.setCursor(4, 0);
lcd.print("Cardul");
lcd.setCursor(0, 1);
lcd.print("nu este prezent");
delay(3000);
return;
}
lcd.print("Card initializat.");
delay(2000);
lcd.clear();
Wire.begin();
rtc.begin();
if (! rtc.isrunning()) {
lcd.clear();
lcd.print("Eroare RTC");
}
delay(2000);
}
void loop() {
int chk = DHT11.read(DHT11PIN);
DateTime now = rtc.now();
lcd.clear();
lcd.setCursor(2, 0);
lcd.write(1);
lcd.print(" ");
lcd.print((float)DHT11.temperature, 0);
lcd.print((char)223); // semnul pentru grade
lcd.print("C");
lcd.setCursor(9,0);
lcd.write(2);
lcd.print(" ");
lcd.print((float)DHT11.humidity, 0);
lcd.print("%");
lcd.setCursor(7, 1);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0, 1);
if (now.hour() < 10) lcd.print("0"); // add zero
lcd.print(now.hour(), DEC); // Print ora
lcd.print(":");
if (now.minute() < 10) lcd.print("0"); // add zero
lcd.print(now.minute(), DEC); // Print minute
// lcd.print(":");
// if (now.second() < 10) lcd.print("0"); // add zero
// lcd.print(now.second(), DEC); // Print secunde
int s=now.second();
if(s==1){ //se memoreaza datele odata pe minut
LogToSD(); //memorarea se face cu ajutorul acestei functii
}
delay(1000);
}
void LogToSD(){
DateTime now = rtc.now();
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.print(now.day(), DEC);
dataFile.print('/');
dataFile.print(now.month(), DEC);
dataFile.print('/');
dataFile.print(now.year(), DEC);
dataFile.print(",");
dataFile.print(now.hour(), DEC);
dataFile.print(':');
dataFile.print(now.minute(), DEC);
dataFile.print(':');
dataFile.print(now.second(), DEC);
dataFile.print(",");
dataFile.print((float)DHT11.temperature, 0);
dataFile.print(",");
dataFile.print((float)DHT11.humidity, 0);
dataFile.println();
dataFile.close();
}
// if the file isn't open, pop up an error:
else {
//Serial.println("error opening datalog.txt");
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Eroare fisier");
delay(2000);
}
}