Arduino Rtc eine stunde bei bestimmten Minuten hinzufügen

Hi, Ich baue gerade eine Word Uhr, ich habe die uhr inzwischen zusammengebaut und teste sie seit ein paar Tagen. Ich komme aber an diesem Problem nicht weiter:

//Bibilothek einbinden
#include <DS3231.h> 
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>

bool century = false;
bool h12Flag;
bool pmFlag;
DS3231 myRTC;

int h; //Variable Stunde
int m; //Variable Minute
int s; //Variable Sekunde
int u=0; //Variable "Uhr"

//Void Setup
void setup() { 
Serial.begin(9600); //Verbindeung mit Seriellem Monitor
  Wire.begin(); //Verbindung mit dem Zeitzähler

  //Uhrzeit Einstellen (6 Sekunden vor zeit synchronisieren)
  myRTC.setClockMode(true); //Uhrzeit festlegen (24h --> false / 12h --> true)
        myRTC.setHour(8); //Stunde
        myRTC.setMinute(40); //Minute
        myRTC.setSecond(0); //Sekunde
}

//Void Loop
void loop() {
  
   if ((m>=38 && m<=42)&&(m>=48 && m<=57)){
    h = h +1
   }
    
 h = myRTC.getHour(h12Flag, pmFlag), DEC; //Stunden für Variblae "h" festlegen
 m = myRTC.getMinute(), DEC; //Minuten für Variblae "m" festlegen
 s = myRTC.getSecond(), DEC; //Sekunden für Variblae "s" festlegen

//Ausgabe der Uhrzeit auf dem Seriellen Monitor
Serial.print("Stunde: "); 
Serial.println(h);
Serial.print("Minute: ");
Serial.println(m);
Serial.print("Sekunde: ");
Serial.println(s);
Serial.println(" ");
  delay(1000);

(hier nach kommt natürlich noch was aber dies ist nicht relevant da es sich nur um die anzeige hadelt)

ich möchte einfach nur eine stunde bei den besagten Minuten hinzufügen, aber es ändert sich rein gar nichts egal wie ich es versuche. Ich habe auch schon versucht:
h = myRTC.getHour(h12Flag, pmFlag), DEC +1;
Aber dabei zeigt die uhr dann immer 11 Uhr an anstatt die gewünschte Uhrzeit oder die die es sein sollte.

Wäre echt supi wenn mir irgendjemand dabei helfen könnte weil ich verzweifel daran so langsam.
Die Bibilothek ist die: DS1307RTC von Paul Stoffegen

Vielen dank schon mal im Voraus

Dann räum mal Deine includes auf.

Naja...

Die Bedingung wird nie wahr.
Wenn m zwischenn 38 und 42 ist, kann m nicht zwischen 48 und 57 sein.

Also danke schonmal, ich hab das ganze jetzt geändert in:

   if ((m>=38 && m<=42)||(m>=48 && m<=57)){
    h = h +1;
   }

leider passiert immer noch nichts

Deine Abfolge ist falsch.

Du setzt zuerst h++, holst aber danach erst h aus der RTC.
Du musst die beiden Funktionsblöcke gegeneinander tauschen, damit das h++ auch seine Wirkung entfalten kann.

Also ich habs jetzt zum laufen gebracht, danke auf jeden fall.

Ich glaub bloß das mein Arduino grad durchgebrannt is oder nen kurzen hatte da nix mehr funktioniert seit dem ich ihn angeschlossen habe an eine andere stromquelle (ich glaub aber das ich mich statisch am teppich geladen habe),
weißt du zufällig was es bedeutet wenn die Tx und die L led durchgehend leuchten?

auf jeden fall danke schon mal.

Wenn TX und L bei einem UNO dauerhaft leuchten, ist die Wahrscheinlichkeit sehr hoch, das der 328 hinüber ist.
Wenn Du den am USB-Port ansteckst, wird der da noch erkannt?

Da hängt vom UNO ab. Ein orginal-Arduino UNO hat die RX-TX LED am ATmega16U2 und die L LED am Pin 13 des ATmega328. https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf

L-LED Wenn man ausschließen kann, daß
Pin 13 als Eingang defineirt, also auch zB nachdem Einschalten.

  • etwas am Pin 13 hängt, das ein HIGH Signal einspeist
  • der interne Pullupwiderstand aktiviert (INPUT_PULLUP oder pin HIGH gesetzt) ist und kein Signal von draußen kommt
  • Pin 13 Als Ausgang und HIGH gesetzt.

TX LED:
Sketch sendet dauernd Daten

Bei einem Nachbau mit HC340 ist das anders. Arduino Uno R3 schematic CH340
Da sind die TX und RX Pins direkt mit Vorwiderständen von D0 bzw D1 auf 5V geschaltet.
In diesem Fall genügt daß pin D0 LOW ausgegeben wird oder Du das Pin durch eine exrerne Beschaltung auf LOW ziehst.
Für L glit das bereits gesagte.

Wie Du siehst kann man nicht generell sagen daß was hinüber ist.

Wenn Du alle Beschaltung weggibst und den Blink Sketch hinauflädts, dann muß nur L im 1 Sekundentakt blinken.
PWR LED sollte auch leuchten.

Grüße Uwe

Danke Uwe, ich hab das mit dem blinken jetzt getestet und die L led leuchtet in einem 1 sekündigem abstand wie gewolt.
Das Arduino ist ein arduino Mega und nicht orginal sondern von elegoo.

Ich habe das ganze im Code jetzt so gelöst:

//Bibilothek einbinden
#include <DS3231.h> 
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>

bool century = false;
bool h12Flag;
bool pmFlag;
DS3231 myRTC;

int h; //Variable Stunde
int m; //Variable Minute
int s; //Variable Sekunde
int u=0; //Variable "Uhr"
int v=0; //Variable Stunde korrigieren
int f=0; //Variable Stunde korrigieren

//Void Setup
void setup() { 
Serial.begin(9600); //Verbindeung mit Seriellem Monitor
  Wire.begin(); //Verbindung mit dem Zeitzähler

  //Uhrzeit Einstellen (6 Sekunden vor zeit synchronisieren)
  myRTC.setClockMode(true); //Uhrzeit festlegen (24h --> false / 12h --> true)
        myRTC.setHour(5); //Stunde
        myRTC.setMinute(12); //Minute
        myRTC.setSecond(0); //Sekunde


 h = myRTC.getHour(h12Flag, pmFlag), DEC; //Stunden für Variblae "h" festlegen
 m = myRTC.getMinute(), DEC; //Minuten für Variblae "m" festlegen
 s = myRTC.getSecond(), DEC; //Sekunden für Variblae "s" festlegen

}

//Void Loop
void loop() {

//"Vor" Stunde Korrigieren
if ((h == myRTC.getHour(h12Flag, pmFlag), DEC)&& (v==0)){
   if ((m>=38 && m<=42)||(m>=43 && m<=57)){
       h = h +1;
       v = 1;  
   }else  if (m>=23 && m<=38){
       h = h +1;
       v = 1;   
        
//Uhrzeit auf 1 uhr zurück setzten
   }else if((h==0) && (f==0)||(h==12) && (f==0)){
      h = 12;
      f = 1;
 }
}


//Ausgabe der Uhrzeit auf dem Seriellen Monitor
Serial.print("Stunde: "); 
Serial.println(h);
Serial.print("Minute: ");
Serial.println(m);
Serial.print("Sekunde: ");
Serial.println(s);
Serial.println(" ");
  delay(1000);

es hat fehler frei funktioniert bis zu dem zeitpunkt als ich das ganze in eine Steckdose mit einem 5 Watt netzteil eingesteckt habe.
Deswegen bin ich von einem Defekt ausgegangen.

Ich habe nichts geändert außer dass was man sehen kann zum unterschied zwischen dem ersten.
Aufeinmal hat aber meine Uhr nicht mehr weiter gezählt, dass heißt das sich die eingestellte Uhrzeit nicht mehr geändert hat. Weder als aussgabe auf dem Seriellen Monitor noch auf der Uhr.
Ich habe leider keine Ahnung woran es auf einmal liegen soll, da ich die RTC ausgewechselt habe durch eine andere und danach immer noch nicht funktioniert hat also zustand hat sich nicht verändert. Es sollte also eig nicht an dem RTC modul liegen

Was für RTC wird benutzt?
Zwei Lib's für eine RTC ist Unsinn.
Stell mal die IDE so ein

Danach noch mall kompilieren und schauen was für Fehler werden angezeigt

Hab ich schon in #2 versucht. Nu ist das Teil eh kaputt.... :wink:

Na ja dann habe sehr viele Buchstaben um sonst verbraten :wink:
Irgend wann gehen die mir aus :joy:

Hab das ganze jetzt geändert, danke fony für das Foto.

@my_xy_projekt , sorry aber ich konnte mit deiner Beschreibung nichts anfangen, da ich komplett neu auf dem gebiet bin dies mein erstes Projekt ist was ich nicht in der schule gemacht habe und deswegen auch keine Hilfe hatte außer hier.

Ich bin 15 und versuche mein bestes um eine Uhr zu bauen.
Trotzdem danke für deine Hilfe.

Ich versuche eure tipps zu verfolgen aber wie schon gesagt bin relativ neu auf dem gebiet deswegen sind Fotos oder genauere erklärungen Hilfreich.
Da ihr dass ja nicht riechen könnt passt des ganze aber ich versuch´s zu verstehen.

Welchen Sinn hat eine Uhr, die bei bestimmten Minuten 1 Stunde mehr anzeigt?

Gruß Tommy

Bitte benutze 5V Netzteile. Alle anderen können was kaputtmachen.

Grüße Uwe

Schade. Aber dann frag doch. Dich frisst keiner.

Umgekehrt würde ich es sinvoller sehen. Zu bestimmten Stunden die Minuten vorstellen. So fängt die Pause früher an. :wink:

Grüße Uwe

Das ganze ist wie ich schon sagte eine Wörter weshalb sie so etwsa anzeigt wie: "Es ist halb 8" da die stunde 7 beträgt und die minute 30 muss die uhr eine stunde weiter anzeigen damit man nicht bei 7:30 Uhr stehen hat: "Es ist halb Sieben" :slight_smile:

Das ganze ist ein bissle nen Kabelsalat aber so soll das ganze aussehen bzw das is meine Uhr. Bei meiner nächsten Uhr werde ich Neon Led´s benutzen aber ich bin ganz stolz auf meinen ersten versuch. (Das Bild ist von den Paar minnuten wo die Uhr funktioniert hat)

:wink: Sowas hab ich mir schon gedacht... Ich bin Ostkind.
Dein Ansatz ist voll ok.
weitermachen.

Ich geb mein bestes, ich versuch jetzt noch das letzte problem zu beheben in dem ich ein neues arduino benutze und ein 5 v netzteil. Muss das wie viel mA muss das netzteil haben bzw ist das relevant?

Ok, verstanden. Danke. Diese Zeitansage gilt übrigens auch in Franken.

Gruß Tommy