#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
//#include <Servo.h> (perintah ini buat di arduino uno r3)
#include <ESP32Servo.h>
#define TINGGI_LAYAR 64 // Tinggi layar OLED yang digunakan
#define LEBAR_LAYAR 128 // Lebar layar OLED yang digunakan
//PERINTAH UNTUK SSD1331 lebih dari 1 warna
//#define BLACK 0x0000
//#define BLUE 0x001F
//#define RED 0xF800
//#define GREEN 0x07E0
//#define CYAN 0x07FF
//#define MAGENTA 0xF81F
//#define YELLOW 0xFFE0
//#define WHITE 0xFFFF
Adafruit_SSD1306 oled(LEBAR_LAYAR, TINGGI_LAYAR, &Wire, -1);
Servo myservo;
RTC_DS1307 rtc;
char days[7][12] = {"MINGGU", "SENIN", "SELASA", "RABU", "KAMIS", "JUM'AT", "SABTU"};
void setup() {
myservo.attach(13); //kode servo
myservo.write(0);//kode servo
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("RTC tidak terhubung, Cek kembali wiring!");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC tidak bekerja, Setel ulang waktu!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));}
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
while (1);
}
oled.display();
delay(2000);
oled.clearDisplay();
oled.setTextSize(1); // Atur ukuran text
oled.setTextColor(WHITE); // Atur warna text
oled.setCursor(20, 20); // Atur posisi text pada display
oled.println("SELAMAT DATANG"); // Text yang dicetak
oled.display();
delay(8000);
oled.clearDisplay();// menampilkan display OLED
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.print(":");
Serial.print(now.second());
Serial.println(" ");
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.print(now.day());
oled.print('/');
oled.print(now.month());
oled.print('/');
oled.print(now.year());
oled.setTextSize(1);
oled.setCursor(0, 10);
oled.print(days[now.dayOfTheWeek()]);
oled.print(' ');
oled.setTextSize(1);
oled.setCursor(0, 20);
//oled.setTextAlignment(TEXT_ALIGN_CENTER);
oled.print(now.hour());
oled.print(':');
oled.print(now.minute());
oled.print(':');
oled.print(now.second());
oled.display();
oled.setCursor(0, 30);
oled.println("SELAMAT DATANG");
if ((now.hour() == 14 and now.minute() == 20 and now.second() == 0)) {
myservo.write(90);
delay(3000);
myservo.write(0);}
//delay(3000);}
// Blynk.run();
}/* Program Kunci Pintu dengan password input Keypad 4x4 dibuat oleh Indobot */