Ich stelle die RTC Uhr mit dem Programm:
Die Batterie der Uhr muss drin sein.
Code: Alles auswählen
    // Einstellen der Uhrzeit vom RTC3231
    // Die aktuelle Zeit wird in Setup() eingestellt und beim Start übertragen
    // Dazu wird das Programm ca. 4 Sekunden vor der eingestellten Zeit übersetzt 
    // und übertragen, dann ist es rechtzeitig fertig
    //
    // Matthias Busse 7.11.2016 Version 1.0
    #include "Wire.h"
    #define DS3231_ADDRESSE 0x68
    void setup() {
      Wire.begin();
      Serial.begin(38400);
      // aktuelle Zeit     sek min std wt tag mon jahr
      einstellenDS3231zeit(00, 10, 17, 5, 25,  10,  19);
    }
    void loop() {
      zeigeZeit(); // Zeit ausgeben
      delay(1000); // jede Sekunde
    }
    void einstellenDS3231zeit(byte sekunde, byte minute, byte stunde, byte wochentag, byte tag, byte monat, byte jahr) {
      // Datum und Uhrzeit einstellen
      Wire.beginTransmission(DS3231_ADDRESSE);
      Wire.write(0);
      Wire.write(decToBcd(sekunde)); // Sekunden einstellen
      Wire.write(decToBcd(minute)); // Minuten einstellen
      Wire.write(decToBcd(stunde));
      Wire.write(decToBcd(wochentag)); // 1=Sonntag ... 7=Samstag
      Wire.write(decToBcd(tag));
      Wire.write(decToBcd(monat));
      Wire.write(decToBcd(jahr)); // 0...99
      Wire.endTransmission();
    }
    void leseDS3231zeit(byte *sekunde, byte *minute,byte *stunde, byte *wochentag, byte *tag, byte *monat, byte *jahr) {
      Wire.beginTransmission(DS3231_ADDRESSE);
      Wire.write(0); // DS3231 Register zu 00h
      Wire.endTransmission();
      Wire.requestFrom(DS3231_ADDRESSE, 7); // 7 Byte Daten vom DS3231 holen
      *sekunde = bcdToDec(Wire.read() & 0x7f);
      *minute = bcdToDec(Wire.read());
      *stunde = bcdToDec(Wire.read() & 0x3f);
      *wochentag = bcdToDec(Wire.read());
      *tag = bcdToDec(Wire.read());
      *monat = bcdToDec(Wire.read());
      *jahr = bcdToDec(Wire.read());
    }
    void zeigeZeit(){
    byte sekunde, minute, stunde, wochentag, tag, monat, jahr;
      leseDS3231zeit(&sekunde, &minute, &stunde, &wochentag, &tag, &monat, &jahr);   // Daten vom DS3231 holen
      if (tag < 10) { Serial.print("0");} 
      Serial.print(tag); // ausgeben T.M.J H:M:S
      Serial.print(":");
      if (monat < 10) { Serial.print("0");}
      Serial.print(monat);
      Serial.print(":20");
      Serial.print(jahr);
      Serial.print(" ");
      if (stunde < 10) { Serial.print("0");}
      Serial.print(stunde, DEC); // byte in Dezimal zur Ausgabe
      Serial.print(":");
      if (minute < 10) { Serial.print("0");}
      Serial.print(minute, DEC);
      Serial.print(":");
      if (sekunde < 10) { Serial.print("0"); }
      Serial.println(sekunde, DEC);
    }
    byte decToBcd(byte val) {
    // Dezimal Zahl zu binary coded decimal (BCD) umwandeln
      return((val/10*16) + (val%10));
    }
    byte bcdToDec(byte val) {
    // BCD (binary coded decimal) in Dezimal Zahl umwandeln
      return((val/16*10) + (val%16));
    }
Und dann spiele ich das eigentliche Programm ein. Du kannst alle Komponenten drann lassen, wenn du das Programm einspielst. Auch beim Programm mit dem du die Uhr stellst.
Du hast also zwei Netzteile angeschlossen? Ein 5 Volt und ein 12 Volt ??
Wenn das so ist, müßen die GND Anschlüße von beiden Netzteilen verbunden sein. 
Franz