Azzerare la funzione millis()

leandro78:
no no, è chiarissimo quello che hai detto, ma nel mio caso a denominatore non ho un intero ma un double per come l'ho definito io...infatti la prima versione del programma funziona..è nella seconda che c'è qualche problema che non riesco ad individuare...forse è la funzione delayMilliseconds a dare qualche problema non capisco...eppure l'ho ottenuta con delle semplici conversioni direttamente dalla prima, non riesco a capire dove sta il problema...

ahh si hai ragione... ho fatto confusione.

ma perchè il SALI aumenta il ritardo? Non dovrebbe andare in accellerazione e quindi diminuire i tempi morti?

altra cosa... vedo currentMillis ma tu stai lavorando con i micros.... non ti conviene mettere i micros anche in questo test?
...comunque vedo che tieni alti gli intervalli a 100 millisecondi quindi non dovrebbe essere questo che ti infastidisce.... può succedere che il tuo upDelayTime superi in qualche modo i 100.000 microsecondi e pertanto ti ritrovi ad ogni step già a dover aggiornare?

if (currentMillis - previousMillis > interval) {
      previousMillis = currentMillis;  
      upDelayTime += ritardo;
    }
    digitalWrite(motorPin1, HIGH);  
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH);  
    digitalWrite(motorPin4, LOW);  
    delayMicroseconds(upDelayTime);

...un'altra cosa io non capisco come ti funziona la funzione di discesa... per me la tua procedura dovrebbe tenere una velocità costante con delay 2 e poi improvvisamente bloccarsi quando hai superato i 150(?) cicli.