#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
int jam, menit, detik;
int tanggal, bulan, tahun;
String hari;
//oled
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Lebar layar OLED dalam piksel
#define SCREEN_HEIGHT 64 // Tinggi layar OLED dalam piksel
// Deklarasi untuk layar SSD1306 terhubung dengan I2C (pin SDA, SCL)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//SERVO
#include <Servo.h>
Servo mekanik;
void setup () {
//rtc
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
//oled
// Inisialisasi layar dengan alamat I2C 0x3C (untuk 128x64)
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
//SERVO
mekanik.attach(4);
mekanik.write(0);
}
}
void loop () {
//rtc
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
hari = daysOfTheWeek[now.dayOfTheWeek()];
Serial.println(String() + hari + ", " + tanggal + "-" + bulan + "-" + tahun);
Serial.println(String() + jam + "-" + menit + "-" + detik);
Serial.println();
delay(1000);
//oled
display.clearDisplay();
// Atur ukuran teks dan warna
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Tampilkan pesan teks
display.setCursor(0, 0);
display.println(String() + hari + ", " + tanggal + "-" + bulan + "-" + tahun);
display.println(String() + jam + "-" + menit + "-" + detik);
display.display();
//KONDISI
if ( (jam == 22) && (menit == 34) && (detik == 1) ) {
kasih_pakan(5);
}
if ( (jam == 22) && (menit == 46) && (detik == 1) ) {
kasih_pakan(5);
}
}
void kasih_pakan(int jumlah) {
for (int i = 1; i <= jumlah; i++) {
mekanik.write(150);
delay(100);
mekanik.write(0);
delay(100);
}
}