Guten Tag,
das Problem steht in der Themabeschreibung.
Ich nutze einen Mega 2560 R3 und habe eine Balkonbewässerung damit realisiert. Nun möchte ich über einen tft 3,5" die Zeit anzeigen lassen, was auch gut funktioniert. Wenn ich aber den Arduino vom Stromnetz trenne oder ihn einfach resette, wird das Datum und die Zeit angezeigt, welches beim ersten Hochladen des Sketches eingelesen wurde. Danach zählt er die Uhrzeit von da aus weiter. Das passiert auch ohne Batterie im RTC.
Das ist der vereinfachte Sketch.
#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <Arduino.h>
#include <Wire.h>
#include "RTClib.h"
RTC_Millis rtc;
#include <Fonts/FreeSans9pt7b.h>
#define BLACK 0x0000
#define GREEN 0x07E0
void setup() {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(9600);
uint16_t ID = tft.readID();
tft.begin(ID);
tft.setRotation(1);
}
void loop() {
tft.fillScreen(BLACK);
tft.setTextColor(GREEN, BLACK);
tft.setCursor(20, 80);
tft.setTextSize(2);
tft.print(" Heute ist der ");
Datum();
tft.setCursor(20, 120);
tft.print(" Es ist jetzt: ");
Uhrzeit();
delay(1000);
}
void Datum() {
DateTime now = rtc.now();
tft.print (now.day(), DEC);
tft.print (".");
tft.print (now.month(), DEC);
tft.print (".");
tft.print (now.year(), DEC);
}
void Uhrzeit() {
DateTime now = rtc.now();
tft.print (" ");
tft.print (now.hour(), DEC);
tft.print (":");
tft.print (now.minute(), DEC);
tft.print (":");
tft.print (now.second(), DEC);
}
Wie behält der RTC die aktuelle Zeit bei Spannungsausfall?
Noch ne andere Frage: Sollte die rote LED eigentlich auch leuchten, wenn nur die Batterie den RTC mit Spannung versorgt?
Danke schon mal fürs Lesen.
Gruß
Uwe.
Nach dem ersten hochladen kommentiere diese Zeile aus:
Lade danach den Sketch erneut hoch
gut ist.
fony
May 17, 2022, 6:32pm
3
Zeit einmal einstellen und die Zeile auskommentieren
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
fony
May 17, 2022, 6:33pm
4
Hei
Du hast wahrscheinlich 20 Finger
Grüße
fony:
Hei
Ej komm, ich hab Dir 8 Minuten Wartezeit gelassen
Hallo,
danke für die schnellen Antworten. habe das so getan. Jetzt zeigt das Display 6.2.2106. Die Zeit stimmt auch nicht mehr. Hat also nicht funktioniert.
Dann ist was faul.
Darüber hinaus ist Dein Code nicht schick.
Der Code:
#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <Arduino.h>
#include <Wire.h>
#include "RTClib.h"
RTC_Millis rtc;
#include <Fonts/FreeSans9pt7b.h>
#define BLACK 0x0000
#define GREEN 0x07E0
void setup()
{
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(9600);
uint16_t ID = tft.readID();
tft.begin(ID);
tft.setRotation(1);
}
void loop()
{
DateTime now = rtc.now();
tft.fillScreen(BLACK);
tft.setTextColor(GREEN, BLACK);
tft.setCursor(20, 80);
tft.setTextSize(2);
Datum();
tft.setCursor(20, 120);
Uhrzeit();
delay(1000);
}
void Datum()
{
tft.print(F(" Heute ist der "));
tft.print (now.day(), DEC);
tft.print (".");
tft.print (now.month(), DEC);
tft.print (".");
tft.print (now.year(), DEC);
}
void Uhrzeit()
{
tft.print(F(" Es ist jetzt: "));
tft.print (" ");
tft.print (now.hour(), DEC);
tft.print (":");
tft.print (now.minute(), DEC);
tft.print (":");
tft.print (now.second(), DEC);
}
Einmal auf das Board spielen.
Die Uhr dürfte dann einigermassen stimmen.
Dann den Code aufspielen:
#include <Adafruit_GFX.h>
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include <Arduino.h>
#include <Wire.h>
#include "RTClib.h"
RTC_Millis rtc;
#include <Fonts/FreeSans9pt7b.h>
#define BLACK 0x0000
#define GREEN 0x07E0
void setup()
{
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(9600);
uint16_t ID = tft.readID();
tft.begin(ID);
tft.setRotation(1);
}
void loop()
{
DateTime now = rtc.now();
tft.fillScreen(BLACK);
tft.setTextColor(GREEN, BLACK);
tft.setCursor(20, 80);
tft.setTextSize(2);
Datum();
tft.setCursor(20, 120);
Uhrzeit();
delay(1000);
}
void Datum()
{
tft.print(F(" Heute ist der "));
tft.print (now.day(), DEC);
tft.print (".");
tft.print (now.month(), DEC);
tft.print (".");
tft.print (now.year(), DEC);
}
void Uhrzeit()
{
tft.print(F(" Es ist jetzt: "));
tft.print (" ");
tft.print (now.hour(), DEC);
tft.print (":");
tft.print (now.minute(), DEC);
tft.print (":");
tft.print (now.second(), DEC);
}
Weicht Die Uhr jetzt massiv ab, wenn Du den Saft weg nimmst, ist die Batterie vermutlich leer.
Also erst tauschen und dann weitermachen.
fony
May 17, 2022, 7:28pm
8
Die Batterie must aber in der RTC sein sonst verliert er die zeit.
fony
May 17, 2022, 7:55pm
10
Nein, die leuchtet nur wen + und GND anliegt = wird über Mega versorgt
So.
Vielen Dank an alle für eure Antworten.
fony:
versuch wen Du 3231 hast
RTC_DS3231 rtc;
hat funktioniert!
Hatte jetzt ne Weile keine Zeit, habe das Projekt dieser Tage wieder rausgekramt, und da fiel mir auch das Problem wieder vor die Füße.
Nochmal vielen Dank!
Beste Grüße
Uwe.
ist doch selbstverständlich. Schließlich habt ihr mir ja geholfen. Ich hab zu danken
system
Closed
December 8, 2022, 6:00pm
14
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.