Go Down

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

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

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

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