Soo...
Ich hab mal was gebaut - ohne zu wissen, ob das geht.
Vollkommen ungetestet; Auch syntaktisch vielleicht falsch, aber es soll ein Ansatz sein.
Neue Funktionen:
void setMinute()
{
tmElements_t tm;
time_t t;
if (tasteAuf)
{
tm.Minute = Minute++;
}
if (tasteAb)
{
tm.Minute = Minute--;
}
tm.Year = 2021; // Das muss noch ausgelesen werden...
tm.Month = Monat;
tm.Day = Tag;
tm.Hour = Stunde;
tm.Second = Sekunde;
t = makeTime(tm);
RTC.set(t);
setTime(t);
}
bool tasteAuf()
{
constexpr unsigned bouncetime = 50;
unsigned long lastmillis = 0;
static bool isRead = false;
bool isSet = false;
if (digitalRead(!tasterAuf)
{
if (!isRead)
{
lastmillis = millis();
isRead = true;
isSet = true;
}
}
else if (isRead)
{
if (millis() - lastmillis > bouncetime)
{
isRead = false;
}
}
return isSet;
}
bool tasteAb()
{
constexpr unsigned bouncetime = 50;
unsigned long lastmillis = 0;
static bool isRead = false;
bool isSet = false;
if (digitalRead(!tasterAb))
{
if (!isRead)
{
lastmillis = millis();
isRead = true;
isSet = true;
}
}
else if (isRead)
{
if (millis() - lastmillis > bouncetime)
{
isRead = false;
}
}
return isSet;
}
Im loop() nur eine neuen Zeile am Ende einfügen:
setMinute();
Wenn mich nicht alles täuscht, kommt es zum Überlauf - Wenn Du also bei 59 bist, geht mit dem nächsten Tastendruck zwar 00 - aber dei Stunde zählt hoch....
Mach was draus. Bau Dir Serielle Ausgaben ein.