#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define LED_PIN 14
RTC_DS3231 rtc;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(115200);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("SSD1306 allocation failed");
while (1);
}
display.display();
delay(2000);
display.clearDisplay();
pinMode(LED_PIN, OUTPUT);
}
void loop() {
DateTime now = rtc.now();
// Anzeige der aktuellen Uhrzeit
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
if (now.hour() < 10) {
display.print("0"); // Führende Null für einstellige Stunden
}
display.print(now.hour());
display.print(":");
if (now.minute() < 10) {
display.print("0"); // Führende Null für einstellige Minuten
}
display.print(now.minute());
display.print(":");
if (now.second() < 10) {
display.print("0"); // Führende Null für einstellige Sekunden
}
display.print(now.second());
display.display();
// Weckzeit
int alarmHour = 19; // Stunden
int alarmMinute = 56; // Minuten
// Überprüfen, ob die Weckzeit erreicht ist
if (now.hour() == alarmHour && now.minute() == alarmMinute && now.second() < 10) {
digitalWrite(LED_PIN, HIGH); // LED einschalten
delay(1000); // 1 Sekunde warten
digitalWrite(LED_PIN, LOW); // LED ausschalten
delay(1000); // 1 Sekunde warten
} else {
digitalWrite(LED_PIN, LOW); // LED ausschalten
}
delay(1000); // Kurze Verzögerung
}