DIY Digital Clock LCD 20x4 Arduino "Jam Digital LCD Arduino"



        Kali ini saya akan memberikan tutorial dasar pemrograman Arduino dengan module RTC DS3231 dan akan di tampilkan di LCD 20x4 secara realtime. RTC adalah singkatan dari Real Time Clock yang berfungsi sebagai module yang dapat menghitung waktu secara akurat dan dapat menyimpan data waktu dan tanggal secara realtime. Jadi misalnya jika anda menggunakan RTC module maka disaat Sistem anda dalam keadaan OFF dan jika pada saat anda menjalankan sistem anda kembali waktu akan tetap sesuai dengan tanggal dan waktu saat anda menjalankan Sistem anda. 






Program Utama

=================================Source Code================================

#include "Wire.h"
#include "RTClib.h"
#include "DHT.h"
#include "LiquidCrystal.h"
#define DHTPIN 14
#define DHTTYPE DHT11
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
DHT dht(DHTPIN, DHTTYPE);
RTC_DS3231 rtc;
float temp, hum;

void setup () {
    Serial.begin(9600);
    Wire.begin();
    rtc.begin();
    dht.begin();
    lcd.begin(20, 4);

   byte customCharL[] = {
    0b11000,
    0b11000,
    0b11000,
    0b11000,
    0b11000,
    0b11000,
    0b11111,
    0b11111
  };
  //C
  byte customCharC[] = {
    0b01111,
    0b11111,
    0b11000,
    0b11000,
    0b11000,
    0b11000,
    0b11111,
    0b01111
  };
  //D
  byte customCharD[] = {
    0b11110,
    0b11111,
    0b11011,
    0b11011,
    0b11011,
    0b11011,
    0b11111,
    0b11110
  };
  //O
  byte customCharO[] = {
    0b01110,
    0b11111,
    0b11011,
    0b11011,
    0b11011,
    0b11011,
    0b11111,
    0b01110
  };
  //K
  byte customCharK[] = {
    0b11011,
    0b11011,
    0b11110,
    0b11100,
    0b11100,
    0b11110,
    0b11011,
    0b11011
  };
  byte customCharY[] = {
    0b11111,
    0b01110,
    0b01110,
    0b00100,
    0b00100,
    0b00100,
    0b00100,
    0b00100
  };
  byte customCharG[] = {
    0b00001,
    0b00001,
    0b00001,
    0b00101,
    0b00101,
    0b00101,
    0b10101,
    0b10101
  };
   byte customCharS[] = {
    0b00000,
    0b00000,
    0b01010,
    0b00000,
    0b10001,
    0b01110,
    0b00000,
    0b00000
  };
   byte customCharR[] = {
    0b00100,
    0b01110,
    0b01110,
    0b01110,
    0b11111,
    0b11111,
    0b00100,
    0b00100
  };


  lcd.createChar(0, customCharL);//huruf L
  lcd.createChar(1, customCharC);//huruf C
  lcd.createChar(2, customCharD);//hutuf D
  lcd.createChar(3, customCharO);//huruf O
  lcd.createChar(4, customCharK);//huruf K
  lcd.createChar(5, customCharY);//Antena
  lcd.createChar(6, customCharG);//Sinyal
  lcd.createChar(7, customCharR);//Bel
  

  lcd.setCursor(4,1);
  lcd.print(" "); // print space 
  lcd.write((uint8_t)0);  //L
  delay(400);
  lcd.write((uint8_t)1);  //C
  delay(400);
  lcd.write((uint8_t)2);  //D
  delay(400);
  lcd.print(" "); // print space 
  lcd.write((uint8_t)1);  //C
  delay(400);
  lcd.write((uint8_t)0);  //L
  delay(400);
  lcd.write((uint8_t)3);  //O
  delay(400);
  lcd.write((uint8_t)1);  //C
  delay(400);
  lcd.write((uint8_t)4);  //K
  delay(400);
  lcd.print("");
  delay(800);

  lcd.setCursor(2,2);
  lcd.print("Dicky B_Mz 2017");
  delay(800); 
  lcd.clear();
  delay(800);

  lcd.setCursor(4,1);
  lcd.print(" "); // print space 
  lcd.write((uint8_t)0);  //L
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)2);  //D
  lcd.print(" "); // print space 
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)0);  //L
  lcd.write((uint8_t)3);  //O
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)4);  //K
  lcd.print("");

  lcd.setCursor(2,2); 
  lcd.print("Dicky B_Mz 2017");
  delay(800); 
  lcd.clear();
  delay(800);
  
  lcd.setCursor(4,1);
  lcd.print(" "); // print space 
  lcd.write((uint8_t)0);  //L
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)2);  //D
  lcd.print(" "); // print space 
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)0);  //L
  lcd.write((uint8_t)3);  //O
  lcd.write((uint8_t)1);  //C
  lcd.write((uint8_t)4);  //K
  lcd.print("");

  lcd.setCursor(2,2); 
  lcd.print("Dicky B_Mz 2017");
  delay(800); 
  lcd.clear();
  delay(800);
  
 
   if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
    }
   if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {
  temp = dht.readTemperature();
  hum  = dht.readHumidity();
  DateTime now = rtc.now();
  
    lcd.setCursor(1,0);  //Penampil Nama Jam
    lcd.write((uint8_t)7);//bell  
    lcd.setCursor(3,0);
    lcd.print(" "); // print space 
    lcd.write((uint8_t)0);  //L
    lcd.write((uint8_t)1);  //C
    lcd.write((uint8_t)2);  //D
    lcd.print(" "); // print space 
    lcd.write((uint8_t)1);  //C
    lcd.write((uint8_t)0);  //L
    lcd.write((uint8_t)3);  //O
    lcd.write((uint8_t)1);  //C
    lcd.write((uint8_t)4);  //K
    lcd.print(" v2 ");
    lcd.write((uint8_t)5);  //antena
    lcd.write((uint8_t)6);  //signal
  
    lcd.setCursor(0, 1); //Penampil JAM
    lcd.print(" -->> ");
    if (now.hour()<10)
    lcd.print('0');
    lcd.print(now.hour(), DEC);
    lcd.print(':');
     if (now.minute()<10)
    lcd.print('0');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    if (now.second()<10)
    lcd.print('0');
    lcd.print(now.second(), DEC);
    lcd.print(" <<-- ");
   
    
    lcd.setCursor(0,2); //Penampil Hari
    lcd.print(">");
   int hari = now.dayOfTheWeek();
   switch(hari)
   {
     case 1:
     lcd.print("Senin");
     break;
     case 2:
     lcd.print("Selasa");
     break;
     case 3:
     lcd.print("  Rabu");
     break;
     case 4:
     lcd.print(" Kamis");
     break;
     case 5:
     lcd.print("jum'at");
     break;
     case 6:
     lcd.print(" Sabtu");
     break;
     case 0:
     lcd.print("Minggu");
     break;
    delay(1000);
}
    lcd.setCursor(9,2);  //Penampil Kalender
    lcd.print(">");
    lcd.setCursor(10,2);
    lcd.print(now.day(), DEC);
    lcd.print('-');
    lcd.print(now.month(), DEC);
    lcd.print('-');
    lcd.print(now.year(), DEC);
  
    lcd.setCursor(0, 3);  //Penampil Suhu
    lcd.print("Temp:");
    lcd.print(temp);
    lcd.write(0b11011111);
    lcd.print("C");

    lcd.setCursor(13, 3);  //Penampil Kelembapan
    lcd.print("Hum:");
    lcd.print(hum);
    lcd.print("%");



}
 

Video Hasil.

No comments

Dicky B_Mz. Powered by Blogger.