erneut Probleme mit Uhr

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);
}

Guckst Du hier im Forum.

Da ist eine Funktion beschrieben, die Sommerzeit true oder false zurückliefert - davon abhängig kannst Du die richtige Stunde ausgeben.

morpheus989:
kann mir bitte jemand helfen?

  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)));
  }

ändern in

    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

dann wird die Uhr bei jedem Hochladen gestellt.

my_xy_projekt:
ändern in

    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

dann wird die Uhr bei jedem Hochladen gestellt.

Vielen vielen Dank.

my_xy_projekt:
ändern in

    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

dann wird die Uhr bei jedem Hochladen gestellt.

Nach dem Hochladen mußt Du aber den Sketch nur einmel ausführen und dann durch einen ohne rtc.adjust ersetzen da ansonsten jedesmal beim Einschalten die Zeit zum Kompilierzeitpunkt neu gesetzt wird.
Grüße Uwe

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.