/ Pemanggilan library Wire, RTC, dan LCD
#include <SimpleTimer.h> // library pengganti delay (
multitask )
#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
////////// variable DHT //////////////
#include <DHT.h>
#define DHTPIN 11
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float humidity, temp_f; // Values read from sensor
//int ledPins[]={4,5,6,7,8,9};
SimpleTimer timer;
// Inisialisasi RTC DS3231
DS3231 rtc(SDA, SCL);
Time t; //pencacah string time()
uint8_t hh = 0, mm = 0, ss = 0, dd = 0, bb = 0;
int yy = 0;
String Day = " ";
String Month = " ";
//mengganti angka hari ke kar akrer
char* chday[] =
{ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at",
"Sabtu"
};
//mengganti angka bulan ke karakrer
const char* chbul[] =
{ "Dec", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov"
};
byte termometer[8] = //membuat icon / simbol termometer
{
B00100,
B01010,
B01010,
B01110,
B01110,
B11111,
B11111,
B01110
};
byte humidit[8] = //membuat icon / simbol kelembaban
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
byte customC[8] = //membuat huruf c kecil si atas
{
0b01110,
0b10000,
0b10000,
0b10000,
0b01110,
0b00000,
0b00000,
0b00000
};
int i;
void setup ()
{
//pinMode (0, OUTPUT); //Untuk Fungsi Alarm
Wire.begin(); // memulai koneksi i2c
lcd.init(); // inisialisasi lcd 12c
lcd.backlight(); // menghidupkan backlight lcd i2c
rtc.begin(); //Memulai RTC
Serial.begin(9600); // memulai koneksi serial dengan baud
rate 9600
delay(10); //
if (rtc.begin(), 0)
{
Serial.println("RTC Tidak Tersedia");
lcd.print("RTC Tidak Tersedia");
while (1);
}
//Gunakan untuk setting RTC pertama kali (setelah RTC di
setup upload ulang tanpa kode set RTC)
//rtc.setTime (18, 35, 00); //set jam (hh,mm,ss)
//rtc.setDate(14, 5, 2017); //set tanggal (dd,bb,yyyy)
// Fungsi simple timer, mengatur interval program di
jalankan
timer.setInterval(10000, tampilJam);
timer.setInterval(10000, tampilDHT);
//timer.setInterval(60000, ledJalan);
//Menampilkan Runningtext Pada StartUp
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(16, 0);
lcd.print(" SATIYO ");
lcd.setCursor(16, 1);
lcd.print(" ARIHYOSHI ");
for (i = 0 ; i < 16; i ++) {
lcd.scrollDisplayLeft();
delay(200);
}
delay(2000);
lcd.clear();
/ memanggil dan menampilkan kode byte simbol yang
sudah di buat pada lcd
lcd.createChar(1, termometer);
lcd.createChar(2, humidit);
lcd.createChar(0, customC);
}
////script led berJalan ////
/*for (int i =0; i <6; i++)
{
pinMode(ledPins[i],OUTPUT);
}*/
//////////// Program Jam Digital //////////////
void tampilJam()
{
//Menuliskan jam & tanggal pada lcd
t = rtc.getTime(); //Mengambil Data Jam
Day = rtc.getDOWStr(FORMAT_SHORT); //mengambil
data String nama Hari
Month = rtc.getMonthStr(1); //mengambil data String
nama Bulan
hh = t.hour, DEC;
mm = t.min, DEC;
ss = t.sec, DEC;
dd = t.date, DEC;
bb = t.mon, DEC;
yy = t.year, DEC;
//Menampilkan Jam pada lcd
lcd.setCursor(0, 0);
if (hh < 10) {
lcd.print(F("0"));
}
lcd.print(hh);
lcd.print(":");
if (mm < 10) {
lcd.print(F("0"));
}
lcd.print(mm);
//menampilkan tanggal pada lcd
lcd.setCursor(7, 0);
if (dd < 10) {
lcd.print(F(" "));
}
lcd.print(dd);
lcd.setCursor(9, 0);
lcd.print(" ");
lcd.print(bb[chbul]);
lcd.print(" ");
lcd.print((yy) - 2000);
}
////////// Program sensor dht11 ////////////
void tampilDHT()
{
float hum = dht.readHumidity(); // membuat variable
mengambil data kelembaban dht11
float temp = dht.readTemperature(); //membuat variable
mengambil data suhu
// menampilkan suhu pada lcd
lcd.setCursor(1, 1);
lcd.write(1);
lcd.setCursor(3, 1);
lcd.print((float)temp, 0);
lcd.setCursor(5, 1);
lcd.write(0xdf);
lcd.write((uint8_t)0);
//menampilkan kelembaban pada lcd
lcd.setCursor(9, 1);
lcd.write(2);
lcd.setCursor(11, 1);
lcd.print((float)hum, 0);
lcd.print("%");
delay(1000);
}
/////////////// Program Led Berjalan ////////////////////
/*void ledJalan()
{
for(int i =0; i<6; i++)
{
digitalWrite(ledPins[i],HIGH);
delay(100);
digitalWrite(ledPins[i],LOW);
}
for(int i =5; i<1; i--)
{
digitalWrite(ledPins[i],HIGH);
delay(100);
digitalWrite(ledPins[i],LOW);
}
}*/
void loop ()
{
timer.run(); //menjalankan simple timer
tampilJam(); // menjalankan program penampil jam
tampilDHT(); // menjalankan program penampil suhu dan
kelembaban
//ledJalan();
}