Pages: 1 [2]   Go Down
Author Topic: formel gesucht (linearer Wert zwischen zwei anderen)  (Read 1453 times)
0 Members and 1 Guest are viewing this topic.
Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3481
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Check out my experiments http://blog.blinkenlight.net

Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Traunstein, Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe das jetzt mit temporären floats gelöst. hier der Code, vielen Dank für Eure hilfe!
Code:
       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;
Logged

Pages: 1 [2]   Go Up
Jump to: