Dalam proyek ini, kami merancang Jam
dengan alarm berbasis Arduino. Real Time Clock atau RTC adalah jam menggunakan baterai
yang memberikan waktu bahkan ketika tidak ada daya eksternal atau
mikrokontroler diprogram.
RTC menampilkan jam dan kalender
dengan semua fungsi ketepatan waktu. Baterai, yang terhubung ke RTC adalah
salah satu yang terpisah dan tidak terkait atau terhubung ke catu daya utama.
Tujuan dari proyek ini adalah
untuk membuat sebuah jam dengan fitur alarm. Kerja proyek dijelaskan di bawah
ini.
Dalam rangka untuk mengatur
alarm, kita menekan tombol set. Ini akan membuat ardiuno menuju ke mode alarm
dan meminta inputan jam dengan waktu saat ini yang ditampilkan. Tombol INC
harus ditekan untuk mengubah jam.
Seperti jam dalam format 24 jam,
jam akan bertambah antara 0 dan 23. Setelah jam alarm diatur, kita harus
menekan tombol di NEXT untuk menuju ke tab menit.
Sekali lagi tombol INC ditekan
untuk mengubah menit. Setelah waktu alarm masuk, tombol SET ditekan dan alarm selesai
di setting.
Nilai yang dimasukkan sebagai
alarm disimpan dalam EEPROM dari Arduino. Nilai-nilai ini terus menerus dibandingkan
dengan saat ini.
Ketika pertandingan nilai-nilai
yang tersimpan dan nilai saat ini sama, bel alarm akan dipicu. Dalam rangka
untuk menghentikan alarm, tombol NEXT ditekan.
Alat dan Bahan yang dibutuhkan :
· 1x Arduino Pro Mini
(Compatible)
· 1x LCD 16x2
· 1x Potensiometer 10K
Ohm
· 3 x Tombol Push
Button
· 1x Tiny RTC DS1307 modul
· Kabel jumper secukupnya
Rangkaian :
Susunlah rangkaian untuk bluetooth seperti gambar dibawah ini
Copy Paste dan Upload Sketch
#include <Wire.h>
#include<EEPROM.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
RTC_DS1307 RTC;
int tmp,Inc,hor,mIn,add=11;
int set=8;
int cge=9;
int mod=10;
int off=0;
#define buz 11
int Hor,Min,Sec;
///////////////////////////////////////Fungsi untuk menyesuaikan waktu//////////////////////////////////
void time()
{
int tmp=1,mins=0,hors=0,secs=0;
while(tmp==1)
{
off=0;
if(digitalRead(cge)==0)
{
Hor++;
if(Hor==24)
{
Hor=0;
}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Set Waktu Alarm
");
lcd.setCursor(0,1);
if(Hor<=9)
lcd.print("0");
lcd.print(Hor);
lcd.print(":");
lcd.print(Min);
lcd.print(":");
lcd.print(Sec);
delay(200);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(":");
lcd.print(Min);
lcd.print(":");
lcd.print(Sec);
delay(200);
if(digitalRead(set)==0)
{
hor=Hor;
EEPROM.write(add++,hor);
tmp=2;
while(digitalRead(set)==0);
}
}
while(tmp==2)
{
if(digitalRead(cge)==0)
{
Min++;
if(Min==60)
{Min=0;}
}
lcd.setCursor(0,1);
lcd.print(Hor);
lcd.print(":");
if(Min<=9)
lcd.print("0");
lcd.print(Min);
lcd.print(":");
lcd.print(Sec);
lcd.print(" ");
delay(200);
lcd.setCursor(0,1);
lcd.print(Hor);
lcd.print(":");
lcd.print(" ");
lcd.print(":");
lcd.print(Sec);
lcd.print(" ");
delay(200);
if(digitalRead(set)==0)
{
mIn=Min;
EEPROM.write(add++, mIn);
tmp=0;
while(digitalRead(set)==0);
}
}
off=1;
delay(10);
}
///////////////////////////////////////////fungsi untuk membunyikan buzzer//////////////////////////////////
void Buz()
{
if(digitalRead(set)==0)
off=0;
if(off==1)
{
digitalWrite(buz,HIGH);
delay(500);
digitalWrite(buz, LOW);
delay(500);
}
}
//////////////////////////////////////////fungsi untuk membandingkan alarm dengan waktu RTC//////////////////
void TimeCheck()
{
int tem[17];
for(int i=11;i<17;i++)
{
tem[i]=EEPROM.read(i);
}
if(Hor == tem[11] && Min == tem[12] && off==1)
{
add=11;
Buz();
Buz();
lcd.clear();
lcd.print("alarm...........");
lcd.setCursor(0,1);
lcd.print("...........alarm");
Buz();
Buz();
}
}
////////////////////////////////////////////////////////////setup///////////////////////////
void setup()
{
Wire.begin();
RTC.begin();
lcd.begin(16,2);
pinMode(cge, INPUT);
pinMode(set, INPUT);
pinMode(mod, INPUT);
pinMode(buz, OUTPUT);
digitalWrite(set, HIGH);
digitalWrite(mod, HIGH);
digitalWrite(cge, HIGH);
lcd.setCursor(0,0);
lcd.print("Imam
Sholahudin");
lcd.setCursor(0,1);
lcd.print(" Alarm
Clock ");
delay(2000);
lcd.clear();
if(!RTC.isrunning())
{
RTC.adjust(DateTime(__DATE__,__TIME__));
}
}
////////////////////////////////////////////////////////////loop/////////////////////////////////////
void loop()
{
DateTime now = RTC.now();
if(digitalRead(mod) == 0)
{
current();
time();
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Alarm
On");
delay(2000);
}
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Time:");
lcd.setCursor(6,0);
Hor=now.hour(),DEC;
if(Hor<=9)
{
lcd.print("0");
lcd.print(Hor=now.hour(),DEC);
}
else
lcd.print(Hor=now.hour(),DEC);
lcd.print(":");
Min=now.minute(),DEC;
if(Min<=9)
{
lcd.print("0");
lcd.print(Min=now.minute(),DEC);
}
else
lcd.print(Min=now.minute(),DEC);
lcd.print(":");
Sec=now.second(),DEC;
if(Sec<=9)
{
lcd.print("0");
lcd.print(Sec=now.second(),DEC);
}
else
lcd.print(Sec=now.second(),DEC);
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(now.day(),DEC);
lcd.print("/");
lcd.print(now.month(),DEC);
lcd.print("/");
lcd.print(now.year(),DEC);
TimeCheck();
delay(200);
}
///////////////////////////////////////////////////////fungsi untuk mengambil waktu RTC //////////////////////////////
void current()
{
lcd.setCursor(0,1);
lcd.print(Hor);
lcd.print(":");
lcd.print(Min);
lcd.print(":");
lcd.print(Sec);
}
Assalamualaikum, bang saya ngambil project punya Abang ini untuk tugas kuliah saya, sebelumnya terima kasih. Tapi saya ditanya sama dosen saya katanya dibagian program yang mana untuk mensetting alarmnya bang, saya kurang mengerti tentang pemrograman, jujur saya ini ngambil jurusan mesin tpi ada matkul dasar pemrograman.
BalasHapus