#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
#define Led 2
#define Pot A0
RTC_DS1307 rtc;
int pot_value;
char DaysinaWeek[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600);
//LED and potensio set up
pinMode(Led, OUTPUT);
pinMode(Pot, INPUT);
//RTC set up
if (! rtc.begin()) {
Serial.println("RTC Not reading");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer
}
// Init
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(3, 0);
lcd.print("Synapsis.ID");
delay(2000);
lcd.clear();
}
void LedControl() {
pot_value = analogRead(Pot);
pot_value = map(pot_value, 0, 1023, 0, 255);
analogWrite(Led, pot_value);
lcd.setCursor(0,0);
lcd.print("Nilai analog : ");
lcd.print(pot_value);
if ( pot_value == 0) {
lcd.setCursor(0, 1);
lcd.print("Terang lampu 0%");
}
else if (pot_value > 0 && pot_value <= 63) {
lcd.setCursor(0, 1);
lcd.print("Terang lampu 25%");
}
else if (pot_value > 63 && pot_value <= 127) {
lcd.setCursor(0, 1);
lcd.print("Terang lampu 50%");
}
else if (pot_value > 127 && pot_value <= 192) {
lcd.setCursor(0, 1);
lcd.print("Terang lampu 75%");
}
else {
lcd.setCursor(0, 1);
lcd.print("Terang lampu 100%");
}
}
void DisplayTime() {
lcd.setCursor(0, 2);
DateTime now = rtc.now();
lcd.print(DaysinaWeek[now.dayOfTheWeek()]);
lcd.print(',');
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
}
void loop() {
LedControl();
DisplayTime();
}