Minggu, 21 Agustus 2016

Membuat Jam dengan Arduino & Modul RTC

Ayo kita berkreasi membuat jam dengan Mikrokontroller Arduino. dengan adanya Jam Arduino ini kita dapat melihat jam dan tanggal  berapa sekarang melalui Layar LCD mungil.
Dalam Praktek kali ini kita memerlukan bahan-bahan yaitu  :


*   Mikrokontroller Arduino



*   Layar LCD 16x2 Karakter

                                                          *   Modul RTC DS 1307
Modul RTC DS 1307 adalah modul elektronik yang bekerja menyediakan waktu. disinilah kita akan mendapatkan data jam dan tanggal.
Dan kita memerlukan bahan pelengkap yaitu :
*   Breadboard
*   Kabel Jumper 1 set
*   Kopi satu gelas
*   Cemilan secukupnya.

Nah coba perhatikan gambar di bawah ini

Gambar di atas adalah cara menghubungkan arduino dengan RTC dan LCD, untuk sementara lupakan gambar switc nya. itu hanya akan di pakai dalam praktek selanjutnya pada halaman yang lain. Dalam praktek kali ini ya sobat lcd tidak dihubungkan seperti di gambar tetapi menghubungkannya yaitu Seperti Konpigurasi di bawah ini yaaaaa
************************
 Modul LCD          Arduino
       D                         8
       D                         9
       D                        10
       D                         11
       E                         12
       RS                       13
************************
Nah untuk Modul  RTC dihubungkan dengan mikrokontroller Arduino seperti di bawah ini yaaa
*******************************************
Modul RTC          Arduino 2560           Arduino Uno
      SCL                    21                                 A5
      SDA                    20                                 A4
*******************************************


Bila sahabat belum mempunyai alatnya maka dapat membeli dahulu di toko Online. Saya sendiri membeli di Tokopedia. mikrokontrollernya beli yang kloningan karena murah meriah. yang penting dapat digunakan praktek.
Pada praktek pembuatan Jam ini intinya kita akan memprogram Mikrokontroller Arduino untuk mengakses data waktu di modul RTC dan kemudian akan di tampilkan di LCD mungil 16x2 Karakter.

Coba pelajari Sketsa program di bawah ini. perhatikan keterangannya dan Pelajari yaaa...

------------------------------------------------------------------------
#include <LiquidCrystal.h>
LiquidCrystal lcd(13,12, 11, 10, 9, 8);  // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
int Jam ;
int Menit ;
int Hari ;
int Detik ;
int Tanggal;
int Bulan ;
int Tahun ;
String LcdBaris1;
String LcdBaris2;
int j1,j2,m1,m2,d1,d2;
void setup() {
    Wire.begin();
    lcd.begin(16,2);
}

void loop() {
// Pertama tama kita akses Modul RTC
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
// Waktu akan kita simpan di beberapa variabel... lihat deh di bawah
   Detik = bcdToDec(Wire.read());
   Menit = bcdToDec(Wire.read());
   Jam = bcdToDec(Wire.read() & 0b111111); //24 hour time
   Hari = bcdToDec(Wire.read()); //1-7 -> sunday - Saturday
   Tanggal = bcdToDec(Wire.read());
   Bulan = bcdToDec(Wire.read());
   Tahun = bcdToDec(Wire.read());
 //  Agar dapat mengetahui nama hari maka variabel hari yang berisi nilai 1 sampai 7
//  Kita rubah menjadi hari  1= senin  2 = selasa  dan seterusnya.. lihat di bawah yaaa...
  String NamaHari;
  if (Hari == 1) NamaHari ="Minggu" ;
  if (Hari == 2) NamaHari ="Senin" ;
  if (Hari == 3) NamaHari ="Selasa" ;
  if (Hari == 4) NamaHari ="Rabu" ;
  if (Hari == 5) NamaHari ="Kamis" ;
  if (Hari == 6) NamaHari ="Jum'at" ;
  if (Hari == 7 ) NamaHari ="Saptu" ;

//  Kemudian kita akan tampilkan data data waktu ke Modul LCD
//  Tentunya agar kita mudah melihat waktu  

  LcdBaris1 = NamaHari+ " "+ String (Tanggal) +"-"+ String (Bulan)+"-"+ String (Tahun) ;
  LcdBaris2 = "Jam : "+String (Jam)+":"+ String (Menit)+":"+String (Detik);
  lcd.clear() ;
  lcd.setCursor(0,0);   lcd.print(LcdBaris1);
  lcd.setCursor(0,1);   lcd.print(LcdBaris2); 

 delay (400);
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );
}

------------------------------------------------------------------------
Program di atas akan menampilkan data waktu di layar lcd. yaa cukup menarik dan unik yaaa.. hanya saja kita tidak bisa membetulkan jamnya bila waktunya terjadi perbedaan atau kacau. wah repot yaa. untuk mengatur atau membetulkan nilai RTC yang kacau coba kunjungi halaman Blog di bawah ini. Klik link nya ya sobaaat..

Praktek merubah data waktu yang ada di modul RTC

6 komentar:

  1. gan mau tanya, kok gak keluar di lcd ya ?
    terima kasih

    BalasHapus
    Balasan
    1. Terima kasih atas kunjungannya. sedang di lakukan pengecekan ulang. terlihat kesalahan ada di baris program LiquidCrystal lcd(13,12, 11, 10, 9, 8); sebentar ya di test ulang dahulu

      Hapus
    2. seharusnya
      LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

      Hapus
    3. thanks gan bisa
      gan kalo misalnya ditambah pake mode stopwatch + alarm itu merubah sketch lagi ya ?

      Hapus
    4. untuk jam yng menggunakan alarm. memang pernah membuatpercobaan datanya ada di
      http://teknikelektrotexmaco.blogspot.co.id/2016/11/6.html

      Hapus
    5. Untuk stop watch .. wah ide bagus. nanti coba dilakukan percobaan.. terus terang belum pernah membuat stop watch. intinya program di atas akan di tambah dengan alarm dan stopwatch. akan lebih panjang programnya

      Hapus