Minggu, 01 Maret 2015

Setting RTC

Lanjutan dari halaman Proyek Jam dengan RTC


Halaman ini adalah lanjutan dari praktek Mikrokontroller Arduino membuat jam dengan RTC. Modul RTC yang digunakan adalah Ds 1307 . Pada dasarnya ada dua praktek dalam percobaan Membuat Jam dengan RTC yaitu menampilkan jam yang ada di RTC dan merubah jam yang ada di RTC bila jam tidak sesuai tentunya (ngaco). Untuk merubah jam yang ada di RTC dilakukan melalui mikrokontroller Arduino. programnya adalah sebagai berikut. Coba perhatikan list Program di bawah ini.


---------------------------------------------------------------------------------------------
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
void setup(){
    pinMode (18,OUTPUT); pinMode (19,OUTPUT);
  digitalWrite(19,HIGH);
  digitalWrite (18,LOW);

  Wire.begin();
  Serial.begin(9600);
  setDateTime(); //MUST CONFIGURE IN FUNCTION
}

void loop(){
  printDate();
  delay(1000);
}

void setDateTime(){

  byte second =      41; // Detik diisi dengan nilai 0-59
  byte minute =      30; //  Menit diisi dengan nilai0-59
  byte hour =        8; //  Jam diisi dengan nilai 0-23
  byte weekDay =     2; // Hari diisi dengan nilai 1-7 (1=Minggu, 2 Senin Dst)
  byte monthDay =    2; // Tanggal diisi dengan nilai 1-31
  byte month =       3; //  Bulan diisi dengan nilai 1-12
  byte year  =       15; // Tahun diisi dengan nilai  0-99

  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator

  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));

  Wire.write(zero); //start

  Wire.endTransmission();

}

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

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

void printDate(){

  // Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);

  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());

  //print the date EG   3/1/11 23:59:59
  Serial.print(month);
  Serial.print("/");
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);

}


---------------------------------------------------------------------------------------------
Untuk merubah jam Rtc perhatikan nilai jam yang ada di bagian Setup. isilah second dengan nilai detik yang akan di input. nilai minute dengan nilai menit , hour dengan nilai jam. dan nilai seterusnya. ketika program di Uploud ke Mikrokontroller maka mikrokontroller akan menuliskannya ke RTC. Sebagai Catatatn bahwa setelah program di Uploud maka data akan berubah dan jam  sudah sesuai dengan waktu yang berlaku, maka kita harus mengaploud program untuk menampilkan jam saja. contohnya Uploud saja program pada percobaan sebelunya. Kenapa demikian .........?   . Jawabannya adalah akan terjadi masalah ketika Mikrokontroller di matikan. sebagai contoh kita akan membetulkan nilai jam yang ada di Modul RTC yang tidak sesuai. Pada saat itu menunjukan Jam 5 sore pas dan tanggal pada saat itu adalah tanggal 1 Januari 2015. Tentunya kita memasukan nilai tersebut di bagian setup kemudian alat kita biarkan menyala sampai jam 6 sore dan kita matikan. pada saat Jam 7 malam kita nyalakan kembali mikrokontrollernya dan jam yang akan tampil adalah jam 5 sore dan bukan jam 7 malam. Hal ini dikarenakan pada saat mikrokontroller dihidupkan Modul Rtc kembali di rubah data waktunya seperti nilai yang tertulis di bagian setup. Nah oleh karena itu maka setelah program ini di uploud harus segera di ganti dengan program tampilan jam saja.

Mungkin kita akan membayangkan bahwa membuat jam dengan modul RTC adalah tidak praktis yaaa.. bagaiman jamnya bila di pakai oleh pengguna yang tidak mengerti mikrokontroller sama sekali. tentunya bilai jam nya ngaco maka tidak dapat di betulkan sendiri. Untuk itulah kita perlu mengembangkan program ini agar jam dan cara membetulkan jamnya bisa bergabung dan tidak perlu menggunakan komputer dalam mengatur jamnya. Ikutilah Ling berikut Untuk latihan membuat jam lanjutan


Tidak ada komentar:

Posting Komentar