Door delay loopt klok achter

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 256
Geregistreerd: 05 Apr 2018, 00:44
Woonplaats: ALKMAAR

Door delay loopt klok achter

Berichtdoor Gompy » 23 Mei 2018, 16:04

Ik heb 1 delay van 0 tot 2 sec in mijn sketch staan welke ingegeven wordt door een potmeter op A6.
In de loop () wacht het programma de tijd af welke met de potmeter op A6 wordt ingegeven tot de volgende loop ().
Het probleem is echter dat na een uur mijn klok (DS3231) al ~1 minuut achter loop als ik 2 sec instel.

void loop ()
int delaytime = analogRead(A7)*2;
----
rest van sketch
----
delay (delaytime); // eerste en enige delay

void (DS3231)
sketch van klok enz

Is het mogelijk om het zo te maken dat de delay geen invloed heeft op de tijd van de DS3231 ?

Met onderstaande code heb ik de afgelopen dagen geëxperimenteerd, maar ik kom er niet uit om dit in mijn sketch te weven.

Code: Alles selecteren
int prev_value = 0;
int value = 0;
unsigned long prev_read_time = 0;

void setup() {
    prev_read_time = millis();
    value = analogRead(A7)*2;
}

void loop() {
    if (millis() - prev_read_time > 5) {
        prev_read_time = millis();
        prev_value = value;
        value = analogRead(A7)*2;
        if (prev_value != value) {
            // value changed
        }
    }
}


Mvg, Rob

Advertisement

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Door delay loopt klok achter

Berichtdoor baco1978 » 23 Mei 2018, 23:01

is het een typfout?

je zegt dat je potmeter op A6 zit, waarom lees je deze dan uit op A7?
Met vriendelijke groet Arjan

Gebruikers-avatar
Berichten: 256
Geregistreerd: 05 Apr 2018, 00:44
Woonplaats: ALKMAAR

Re: Door delay loopt klok achter

Berichtdoor Gompy » 23 Mei 2018, 23:12

Excuus, potmeter zit A7.
Dit is de stabilisatie/reken tijd voor de LDR's zodat de solartracker niet nerveus gaat staat jitteren.

Mvg, Rob

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Door delay loopt klok achter

Berichtdoor zuid » 24 Mei 2018, 07:17

Volgens mij wil je ongeveer dit:
Code: Alles selecteren
void setup() {
    prev_read_time = millis();
    delaytime = analogRead(A7)*2;
}

void loop(){
if(  prev_read_time + delaytime  > millis())
   restvandesketch();
}   
//  else >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> doe even niets


restvandesketch(){   
   prev_read_time = millis();
    delaytime = analogRead(A7)*2;
   
   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>     rest van de sketch
   
}




of anders:

Code: Alles selecteren
void setup() {
    prev_read_time = millis();
    delaytime = analogRead(A7)*2;
}

void loop(){
// rest van de sketch
wachtEven();
}

wachtEven(){
while (millis < prev_read_time + delaytime){
   //doe even niets
       }
prev_read_time = millis();
delaytime = analogRead(A7)*2;

}

Gebruikers-avatar
Berichten: 256
Geregistreerd: 05 Apr 2018, 00:44
Woonplaats: ALKMAAR

Re: Door delay loopt klok achter

Berichtdoor Gompy » 29 Mei 2018, 16:50

Probleem opgelost....een brakken DS3231RTC.

Mvg, Rob

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten