Hallo an alle,
ich bin noch sehr neu im Mikrocontroller-Universum und habe Probleme bei einem meiner Projekte.
Ich möchte auf einem 7-Segment-Display die Tage, die ich mit meiner Liebsten schon verbracht habe, abbilden. Der Code zeigt beim kompilieren keine Fehler, auf dem Display taucht aber nichts auf, lediglich die standartmäßige 8888 leuchtet. Ich finde meinen Fehler einfach nicht.
Hier mein Schema
Hier der Code, da ich noch keine Dateien hochladen kann:
#include <RTClib.h>
#include <SevSeg.h>
#define S7SEG_PIN_DIG1 7
#define S7SEG_PIN_DIG2 8
#define S7SEG_PIN_DIG3 9
#define S7SEG_PIN_DIG4 10
#define S7SEG_PIN_A 2
#define S7SEG_PIN_B 3
#define S7SEG_PIN_C 4
#define S7SEG_PIN_D 5
#define S7SEG_PIN_E 11
#define S7SEG_PIN_F 12
#define S7SEG_PIN_G 13
#define S7SEG_PIN_DECIMAL 6
int s7segCounter = 0;
unsigned long s7segTimer = millis();
byte s7segDigitPins[] = { S7SEG_PIN_DIG1, S7SEG_PIN_DIG2, S7SEG_PIN_DIG3, S7SEG_PIN_DIG4 };
byte s7segSegmentPins[] = { S7SEG_PIN_A, S7SEG_PIN_B, S7SEG_PIN_C, S7SEG_PIN_D, S7SEG_PIN_E, S7SEG_PIN_F ,S7SEG_PIN_G, S7SEG_PIN_DECIMAL };
SevSeg s7seg(s7segDigitPins, s7segSegmentPins);
RTC_DS3231 rtc;
DateTime dtBegin (2017, 11, 11, 0, 0, 0);
TimeSpan tsPassed;
void showInfo(const DateTime& dt) {
Serial.print("NOW:");
Serial.print(dt.year(), DEC);
Serial.print('/');
Serial.print(dt.month(), DEC);
Serial.print('/');
Serial.print(dt.day(), DEC);
Serial.print(' ');
Serial.print(dt.hour(), DEC);
Serial.print(':');
Serial.print(dt.minute(), DEC);
Serial.print(':');
Serial.print(dt.second(), DEC);
Serial.print("\tPASSED:");
Serial.print(tsPassed.days(), DEC);
Serial.print(' ');
Serial.print(tsPassed.hours(), DEC);
Serial.print(':');
Serial.print(tsPassed.minutes(), DEC);
Serial.print(':');
Serial.print(tsPassed.seconds(), DEC);
Serial.println("");
}
void delayWithUpdate(uint32_t parDelay){
uint32_t started=millis();
while (millis()< started+parDelay){
s7seg.refreshDisplay();
}
}
void setup(){
Serial.begin(9600);
Serial.println(__TIME__);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
delay(1000);
rtc.adjust(DateTime(2017, 11, 11, 0, 0, 0));
s7seg.setBrightness(100);
s7seg.setNumber(8888, 1);
delayWithUpdate(1000);
s7seg.setNumber(8888, 1);
delayWithUpdate(1000);
}
void loop(){
s7seg.refreshDisplay();
DateTime now = rtc.now();
tsPassed = now-dtBegin;
static uint32_t nextReportMillis=0;
static uint16_t prevDaysPassed=0;
if (tsPassed.days() != prevDaysPassed){
prevDaysPassed=tsPassed.days();
s7seg.setNumber(prevDaysPassed, 0);
}
s7seg.refreshDisplay();
if (millis()>nextReportMillis){
showInfo(now);
nextReportMillis=millis()+5000;
}
}'