Hallo,
Mijn naam is Bertus en ben sinds enkele weken bezig met een automatiseringsprojectje.
Hiervoor wil ik een weektelling laten lopen vanaf het moment dat het programma wordt geladen, onafhankelijk van de tijd, welke zich na een bepaalde periode reset naar beginwaarde.
Ik heb al heel wat afgestruind, maar kom nergens tot een duidelijk antwoord.
Hiervoor heb ik de onderstaande code gebruikt.
Ik heb ook een RTC, maar op deze wijze kan ik eenvoudige de tijd aanpassen en wijzigen voor het testen.
De code bouw ik later om!
unsigned long time;
unsigned long startweeks = 1; // begin met tellen op week 01
unsigned long periode = 4; // Weeknummer waarna gereset dient te worden
// eenvoudige klok instellen
unsigned long starthours = 14;
unsigned long startminutes = 00;
unsigned long startseconds = 00;
unsigned long millis(void);
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long tijd = millis() / 1000; // tijd in seconden
unsigned long week = (tijd / (1 /* 60 * 24 * 7*/)); // weektelling, deze voor het gemak op 1 seconde gezet omdat een 4 weken wachten te lang duurt om te testen ;)
unsigned long ww = (week + startweeks); // Weergave weektelling
unsigned long ss = (tijd + startseconds) % 60; // blijft hetzelfde
unsigned long mm = ((tijd + startseconds) / 60 + startminutes) % 60;
unsigned long hh = ((tijd + startseconds + 60 * startminutes) / 3600 + starthours) % 24;
Serial.print("Week: ");
if (ww < 10)
{
Serial.print("0");
}
Serial.print(ww);
Serial.println();
Serial.print("Tijd: ");
if (hh < 10)
{
Serial.print("0");
}
Serial.print(hh);
Serial.print(":");
if (mm < 10)
{
Serial.print("0");
}
Serial.print(mm);
Serial.print(":");
if (ss < 10)
{
Serial.print("0");
}
Serial.print(ss);
Serial.println("\n");
// reset waarde terug naar begin waarde als aan voorwaarde wordt voldaan
if (millis() > (periode * week))
ww = startweeks;
delay (1000);
}
Weektelling werkt zoals het zou moeten, echter krijg ik de reset naar beginwaarde er niet in!
// reset waarde terug naar begin waarde als aan voorwaarde wordt voldaan
if (millis() > (periode * week))
ww = startweeks;
Kan iemand mij hiermee helpen????