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.