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