#include <DS3231.
h>// RTC DS3231 Library
#include <LiquidCrystal_I2C.h>
#include <Wire.h> // i2C Conection Library
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Deklarasi pin analog untuk push button sebagai alat input:
#define bt_time A0//Tombol Setting Waktu, Hari, & Tanggal
#define bt_up A1//Tombol Pilih Atas
#define bt_down A2//Tombol Pilih Bawah
#define bt_alarm A3//Tombol Setting Alarm
#define buzzer 8//Pin Buzzer
// RTC DS3231 yang akan digunakan
DS3231 rtc(SDA, SCL);
// deklarasi data dan waktu yang akan digunakan
Time t; //pencacah string time()
int hh = 0, mm = 0, ss = 0, dd = 0, bb = 0, set_day;
int yy = 0;
String Day = " ";
int AlarmHH = 21, AlarmMM = 22, AlarmSS = 23, setMode = 0,
setAlarm = 0, alarmMode = 0;
int stop = 0, mode = 0, flag = 0;
//Eeprom Store Variable
uint8_t HH;
uint8_t MM;
void setup() {
// Setup Serial connection
[Link](9600);
[Link](); // memulai koneksi i2c dengan RTC
pinMode(bt_time, INPUT_PULLUP);
pinMode(bt_up, INPUT_PULLUP);
pinMode(bt_down, INPUT_PULLUP);
pinMode(bt_alarm, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);// buzzer sebagai output
[Link]();
[Link]();
[Link](0, 0); //Show "TIME" on the LCD
[Link] (0, 0);
[Link](" KELOMPOK 8 ");
[Link] (0, 1);
[Link](" Mikrokontroler ");
delay (2000);
[Link]();
stop = [Link](50);
if (stop == 0) {
} else {
WriteEeprom ();
}
[Link](50, 0);
ReadEeprom();
//Set RTC Untuk Pertama kali
//[Link](2); // Set Day-of-Week to SUNDAY
//[Link] (00, 9, 50);
//[Link](12, 11, 2017);
}
void loop() {
t = [Link]();
Day = [Link](1);
if (setMode == 0) {
hh = [Link], DEC;
mm = [Link], DEC;
ss = [Link], DEC;
dd = [Link], DEC;
bb = [Link], DEC;
yy = [Link], DEC;
}
if (setAlarm == 0) {
[Link](0, 0);
[Link]((hh / 10) % 10);
[Link](hh % 10);
[Link](":");
[Link]((mm / 10) % 10);
[Link](mm % 10);
[Link](":");
[Link]((ss / 10) % 10);
[Link](ss % 10);
[Link](" ");
if (mode == 1) {
[Link](2);
}else {
[Link](" ");
}
[Link](" ");
[Link](1);
[Link]([Link](), 0);
[Link](223);
[Link]("C");
[Link](" ");
[Link](1, 1);
[Link](Day);
[Link](" ");
[Link]((dd / 10) % 10);
[Link](dd % 10);
[Link]("/");
[Link]((bb / 10) % 10);
[Link](bb % 10);
[Link]("/");
[Link]((yy / 1000) % 10);
[Link]((yy / 100) % 10);
[Link]((yy / 10) % 10);
[Link](yy % 10);
}
setupClock();
setTimer();
delay (100);
blinking();
//Alarm
if (alarmMode == 1 && mode == 1 && hh == AlarmHH && mm ==
AlarmMM && ss >= AlarmSS) {
digitalWrite(buzzer, HIGH);//Buzzer berdering
delay (200);//Jeda Bunyi Buzzer 0,3 detik
digitalWrite(buzzer, LOW);//Buzzer berhenti berdering
} else {
digitalWrite(buzzer, LOW);//Buzzer berhenti berdering
}
delay (100);
}
void blinking () {
//BLINKING SCREEN
if (setAlarm < 2 && setMode == 1) {
[Link](0, 0);
[Link](" ");
}
if (setAlarm < 2 && setMode == 2) {
[Link](3, 0);
[Link](" ");
}
if (setAlarm < 2 && setMode == 3) {
[Link](6, 0);
[Link](" ");
}
if (setAlarm < 2 && setMode == 4) {
[Link](1, 1);
[Link](" ");
}
if (setAlarm < 2 && setMode == 5) {
[Link](5, 1);
[Link](" ");
}
if (setAlarm < 2 && setMode == 6) {
[Link](8, 1);
[Link](" ");
}
if (setAlarm < 2 && setMode == 7) {
[Link](11, 1);
[Link](" ");
}
//Alarm
if (setMode == 0 && setAlarm == 1) {
[Link](6, 0);
[Link](" ");
}
if (setMode == 0 && setAlarm == 2) {
[Link](4, 1);
[Link](" ");
}
if (setMode == 0 && setAlarm == 3) {
[Link](7, 1);
[Link](" ");
}
if (setMode == 0 && setAlarm == 4) {
[Link](10, 1);
[Link](" ");
}
}
//Seting Jam ,Tanggal,Alarm/Timer
void setupClock (void) {
if (setMode == 8) {
[Link] (0, 0);
[Link] (F("Set Date Finish "));
[Link] (0, 1);
[Link] (F("Set Time Finish "));
delay (1000);
[Link] (hh, mm, ss);
[Link] (dd, bb, yy);
[Link]();
setMode = 0;
}
if (setAlarm == 5) {
[Link] (0, 0);
[Link] (F("Set Alarm Finish"));
delay (2000);
[Link]();
setAlarm = 0;
alarmMode = 1;
}
if (setAlarm > 0) {
alarmMode = 0;
}
if (digitalRead (bt_time) == 0 && flag == 0) {
flag = 1;
if (setAlarm > 0) {
setAlarm = 5;
}else {
setMode = setMode + 1;
}
}
if (digitalRead (bt_alarm) == 0 && flag == 0) {
flag = 1;
if (setMode > 0) {
setMode = 8;
}else {
setAlarm = setAlarm + 1;
}
[Link]();
}
if (digitalRead (bt_time) == 1 && digitalRead (bt_alarm) == 1) {
flag = 0;
}
if (digitalRead (bt_up) == 0) {
if (setAlarm < 2 && setMode == 1)hh = hh + 1;
if (setAlarm < 2 && setMode == 2)mm = mm + 1;
if (setAlarm < 2 && setMode == 3)ss = ss + 1;
if (setAlarm < 2 && setMode == 4)set_day = set_day + 1;
if (setAlarm < 2 && setMode == 5)dd = dd + 1;
if (setAlarm < 2 && setMode == 6)bb = bb + 1;
if (setAlarm < 2 && setMode == 7)yy = yy + 1;
//Alarm
if (setMode == 0 && setAlarm == 1)mode = 1;
if (setMode == 0 && setAlarm == 2 && AlarmHH < 23)AlarmHH =
AlarmHH + 1;
if (setMode == 0 && setAlarm == 3 && AlarmMM < 59)AlarmMM =
AlarmMM + 1;
if (setMode == 0 && setAlarm == 4 && AlarmSS < 59)AlarmSS =
AlarmSS + 1;
if (hh > 23)hh = 0;
if (mm > 59)mm = 0;
if (ss > 59)ss = 0;
if (set_day > 7)set_day = 0;
if (dd > 31)dd = 0;
if (bb > 12)bb = 0;
if (yy > 2030)yy = 2000;
[Link](set_day);
}
if (digitalRead (bt_down) == 0) {
if (setAlarm < 2 && setMode == 1)hh = hh - 1;
if (setAlarm < 2 && setMode == 2)mm = mm - 1;
if (setAlarm < 2 && setMode == 3)ss = ss - 1;
if (setAlarm < 2 && setMode == 4)set_day = set_day - 1;
if (setAlarm < 2 && setMode == 5)dd = dd - 1;
if (setAlarm < 2 && setMode == 6)bb = bb - 1;
if (setAlarm < 2 && setMode == 7)yy = yy - 1;
//Alarm
if (setMode == 0 && setAlarm == 1 )mode = 0;
if (setMode == 0 && setAlarm == 2 && AlarmHH > 0)AlarmHH =
AlarmHH - 1;
if (setMode == 0 && setAlarm == 3 && AlarmMM > 0)AlarmMM =
AlarmMM - 1;
if (setMode == 0 && setAlarm == 4 && AlarmSS > 0)AlarmSS =
AlarmSS - 1;
if (hh < 0)hh = 23;
if (mm < 0)mm = 59;
if (ss < 0)ss = 59;
if (set_day < 0)set_day = 7;
if (dd < 0)dd = 31;
if (bb < 0)bb = 12;
if (yy < 0)yy = 2030;
[Link](set_day);
}
}
void setTimer () {
//Alarm
if (setMode == 0 && setAlarm > 0) {
[Link] (0, 0);
[Link]("Alarm ");
if (mode == 0) {
[Link]("Deactivate");//Alarm Di Nonaktifkan
}else {
[Link]("Activated ");//Alarm Di Aktfikan
}
[Link] (4, 1);
[Link]((AlarmHH / 10) % 10);
[Link](AlarmHH % 10);
[Link](":");
[Link]((AlarmMM / 10) % 10);
[Link](AlarmMM % 10);
[Link](":");
[Link]((AlarmSS / 10) % 10);
[Link](AlarmSS % 10);
}
}
void ReadEeprom () {//Membaca kondisi Eeprom
AlarmHH = [Link](1);
AlarmMM = [Link](2);
AlarmSS = [Link](3);
mode = [Link](4);
}
void WriteEeprom () {//menulis nilai ke eeprom
[Link](1, AlarmHH);
[Link](2, AlarmMM);
[Link](3, AlarmSS);
[Link](4, mode);
}