Hallo ich habe nach langem doch ein Problem mit meiner Uhr.
Dieses Forum hatte mir schon super geholfen aber leider kommt jetzt noch die Zeitumstellung dazu.
Leider stellt sie sich nicht von selbst und die Uhr ist auch nicht manuell stellbar.
kann mir bitte jemand helfen?
#include "RTClib.h"
#include <Wire.h>
#include <IRremote.h> // Die IRRemote- Library
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0);
int ledPin = 2;
byte ledState = 0;
int RECV_PIN = 9; // An Pin 9 werden die Empfangenen Daten vom
// Infrarotsensor gesammelt
IRrecv irrecv(RECV_PIN); // Ein IRrecv- Objekt wird definiert,
decode_results results; // Die dekodierten Daten, werden in Results
// gespeichert
RTC_DS3231 rtc;
void setup() {
Serial.begin (9600);
irrecv.enableIRIn(); // Der Infrarotsensor wird hier initialisiert
pinMode(ledPin, OUTPUT);
Serial.println(RECV_PIN);
u8g2.begin();
if (! rtc.begin()) {
Serial.print("RTC nicht gefunden");
Serial.flush();
abort();
}
if (rtc.lostPower()) {
Serial.print("Zeit muss neu eingestellt werden");
// Wenn die Zeit auf einem neuen Gerät oder nach einem Stromausfall eingestellt werden muss,
//setzt die folgende Zeile die RTC auf das Datum und die Uhrzeit, zu der dieser Sketch erstellt wurde
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop()
{
u8g2.firstPage();
do {
DateTime now = rtc.now();
u8g2.setFont(u8g2_font_crox4hb_tn);
u8g2.setCursor(15, 20);
ausgabe(now.day());
u8g2.print('.');
ausgabe(now.month());
u8g2.print('.');
u8g2.print(now.year(), DEC);
u8g2.setFont(u8g2_font_helvR24_tn);
u8g2.setCursor(2, 60);
ausgabe(now.hour());
u8g2.print(':');
ausgabe(now.minute());
u8g2.print(':');
ausgabe(now.second());
} while ( u8g2.nextPage() );
// Code für die LEDs
if (irrecv.decode()){
Serial.println(irrecv.results.value);
//unsigned int value = results.value;
if (irrecv.results.value == 16726215){
ledState = !ledState;
digitalWrite(ledPin, !digitalRead(ledPin));
}
irrecv.resume();
}
}
//wenn die Stunde einstellig ist, setzt dies eine 0 an erster Stelle
void ausgabe(uint8_t zahl){
if (zahl < 10) {
u8g2.print('0');
}
u8g2.print(zahl, DEC);
}