Dibawah ini adalah scriptnya, semoga bermanfaat.
--------------------------------------------------------------------------------------------------------------------
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
// Tetapan OLED
#define OLED_MOSI 21
#define OLED_CLK 22
#define OLED_DC 15
#define OLED_CS 13
#define OLED_RESET 14
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
// Tetapan WiFi
const char* ssid = "XXXX"; // Ganti dengan SSID WiFi anda
const char* password = "XXXX"; // Ganti dengan kata laluan WiFi anda
// Tetapan NTP (Masa Internet)
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "sg.pool.ntp.org", 8 * 3600, 60000); // GMT+8
// Jadual waktu azan (untuk lokasi tertentu, ubah ikut lokasi anda)
struct PrayerTime {
String name;
int hour;
int minute;
};
PrayerTime prayerTimes[] = {
{"Subuh", 5, 45},
{"Zohor", 13, 10},
{"Asar", 16, 30},
{"Maghrib", 19, 5},
{"Isyak", 20, 15}
};
const int numPrayers = sizeof(prayerTimes) / sizeof(prayerTimes[0]);
void setup() {
Serial.begin(115200);
// Sambungkan WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected");
// Mulakan NTP
timeClient.begin();
// Mulakan OLED
if (!display.begin(SSD1306_SWITCHCAPVCC)) {
Serial.println(F("OLED initialization failed"));
while (1);
}
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1); // Saiz font kecil
display.setCursor(0, 0);
display.println("Jam Azan");
display.println("Memuatkan...");
display.display();
delay(2000);
}
void loop() {
// Kemas kini masa
timeClient.update();
// Dapatkan masa semasa
int currentHour = timeClient.getHours();
int currentMinute = timeClient.getMinutes();
int currentSecond = timeClient.getSeconds();
// Periksa waktu azan
checkPrayerTime(currentHour, currentMinute);
// Paparkan masa dan waktu solat
displayTime(currentHour, currentMinute, currentSecond);
delay(1000);
}
void checkPrayerTime(int hour, int minute) {
for (int i = 0; i < numPrayers; i++) {
if (hour == prayerTimes[i].hour && minute == prayerTimes[i].minute) {
// Notifikasi azan (anda boleh sambung ke buzzer/speaker di sini)
Serial.println("Waktu Azan: " + prayerTimes[i].name);
playAzan();
}
}
}
void playAzan() {
// Gantikan dengan kod untuk memainkan azan (buzzer atau audio file)
Serial.println("Memainkan Azan...");
}
void displayTime(int hour, int minute, int second) {
display.clearDisplay();
display.setTextSize(1); // Saiz font kecil
display.setCursor(0, 0);
// Paparkan masa semasa
if (hour < 10) display.print("0");
display.print(hour);
display.print(":");
if (minute < 10) display.print("0");
display.print(minute);
display.print(":");
if (second < 10) display.print("0");
display.print(second);
// Tambahkan "9m2zak" pada hujung jam
display.print(" 9m2zak");
// Paparkan waktu solat
display.setTextSize(1); // Saiz font kecil
display.setCursor(0, 20); // Ubah kedudukan ke atas sedikit
for (int i = 0; i < numPrayers; i++) {
display.print(prayerTimes[i].name);
display.print(": ");
if (prayerTimes[i].hour < 10) display.print("0");
display.print(prayerTimes[i].hour);
display.print(":");
if (prayerTimes[i].minute < 10) display.print("0");
display.print(prayerTimes[i].minute);
display.println();
}
display.display();
}