Diberdayakan oleh Blogger.

Arduino project led menggunakan RTC DS1307 dan LDR

by - 07.21



ALAT : 
1. arduino uno 
2. RTC DS1307 
3. 4 buah LED 
4. 1 buah LCD
5. 1 buah LDR
6. 1 buah transistor = 1 Ohms 5%
7. 2 buah potensioner
8. wires



Arduino project led menggunakan RTC DS1307 dan LDR bertujuan apabila pada instalasi rumah akan mensetting dengan waktu tertentu dapat menghidupkan lampu atau alat elektronik lainnya pada project ini dimisalkan dengan led dan apabila tidak ada cahaya, lampu atau led akan hidup dengan otomatis dengan LDR. 

cara kerja : 
LCD pertama kali akan load pada program dengan tulisan "initializing..." lalu pada LCD akan menampilkan jam, menit dan detik sekarang.
1. apabila sebelum jam 12 menit 50 detik ke 40 lampu atau LED pada pin 3 akan mati (LOW) dan pada LCD akan muncul tulisan "Selamat Pagi".
2. apabila sesudah jam 12 menit 51 detik 11 pada LCD akan muncul tulisan "Selamat Siang". 
3. apabila sesudah jam 12 menit 52 detik 41lampu atau LED pada pin 3 akan hidup (HIGH) dan pada LCD akan muncul tulisan "Selamat Malam".
4. dan apa bila tidak ada cahaya atau malam hari led pin 2 dan 13 akan hidup (HIGH), sebaliknya apabila pada pagi hari led pin 2 dan 13 akan mati (LOW).


KODE ARDUINO :

#include

#include

const int DS1307 = 0x68; // Address of DS1307 see data sheets
const char* days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const char* months[] ={"January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November", "December"};


// Initializes all values: 
byte second = 0 ;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
byte year = 0;

//LDR pin dan value nya 
int LDR = A1;     //analog pin to which LDR is connected, here we set it to 0 so it means A0
int LDRValue = 0;      //that’s a variable to store LDR values
int light_sensitivity = 75;   

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);


void setup(){
  Wire.begin();
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);


    lcd.print("INITIALISING");
    delay(500);
    lcd.print(".");
    delay(500);
    lcd.print(".");  
    delay(500);
    lcd.print(".");
    delay(500);
    lcd.print(".");  
    delay(500);
}



void loop(){
  LDRValue = analogRead(LDR);      //reads the ldr’s value through LDR 
    Serial.println(LDRValue);       //prints the LDR values to serial monitor
    delay(100); 


  //JIKA SEBELUM JAM 12 pagi "selama pagi"
  if ((hour <= 12 )*(minute <= 24)*(second < 30)){
          lcd.clear();
          lcd.print("Selamat Pagi");
          digitalWrite(3, LOW);
      }


  //JIKA PAS JAM 12 MENIT KE 25 DETIK 0 MAKA berubah menjadi selamat siang
if ((hour == 12 )*(minute == 25)*(second == 0)){
       lcd.clear();
       lcd.print("Selamat Siang");
}


  //JIKA JAM LEBIH DARI JAM 12 MENIT 25 DETIK KE 30
  if ((hour >= 11 )*(minute == 27)*(second == 30)){
        lcd.clear();
        lcd.print("Selamat Malam");
        digitalWrite(3, HIGH);
    }

  //JIKA LDR TIDAK MENERIMA CAHAYA, LED PADA PIN 13 DAN 2 AKAN HIDUP value sensitif 75
if (LDRValue < light_sensitivity) 
      {       lcd.clear();
        digitalWrite(13, LOW);
delay(100);
digitalWrite(2, LOW);
      }
    else
      {       lcd.clear();
digitalWrite(13, HIGH);
digitalWrite(2, HIGH);
      }    

//lcd.clear();
  lcd.setCursor(0,1);
  //lcd.print("LDR:" + String(analogRead(0)) );
  printTime();
  Serial.println(LDRValue);
}


byte decToBcd(byte val) {
  return ((val/10*16) + (val%10));
}

byte bcdToDec(byte val) {
  return ((val/16*10) + (val%16));
}



void printTime() {

  char buffer[3];

  const char* AMPM = 0;

  readTime();

  Serial.print(days[weekday-1]);

  Serial.print(" ");

  Serial.print(months[month-1]);

  Serial.print(" ");

  Serial.print(monthday);

  Serial.print(", 20");

  Serial.print(year);

  Serial.print(" ");



  lcd.print(hour);

  lcd.print(":");

  sprintf(buffer, "%02d", minute);

  lcd.print(buffer);

  lcd.print(":");

  lcd.print(second);

  lcd.print(" ");

}


void readTime() {

  Wire.beginTransmission(DS1307);

  Wire.write(byte(0));

  Wire.endTransmission();

  Wire.requestFrom(DS1307, 7);

  second = bcdToDec(Wire.read());

  minute = bcdToDec(Wire.read());

  hour = bcdToDec(Wire.read());

  weekday = bcdToDec(Wire.read());

  monthday = bcdToDec(Wire.read());

  month = bcdToDec(Wire.read());

  year = bcdToDec(Wire.read());

}




jangan lupa kasih library --> LiquidCrystal.h

You May Also Like

2 coment

tinggalkan saran, komentarmu, cercahan mu atau apalah tentang blog ku atau postingku