Go Down

Topic: formel gesucht (linearer Wert zwischen zwei anderen) (Read 2038 times) previous topic - next topic

derHerrKohler

Ich habe hier das Projekt kurz vorgestellt, auch der aktuelle Code findet sich hier: http://www.stefankohler.de/de/film/selbstbau/camtimer/

Mein Wertebereich liegt immer im positiven Bereich bis ca. 30.000.000 (8 Stunden in ms) für now , runStart und tDuration. Die Belichtungszeiten (tStart und tEnd) liegen zwischen 5 und 600.000 (ca 10 Minuten). Die Genauigkeit ist hier nicht ausschlaggebend, ob das jetzt 3 ms mehr oder weniger sind, kann ich vernachlässigen denke ich.

Udo Klein

Bei so großen Werten würde ich dann statt

(exp(t)-exp(t0))/(exp(t1)-(exp(t0)) = (s-s0)/(s1-s0)

oder

s = (s1-s0)/(exp(t1)-exp(t0)) * (exp(t)-exp(t0)) + s0

eher sowas wie

exp(t/(t1-t0))-exp(t0/(t1-t0)) = (s-s0)/(s1-s0)

oder

s = (s1-s0) * (exp(t/(t1-t0))-exp(t0/(t1-t0))) + s0

nehmen.

Das ist auch exponentiell alle Zwischenergebnisse sind in den Bereichen die mit dem Arduino ohne weitere Probleme zu behandeln sein sollten.
Check out my experiments http://blog.blinkenlight.net

derHerrKohler

Ich muss hier aber dennoch umstellen auf float's, richtig?

derHerrKohler

Ich habe das jetzt mit temporären floats gelöst. hier der Code, vielen Dank für Eure hilfe!
Code: [Select]
       float stepsGesamt = (tDuration*60000) / (tInterval*1000);
       float stepNow = (now - runStart) / (tInterval * 1000);
       float v = stepNow / stepsGesamt;
       v = v * v;
       float X = (tEnd * v) + (tStart * (1 - v));
       belichtungszeit = X;

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy