[Lua] Tag und Nacht Zeitraffer

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

Tag und Nacht Zeitraffer

Beitragvon DrMaex » 08.12.2008, 17:34

Hallo, beim Schreiben eines Intervall Scriptes ist mir folgende Frage eingefallen: Wie schaffe ich es im Falle des Abbruchs des Scripts noch eine Schleife auszuführen die das LCD wieder in den ursprünglichen Zustand versetzt?
Szenario:
Intervall- Script wird gestartet, nach x fotos geht LCD aus und irgendwann wieder an z.b. wenn Karte voll. Mitten im Intervall wird die Kamera gebraucht. Script wird abgebrochen aber das Display bleibt aus. Es ist zwar kein großer Umstand die Display-Taste selbst zu drücken aber vielleicht kann man dies schon beim Verlassen des Scripts erledigen? Könnte ja je nach Script nicht nur das LCD sein...

Gruß DrMaex

EDIT: Auf der zweiten Seite gibt es das Script in der aktuellen Version. Als Beispiel findet Ihr ein Nachtzeitraffer auf Seite 5.
Zuletzt geändert von DrMaex am 22.01.2009, 01:52, insgesamt 4-mal geändert.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 08.12.2008, 19:55

Wenn Du das Skript mit dem Auslöser abbrichst, hast Du keine Chance.

Die einzige Möglickeit, die ich sehe, ist, den Befehl exit_alt einzubinden. Es müsste dann eine ständige Abfrage einer bestimmten Taste erfolgen. Wird diese gedrückt, erfolgt eine Unterbrechung wie programmiert mit dem Ausstieg aus dem Alt-Modus. Das hätte noch den Vorteil, das bei erneutem Drücken der Print-Taste das Skript dann wieder weiterläuft.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 09.12.2008, 13:03

kann man den is_key befehl ohne wait_click dierekt in eine endlose schleife einbauen? also so

Code: Alles auswählen
:loop
. . .
. . .
. . .
if is_key "set" then
goto "exit"
endif
goto"loop"
. . .
. . .
. . .
:exit
get_prop 105 l
   if l<>n then
      do
      click "display"
      get_prop 105 l
      until l=n
   endif
exit_alt


wird die Taste bemerkt auch wenn sie irgendwann mitten in der Schleife gedrückt wird?


DrMaex
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 09.12.2008, 13:33

Hast Du es denn schon probiert? :D :shock: :?

wait_click solltest Du schon einbauen. Dabei ist zu beachten: Wertzuweisung 0 bedeutet, dass solange gewartet wird, bis eine Taste gedrückt wird. Andere Werte entsprechen einer Wartezeit in Millisekunden. Ich würde es mal mit einen Wert so zwischen 50 und 100 probieren.

Benutze bitte für die Display-Abfrage den Befehl get_display_mode. Sonst gibt es wieder Probleme mit Digic II und III. Skripte sollen möglichst so angelegt werden, dass sie auf allen Kameras laufen.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 09.12.2008, 14:19

akku war in der Ladestation (hab nur einen), dachte ich frage mal schnell, also mit is_key ohne wait_click ging es nicht aber das problem ist auch erstmal ein anderes:
Beschreibung:
Wollte ein timelapse Script schreiben welches egal zu welcher Tageszeit funktioniert. Als Grundlage sollte diese Formel zum Ausrechnen der Belichtungszeit dienen:
get_bv96 + get_sv96 = get_av96 + get_tv96 --> bv+sv-av=tv aus diesem Thread (muss leider zugeben, dass ich noch keine Zeit hatte alle 20 Seiten durchzulesen, von daher kann der Ansatz auch falsch sein)
Vorgehen: Kamera misst das Licht mit Shoot_half mit get_Xv96 lese ich die Werte aus und Berechne die theoretische Verschlusszeit. Die Kamera will ja nicht unter 1 Sekunde gehen (tv96=0) und genau das will ich umgehen. Wenn also die Kameraverschlusszeit = 1 Sekunde ist, soll die berechnete Zeit eingesetzt werden, das passiert aber nicht, es bleibt bei 1 Sekunde...habe ich mich in den goto's und gosub's verheddert? Oder bin ich komplett auf dem falschen Dampfer?

Code: Alles auswählen

die neue Version gibts weiter unten




DrMaex
Zuletzt geändert von DrMaex am 10.12.2008, 00:14, insgesamt 1-mal geändert.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon msl » 09.12.2008, 14:41

Oh, wenn Du analog dem genannten Thread vorgehen möchtest, lies ihn Dir wirklich durch. Da wird nähmlich noch ein neuer Befehl eingeführt, der das Histogramm für die Einstellungen auswertet.

Und denke daran, jede Zeile Skriptcode vebraucht mind. 10 Millisekunden. Zuzüglich Belichtungszeit und Verarbeitungszeit kannst Du bei kurzen Intervallen Timingprobleme bekommen.

Für komplexe Skripte würde ich Dir Lua empfehlen. Da kannst Du Dich auch nicht mit goto und gosub verhaspeln. :D

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon DrMaex » 09.12.2008, 17:24

So, hab einen Fehler gefunden beim Ausrechnen der Zeit habe ich 0 (null) statt o verwendet. Jetzt Springt das Script auch zum "calcshoot" Label und berechnet die Zeit neu. Werde heute Abend testen und schauen was für Ergebnisse herauskommen und wo Nachholbedarf besteht. Das mit dem Timing stimmt schon aber das nehme ich im Moment in Kauf.
An Lua traue ich mich noch nicht heran, obwohl allein die Tatsache verlockend ist, dass Notepad++ das Syntaxhighlightning von Lua kann. Klar kann man die Sprache auch selbst definieren aber das erfordert auch Einarbeitung....

p.s. das Durchlesen habe ich mir wirklich vorgenommen :-)
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon DrMaex » 09.12.2008, 20:36

also ich finde das Ergebnis durchaus brauchbar, bereits das erste Frame wurde mit 2.5 sek Belichtungszeit aufgenommen

[flv]http://www.drmaex.bplaced.net/Downloads/timelapse.flv[/flv]


wenn einer Tipps für geeignete Intervalle bei der Aufnahme hat, immer her damit, betrifft auch die Bitrate der Videos bzw flv's
Zuletzt geändert von DrMaex am 10.12.2008, 00:16, insgesamt 1-mal geändert.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon C4_87 » 09.12.2008, 21:00

kann es sein das die kamera bei manchen bildern anders fokusiert hat? oder es liegt an den unterschiedlich belichteten bilden...
da wäre es ja gut wenn die belichtungszeit nur pro bild ein wenig erhöt wird bis die angestrebte belichtung erziehlt ist
CHDK-DE_g7i (neuste)

http://zephyrc4.deviantart.com

[irgenwie hab ich ja mit den : ^^] ^^
Benutzeravatar
C4_87
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 249
Bilder: 5
Registriert: 13.06.2008, 12:26
Wohnort: Jetzt in DD

Beitragvon DrMaex » 10.12.2008, 00:13

Ja, leider ist auf vielen Bildern der Fokus unterschiedlich, habe allerdings keine Ahnung wie ich das in den Griff bekomme außer des verzweifelten Versuch mit set_focus...eventuell bringt der mittenfokus statt des AiAF bessere Ergebnisse, muss ich mal testen. Habe leider keinen manuellen focus an der IXUS.

Hier ist übrigens der Quelltext mit dem ich das Video aufgenommen habe, alles default

Code: Alles auswählen
@title Time-lapse
@param t Time to wait
@default t 2
@param d LCD-off after ... pics
@default d 2
@param w Countdown in sec
@default w 3

if t<1 then t=1 endif
if d<1 then d=1 endif
k=1
n=get_display_mode

print"Press set to start/cancel recording"

wait_click
if is_key "set" then
goto "init"
endif

:init
for h=1 to w
let m=w-h+1
print "countdown:", m,"secs"
sleep 940
next h
cls

press "shoot_half"
    do
        x=get_shooting
    until x=1   
   get_focus f
release "shoot_half"

:measure
print "Photo " k 
    set_focus f
press "shoot_half"
    do
        x=get_shooting
    until x=1   
z=get_tv96
if z=0 then
gosub "calcshoot"
else
gosub "normalshoot"
endif
do
        x=get_shooting
    until x<>1
release "shoot_half"
sleep t*1000
if k=d then
   gosub "lcdoff"
endif
k=k+1
j=get_jpg_count
if j=1 then
   gosub "lcdon"
   goto "exit"
endif
wait_click 100
if is_key "set" then
   goto "cancel"
endif
goto "measure"

:normalshoot
set_focus f
click "shoot_full"
    do
        x=get_shooting
    until x=1
return

:calcshoot
o=get_bv96
i=get_sv96
u=get_av96
g=o+i-u
if 0>g & g>-32 then g=0 endif
if -32>g & g>-64 then g=-32 endif
if -64>g & g>-96 then g=-64 endif
if -96>g & g>-128 then g=-96 endif
if -128>g & g>-160 then g=-128 endif
if -160>g & g>-192 then g=-160 endif
if -192>g & g>-224 then g=-192 endif
if -224>g & g>-256 then g=-224 endif
if -256>g & g>-288 then g=-256 endif
if -288>g & g>-320 then g=-288 endif
if -320>g & g>-352 then g=-320 endif
if -352>g & g>-384 then g=-352 endif
if -384>g & g>-416 then g=-384 endif
if -416>g & g>-448 then g=-416 endif
if -448>g & g>-480 then g=-448 endif
if -480>g & g>-512 then g=-480 endif
if -512>g & g>-544 then g=-512 endif
if -544>g & g>-576 then g=-544 endif
if get_propset = 2 then
        set_prop 262 g
    else
        set_prop 69 g
    endif
   set_focus f
        click "shoot_full"
    do
        x=get_shooting
    until x=1
return

:cancel
gosub"lcdon"
exit_alt

:lcdoff
l=get_display_mode
   if l<>2 then
      do
      click "display"
      l=get_display_mode
      until l=2
   endif
return

:lcdon
l=get_display_mode
   if l<>n then
      do
      click "display"
      l=get_display_mode
      until l=n
   endif
return

:exit
end



das mit dem kontrollierten Aussteigen mit wait_click funktioniert noch nicht wirklich....
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon fe50 » 10.12.2008, 00:55

DrMaex hat geschrieben:Ja, leider ist auf vielen Bildern der Fokus unterschiedlich, habe allerdings keine Ahnung wie ich das in den Griff bekomme außer des verzweifelten Versuch mit set_focus...eventuell bringt der mittenfokus statt des AiAF bessere Ergebnisse, muss ich mal testen. Habe leider keinen manuellen focus an der IXUS.

Hi DrMaex,
jede Ixus hat die Funktion Fokus-Speicher AFL, damit kannst Du den Fokus festhalten; meist ist AFL auf der Taste LINKS bei halbgedrücktem Auslöser...

Ohne AiAF und mit AF Rahmengröße auf klein (small; wenn Deine Kameras das einstellen kann) sollte es besser gehen...

Mit CHDK hast Du doch einen 'manuellen Fokus', Du kannst (per Menü, per Tastenkombination oder auch per Scriptbefehl) den Fokus beliebig festlegen...

CHDK-Handbuch#Ersetze_Motiv-Distanz, Tastaturkürzel (MF aktivieren mit Taste HOCH im <Alt> Modus)
"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1105
Registriert: 25.04.2008, 15:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon DrMaex » 10.12.2008, 13:35

fe50 hat geschrieben:Hi DrMaex,
jede Ixus hat die Funktion Fokus-Speicher AFL, damit kannst Du den Fokus festhalten; meist ist AFL auf der Taste LINKS bei halbgedrücktem Auslöser...

Ohne AiAF und mit AF Rahmengröße auf klein (small; wenn Deine Kameras das einstellen kann) sollte es besser gehen...

Mit CHDK hast Du doch einen 'manuellen Fokus', Du kannst (per Menü, per Tastenkombination oder auch per Scriptbefehl) den Fokus beliebig festlegen...

CHDK-Handbuch#Ersetze_Motiv-Distanz, Tastaturkürzel (MF aktivieren mit Taste HOCH im <Alt> Modus)


Tatsache, den AF kann man Blockieren, das zeigt, dass es sich durchaus lohnt auch einen Blick in die Betriebsanleitung zu werfen, Danke für den Tipp! Schaue gleich mal wie sich das Implementieren lässt.
Canon IXUS 80 IS 1.01A
ixus80_sd1100-101a-0.9.8-760
Galerie
DrMaex
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 04.12.2008, 23:48
Wohnort: BW

Beitragvon fe50 » 10.12.2008, 13:50

*grins* - Das ist das "Problem" mit den meisten P&S-Kamera Usern: die eigentlich unverzichtbaren Sachen (wie eben AFL, AEL, Mittenfokus, Spotmessung, manuelle ISO & andere Werte, Funktionstastenbelegung...) werden wohl von weniger als der Hälfte genutzt, für viele ist die Kamera nur ein ein/ausschaltbarer Backstein mit 'nem Abzug 8)

(damit meine ich jetzt aber keine CHDK'ler, die sind da schon deutlich weiter)
PS: ich war ja irgendwann mal auch so einer...
"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1105
Registriert: 25.04.2008, 15:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon PhyrePhoX » 10.12.2008, 14:31

man könnte im chdk auch ne option einstellen dass bestimmte parameter wie display etc nach skript beenden wieder hergestellt werden. hm.
Benutzeravatar
PhyrePhoX
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 490
Registriert: 04.07.2008, 22:31

Beitragvon msl » 10.12.2008, 14:42

PhyrePhoX hat geschrieben:man könnte im chdk auch ne option einstellen dass bestimmte parameter wie display etc nach skript beenden wieder hergestellt werden. hm.


Gute Idee... Ist-Zustand der Kamera vor Skriptausführung speichern und nach Skriptende wieder herstellen. Das ganze natürlich optional.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Nächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste