[gelöst] Wie warten, bis Kamera Bild fertig aufgenommen hat?

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Wie warten, bis Kamera Bild fertig aufgenommen hat?

Beitragvon vklaffehn » 16.10.2008, 18:04

Moin!

Ich bastel an einem automatischen Panoramakopf, funktioniert auch alles soweit, ich bin allerdings gerade am Optimieren für meine S3is mit CHDK uBasic script drauf. Ich habe da jetzt ein Problem : ich möchte möglichst keine Zeit verschenken und hätte daher gern ein Feedback der Kamera, wann diese fertig mit knipsen ist, so daß ich gefahrlos die nächste Position anfahren kann, dies mache ich über die LED an der Vorderseite. Allerdings bekomme ich es nicht hin, festzustellen, wann die Kamera wirklich fertig ist. Bisher gelingt es mir nur, die LED anzulassen, bis fokussieren etc. fertig ist, aber dann geht die LED aus und die Kamera macht DANN ein Foto....
Hier mal mein Code
Code: Alles auswählen
@title simple test

:test
set_zoom_speed 100
do
a=get_usb_power
until a>0

if a<14 and b=0 then
set_led 10 1
print "take photo"
shoot
do
until get_shooting=0
rem gosub "led_stop"
set_led 10 0
endif

Ich habe shon Varianten mit get_shooting und get_prop 205 ausprobiert, aber die LED geht immer direkt vor der Aufnahme aus, ich kann auch nicht eine bestimmte Zeit warten, da ich auch Langzeitbelichtungen machen will. Hoffentlich hat jemand einen Tipp für mich!!

MfG Volker

/edit: irgendwie scheint die Suche nicht richtig zu funktionieren, meine Suche nach 'get_shooting' und 'get_prop 205' bringt einen Fehler....
vklaffehn
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 16.10.2008, 17:52

Beitragvon gehtnix » 16.10.2008, 18:45

moin,

mal so auf die Schnelle eine Idee wie man das möglicherweise erfassen könnte.

shoot_half , damit hast Du die Blende und Zeiten ermittelt
get_ev , damit liest Du jetzt die Zeit aus. Dann
shoot_full , das Foto wird gemacht. Danach setzt Du ein
sleep , mit der Belichtungszeit und noch ein paar 1/100 Sek. dazu. Dann erst die LED-Anzeige
set_led 10 0

Das mußt Du mal ausprobieren. Die Kernfrage ist doch, wenn Du jetzt mit z.B. 5 Sekunden belichtest, sollte die LED nach 5 Sekunden erst aufleuchten. Das könnte vielleicht mit dem sleep abgefangen werden.

Wie gesagt mein Gedanke dazu, habe ich nicht ausprobiert.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon vklaffehn » 16.10.2008, 19:02

Moin!
Jau, das klingt nach einer guten Idee, das Konzept ist : Kameraposition anfahren, per USB Signal senden, LED an, fokusieren etc., Foto machen, speichern, LED aus, nächste Position anfahren usw. . Alternativ würde ich beim Start die LED für 10ms anschalten und am Ende nochmal für 20ms, um eine unerwünschte Beleuchtung durch die LED zu vehindern. Als was bekommt man denn die Werte von get_ev zurück? Sind das ms oder wie muß ich mir das vorstellen?

Danke schonmal!

MfG
Volker

/edit: OK, Kommando zurück, es funktioniert! Ich dachte zwar, das hätte ich so vorhin schon vergeblich ausprobiert, aber jetzt geht's! Folgender Code tut, was ich will :

Code: Alles auswählen
@title simple test

:test
set_zoom_speed 100
do
a=get_usb_power
until a>0

if a<14 and b=0 then
gosub "led_start"
rem set_led 10 1
print "take photo"
rem press "shoot_half"
rem d=get_ev
shoot
rem sleep d
gosub "led_stop"
endif

:led_start
set_led 10 1
sleep 100
set_led 10 0
return

:led_stop
set_led 10 1
sleep 200
set_led 10 0
return

end


Trotzdem Danke!!
vklaffehn
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 4
Registriert: 16.10.2008, 17:52


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast