///////////////LCD///////////
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
///////////RTC////////////
#include <RTClib.h>
RTC_DS1307 rtc;
DateTime waktu;
#include <DHT.h>

 #define DHTPIN 7     
 #define DHTTYPE DHT22
 DHT dht (DHTPIN, DHTTYPE) ;

char buffer[20],buffer2[8];

/////////////memory card////////////////
#include <SD.h>
#define pin_cs 4
File fileku,root;

String Data;


void setup() {
  Serial.begin(9600);
rtc.begin();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Data Logger");
  delay(1000);
  lcd.clear();
  sdcard_ini();





}

void loop() {

float RH = dht.readHumidity();
float suhu = dht.readTemperature();
lcd.print(F("12 "));
lcd.print(RH);
lcd.print(F("% 30 : "));
lcd.print(suhu);
lcd.println(F(" C"));

waktu = rtc.now();
sprintf(buffer,"%d:%d:%d",waktu.hour(),waktu.minute(),waktu.second());
lcd.setCursor(0,0);
lcd.print(buffer);


  //tambahkan sensor DHT 22, 
  //tampilkan di LCD hasil pembacaan suhu dalam Celcius 
  // Tampilkan waktu dalam format jam : menit : detik

  //Simpan waktu dan hasil pembacaan suhu setiap 2 menit dengan format
  //tanggal/bulan/tahun jam:menit:detik suhu
  //tampilkan isi file yang tersimpan setiap 30 menit 


  /*
  NB : fungsi untuk membuat, mengisi dan membaca file telah disiapkan
  */
 



}





void isiFile(String NamaFile, String Data)
{
  fileku = SD.open(NamaFile,FILE_WRITE);
  if(fileku)
  {
   fileku.println(Data);
   fileku.close();
  } 
  else 
  {
    lcd.setCursor(0,3);
    lcd.print("Card Error");
      while(1);
  }
}

void bacaFile(String NamaFile)
{
  fileku = SD.open(NamaFile);
  if(fileku)
  {
    while(fileku.available())
    {
    Serial.write(fileku.read());
    }
    fileku.close();
  }
  else
  {
    lcd.setCursor(0,3);
    lcd.print("Card Error");
      while(1);
  }
}

void cekIsiCard()
{
  root = SD.open("/");
  while(true){
  
  File cekfile = root.openNextFile();
  if(!cekfile)
  {
    break;
  }
  Serial.print(cekfile.name());
  Serial.print(" ");
  Serial.println(cekfile.size());
  cekfile.close();
  
  }
}


void buat_file(String NamaFile, String waktu, String header)
{
  
  fileku = SD.open(NamaFile,FILE_WRITE);
  if(fileku)
  {
    fileku.println("ini adalah isi " + NamaFile);
    fileku.println("Mulai direkam pada " + waktu);
    fileku.println(header);

    fileku.close();
  }
  else 
  {
    lcd.setCursor(0,3);
    lcd.print("Card Error");
      while(1);
  }

}


void sdcard_ini()
{
    if(!SD.begin(pin_cs))
  { lcd.setCursor(0,3);
    lcd.print("Card Error");
    while(1);
   
  }
}




GND5VSDASCLSQWRTCDS1307+