Selasa, 02 Agustus 2016

Jam Beker dengan Arduino

Halaman ini adalah lanjutan dari praktek membuat jam yang dapat di atur. 





Sekarang kita akan membuat jam beker atau jam yang dilengkapi dengan Alarm agar dapat bangun pagi.. hehehe..




Di pagi yang cerah Kang Kabayan bertemu dengan Sohibnya yaitu Mas Mukidi yang rumahnya terhalang empang pak lurah. Kang Kabayan menceritakan Rancangan Mikrokontroller nya yang dijadikan Jam beker. .....

Mas Mukidi  : " Wah hebat yaaa.. Kang Kabayan membuat Jam Beker dengan Mikrokontroller Arduino. Alat nya apa aja Kang...?
Kang Kabayan : " Alat yang kita perlukan yaitu :  Mikrokontroller Arduino Uno
                                                                     Modul RTC DS 1307
                                                                     Lcd 16x2 Karakter
                                                                     1 Buah Buzzer







#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // RS,E,D4,D5,D6,D7

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527
int t1,t2,t3,j,mn,d,tg,bl,th,hk;
String hari;
String b1,b2,baris1,baris2;
int j1,j2,m1,m2,d1,d2;
// waktu setel Alarm jam 5 pagi
int WaktuAlarm =500;
void setup() {
    Wire.begin();
    lcd.begin(16,2);
   pinMode (18,OUTPUT); digitalWrite(18,0); // Untuk Memberi Tegangan 0 Volt ke RTC
 pinMode (19,OUTPUT); digitalWrite(19,1);  // Untuk Memberi Tegangan 5 Volt ke RTC

}

void loop() {
// Pertama tama membaca nilai RTC
  Wire.beginTransmission(DS1307_ADDRESS);
  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);
   d = bcdToDec(Wire.read());
  mn = bcdToDec(Wire.read());
  j = bcdToDec(Wire.read() & 0b111111); //24 hour time
  hk = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  tg = bcdToDec(Wire.read());
  bl = bcdToDec(Wire.read());
  th = bcdToDec(Wire.read());
// Mentransfer nilai hari menjadi nama hari  
 if (hk == 1) hari="Minggu" ;
  if (hk == 2) hari="Senin" ;
  if (hk == 3) hari="Selasa" ;
  if (hk == 4) hari="Rabu" ;
  if (hk == 5) hari="Kamis" ;
  if (hk == 6) hari="Jum'at" ;
  if (hk == 7) hari="Saptu" ;


 j1= j/10; j2=j%10; m1=mn/10; m2=mn%10; d1=d/10; d2=d%10;

 baris1=hari+ " "+ String (tg) +"-"+ String (bl)+"-"+ String (th) ;
  baris2= "Jam : "+String (j1)+String (j2) +":"+ String (m1)+String (m2)+":"+String (d1)+String (d2) ;
// Bagian Alarm berbunyi jika jam 5 pagi
if ( WaktuAlarm == ((j *100) + (mn)))  {
if ( d<2) {
baris1 = "Alarm" ;
digitalWrite (13,HIGH);
} }
// Menampilkan jam di layar LCD
  if(b1!= baris1 || b2!=baris2 ) {
  b1= baris1 ; b2=baris2 ;
    lcd.clear() ;
  lcd.setCursor(0,0);   lcd.print(b1);
  lcd.setCursor(0,1);   lcd.print(b2); }

 delay (100);
}

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) );
}

Tidak ada komentar:

Posting Komentar