Hallo
Mein Name ist Ronny und dies ist der erste Beitrag in diesem hilfreichen Forum ![]()
Durch dieses bin ich auf den Tip mit der switch case Funktion von michael_x gestoßen.
Darauf hin gleich diese einfache Ausgabe der Zeit und des Datums integriert in der Hoffnung abwechselnd aller 5 Sekunden durch die Schritte zu schalten. Jedoch wird nur aller 5 Sekunden ein Digit von 6 vorhanden angezeigt. Der Serial.print Kommentar funktioniert problemlos alleinig im seriellen Monitor. Wo liegt hier der Hund begraben?
MfG Ronny
#include "SevSeg.h"
#include <DS3231.h>
DS3231 rtc(SDA, SCL); //A4,A5
Time t;
SevSeg Display;
int Schritt;
unsigned long Dauer;
unsigned long previousMillis;
unsigned long datum = 0;
unsigned long zeit = 0;
void setup() {
//Serial.begin(9600);
rtc.begin();
byte numDigits = 6;
byte digitPins[] = {5, 4, 3, 2, 0, 1}; // [8 8] [8 8] [8 8]
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // A,B,C,D,E,F,G,Dp
bool resistorsOnSegments = true; // false = resistors are on digit pins
byte hardwareConfig = COMMON_CATHODE;
bool updateWithDelays = false; // Default 'false' is Recommended
bool leadingZeros = true; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected. Then, you only need to specify 7 segmentPins[]
Display.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint);
Display.setBrightness(100);
}
void loop ()
{
unsigned long currentMillis = millis();
if ( currentMillis - previousMillis > Dauer )
{
Schritt++; // nächster Schritt
switch (Schritt)
{
case 1:
//Serial.println("modus 1");
t = rtc.getTime();
zeit = (t.hour * 100 + t.min) * 100L + t.sec;
Display.setNumber(zeit);
Display.refreshDisplay();
Dauer = 5000; // sec warten
break;
case 2:
//Serial.println("modus 2");
t = rtc.getTime();
datum = (((t.date * 100 + t.mon) * 100L) + t.year) - 2000;
Display.setNumber(datum);
Display.refreshDisplay();
Dauer = 5000; // sec warten
break;
// .... Beliebig weitere Schritte definieren
default:
Schritt = 0;
Dauer = 1; // Schrittfolge wieder von vorn
}
previousMillis = currentMillis; // "Delay" neu starten
}
// hier evtl. Tasterabfragen, um die Schrittfolge zu ändern oder Wartezeiten abzubrechen o.ä.
}