Go Down

Topic: RTC statt delay (Read 1 time) previous topic - next topic

Cetax

Hallo allerseits,
ich bin auf der suche nach einem Codeschnippsel, der statt delay eine RTC verwendet.
Konkret, ich habe ein Projekt in dem eine RTC verbaut ist.
Immer zu einer bestimmten Uhrzeit wird ein Code ausgeführt, was super klappt.

Nun möchte ich noch einen kleinen Code alle 30 min ausführen lassen und dabei happerts... :smiley-red:
Ich weiss nicht wie ich statt dem delay(1800000); die RTC benutzen kann ?

Kann mir jemand helfen ? Hoffe ihr versteht was ich meine...
*greatz*

 CeTax

www dot blinkmann dot de

sth77

Klingt für mich noch nichteinmal nach der Notwendigkeit, eine RTC zu verwenden. Delays() zu vermeiden gehört hier ja schon zum guten Ton, da wird dann oft das mit der IDE mitgelieferte Beispiel blinkWithoutDelay angeführt. ;)
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Cetax

Hallo sth77,
ok, habe ich schon mal was von gehört... Schau ich mir mal an.
Aber gibt es eine möglichkeit das mit einem RTC zu machen ?
*greatz*

 CeTax

www dot blinkmann dot de

J3RE

Wenn du eine RTC hast, hast du sicher auch eine Variable für die Minuten oder?
Wenn diese Variable 0 oder 30, ist soll dein Code ausgeführt werden.

Code: [Select]
if((min == 0) | (min == 30)){
  // dein Code
}


Grüße,
J3RE

mkl0815

Definiere eine Variable mit der Minute in welcher Dein Code ausgeführt werden soll. (minute = 20)
Hol Dir in loop() einfach von der RTC immer die Minuten und vergleiche den Wert mit der Variablen.
Wenn RTC.minute == gemerket_minute (z.B. Minute 30), dann führe Deinen Code aus und setze die Variable auf den nächsten Minutenwert.
minute = (minute + 30) % 60
Dann vergleichst Du wieder wie oben den aktuellen Wert mit Deiner Variable.

Was passiert bei der Rechnung?

minute = 20
minute = minute + 30 = 50
minute = minute + 30 = 80 <- falscher Minuten Wert.
minute = (minute + 30) % 60 = 20 <- richtiger Minutenwert.

Das klappt übrigens mit beliebigen Abständen zwischen 1 und 60, nicht aber mit Werten größer als eine Stunde.

Mario.

Go Up