#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const char* ntpServerName = "pool.ntp.org";
const char* ssid_name = "halo";
const char* password = "salwacantik";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, ntpServerName);
const int led = 22;
const int tombol1 = 18;
const int tombol2 = 25;
int buttonState1 = 0;
int buttonState2 = 0;
bool alarm_active = false;
int alarm_second = 0;
int alarm_hour = 0;
int alarm_minute = 0;
void setup() {
pinMode(tombol1, INPUT_PULLUP);
pinMode(tombol2, INPUT_PULLUP);
pinMode(led, OUTPUT);
Serial.begin(115200);
WiFi.begin(ssid_name, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("menghubungkan ke WiFi...");
}
timeClient.begin();
while(!timeClient.update())
{
timeClient.forceUpdate();
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("jam dan alarm");
display.display();
delay(1000);
}
void loop()
{
buttonState1 = digitalRead(tombol1);
buttonState2 = digitalRead(tombol2);
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(1);
display.setTextColor(WHITE);
time_t currentDate = timeClient.getEpochTime();
tm *localTime = localtime(¤tDate);
char* weekDays[] = {"sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"};
display.println(weekDays[localTime->tm_wday]);
display.print(localTime->tm_mday);
display.print("/");
display.print(localTime->tm_mon + 1);
display.print("/");
display.println(localTime->tm_year + 1900);
display.println(timeClient.getFormattedTime());
if (buttonState1 == LOW)
{
alarm_hour++;
if (alarm_hour > 23)
{
alarm_hour = 0;
}
display.print("atur alarm ke ");
display.print(alarm_hour);
display.print(":");
display.print(alarm_minute);
display.print(":");
display.println(alarm_second);
}
if (buttonState2 == LOW)
{
alarm_minute++;
if (alarm_minute > 59)
{
alarm_minute = 0;
}
display.print("atur alarm ke ");
display.print(alarm_hour);
display.print(":");
display.print(alarm_minute);
display.print(":");
display.println(alarm_second);
display.println("alarm berhasil diatur!");
alarm_active = true;
}
if (alarm_active)
{
if (timeClient.getHours() == alarm_hour &&
timeClient.getMinutes() == alarm_minute &&
timeClient.getSeconds() == alarm_second) {
digitalWrite(led, HIGH);
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(1.5);
display.setTextColor(WHITE);
display.println("alarm sudah aktif");
display.display();
delay(20000);
digitalWrite(led, LOW);
display.clearDisplay();
display.display();
alarm_active = false;
}
}
display.display();
delay(1000);
}