IXUS 80 Mikrokopter Filter Zeit einstellen

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

Beitragvon Hamster.78 » 09.11.2009, 22:31

fdietsch hat geschrieben:jetzt habe ich das neue chdk drauf und der vorige script geht nicht mehr ????

Hi fdietsch,

die chdk_de Version wurde unter anderem von einen "Nested if" Bug bereinigt,
CHDKLover hat ein kleine Apps geschrieben um Scripte auf den Fehler zu prüfen.

Einfach die Start.bat im Script Ordner ausführen und die erg.txt ansehen. Dort steht dann evtl. die Zeilennummer drin, und was zu korrgieren wäre.

gruß Hamster
◄ SX100 v100c ◄ Samsung NX10

CHDK DEThe Canon Camera Hackers Manual schon gelesen?
Benutzeravatar
Hamster.78
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 318
Registriert: 24.01.2009, 11:21
Wohnort: Sachsen / Chemnitz

Beitragvon fdietsch » 09.11.2009, 23:04

script geht wieder auch mit neuemchdk hatte wohl irgend ein unsichtbares zeichen mit ins script kopiert habs neu geschrieben und schon gehts . ;)

So nun kommt ob hell oder dunkel immer
ND 1
Blende 0
Iso 0
Zeit 583
Blende96 292

Eigentlich sollten die Werte sich doch ändern wenn man hell oder dunkel anvisiert ??
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon fdietsch » 09.11.2009, 23:24

Also die Werte sind die vom letzten Foto nur halb drücken ändert die Werte nicht. Finde ich jetzt Blöd.

Mit auslösen ändern sich die Werte:

Code: Alles auswählen
rem test

:shot
  press "shoot_half"
  release "shot_half"
  n=get_nd_present
  a=get_av
  b=get_av96
  c=get_iso
  d=get_tv96 
  print "nd", n
  print "Blende", a
  print "AV96Blende", b
  print "ISO", c
  print "Zeit", d
  sleep 2000
  cls
  shoot 
  goto "shot"


end


Jetzt brauche ich erst eine neue idee. :(
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon gehtnix » 10.11.2009, 14:45

fdietsch hat geschrieben:Jetzt brauche ich erst eine neue idee. :(
Setze mal hinter press "shoot_half" ein sleep 500 :D

gruß gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon fdietsch » 10.11.2009, 16:39

Wenn du so meinst , geht etwas


Code: Alles auswählen
rem test auslesen der daten

:shot
  press "shoot_half"
  sleep 500 
  release "shoot_half" 
  sleep 500 
  n=get_nd_present
  a=get_av
  b=get_av96
  c=get_iso
  d=get_tv96 
  sleep 500
  print "nd", n
  print "Blende", a
  print "AV96Blende", b
  print "ISO", c
  print "Zeit", d
  sleep 3000
  goto "shot"


end



IXUS 80
get ND ohne Funktion
get AV ohne Funktion

Bei der Blende gibt es 2 Werte 292 für Blende 2,8 und 574 für Blende 8 was wohl das ND Filter ist.

get sv96 ergibt werte
get user_tv96 ergibt immer null ohne Funktion
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon gehtnix » 10.11.2009, 17:53

Hi,

vielleicht findest Du hier was.

Das "release "shoot_half"" setze mal eine Zeile vor print.
"sleep 500 " vor print kannst Du löschen.

gruß gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon fdietsch » 10.11.2009, 19:31

Danke muß ich noch lesen, inzwischen habe ich ma ldas gebastelt.
Problem der tv wert lässt sichnicht erhöhen ?

d und z sind gleich


Code: Alles auswählen
rem fokus auf unendlich
set_focus 65535
sleep 400
set_aflock 1

rem auslesen der daten

:messen
  set_iso 4 
  press "shoot_half"
  sleep 500 
  b=get_av96
  c=get_iso
  d=get_tv96 
  m=get_iso_market
  release "shoot_half" 
  print "AV96Blende", b
  print "ISO", c
  print "Zeit", d
  print "ISOmarket", m
  if b=574 then goto "belichtung"
  goto "messen"



:belichtung
  rem der ND Filter wird ausgeklappt und die Belichtung verkürzt
  set_av96 292
  print "filter aus"
  sleep 500
  rem die belichtung wurde mit filter gemessen
  rem daher muß die belichtungszeit ohne ND Filterverkürzt werden
  set_tv96 d+192
  sleep 500
  print "zeit gesetzt"
  print "Belichtungskorrektur"
  print "alt", d
  z=get_tv96
  sleep 500
  print "neu", z
  sleep 1000
  goto "messen"



end

:ausloesen
  shoot
  goto "messen"
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon msl » 10.11.2009, 22:49

Hallo,

so richtig klar ist mir nicht mehr, was hier erreicht werden soll. :?:

Erstmal ein paar Anmerkungen: get_user_tv96 gibt nur bei Kameras mit Tv-Modus in diesem Modus einen sinnvollen Wert zurück. set_av96 und set_tv96 sind auch nur bedingt einsetzbar.

Bei Deiner Kamera gibt es nur 2 einstellbare Blendenwerte. Diese kannst Du mit set_nd_filter erreichen. Die Verschlusszeit kannst Du mit set_tv96_direct verändern.

Was Du aber scheinbar willst, ist eine einfache Belichtungskorrektur. Dazu benutzt man set_ev.

Die Wechselwirkung zwischen Av, Tv und Ev wurde ausführlich in dem von gehtnix genannten Link diskutiert.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon fdietsch » 11.11.2009, 17:57

Hallo,

so richtig klar ist mir nicht mehr, was hier erreicht werden soll.


Der Sinn ist immer die kürzest mögliche Verschlusszeit sicherzustellen um möglichst wenig verwackelte Bilder zu haben. Eigentlich will ich aus der Belichtungsautomatik eine reine Zeitsteuerung bauen.
1. Problem wenn ich den Filter manuell ausschwenke mißt die IXUS und errechnet eine Belichtung mit einem Zeit / NDFilter wert. Wird der Filter von der ixus nicht gesetzt ist alles OK . Wird der Filter mitberechnet ist mit der dazu im verhältnis stenden Zeit das Bild ohne Filter überbelichtet. Dies will ich nun ausgleichen. Der fall daß der Filter nicht kommt bereitet ja keine Probleme.

Da die ixus nach gutdünken den ND Filter reinschiebt also von Blende 2,8 auf 8 geht und den rest mit der Zeit macht ist es nötig den ND Filter nach der Messung zu entfernen um wieder auf Blende 2,8 zu kommen. Jetzt stimmt aber die von der IXUS berechnete Zeit nicht mehr so daß diese korrigiert werden muß. Vorhergehendes script ist nur zum probieren der routinen und ob die werte richtig gesetzt werden.
Sicher kann ich auch mit den ev werten arbeiten hatte halt klassisch mit Zeit angefangen und wollte es so lösen. Wenn ich das mit der Zeitsteuerung nicht hinbekomme werde ich auf EV gehen.


Erstmal ein paar Anmerkungen: get_user_tv96 gibt nur bei Kameras mit Tv-Modus in diesem Modus einen sinnvollen Wert zurück

genau funktioniert nicht.

Was ich bisher beim testen der IXUS 80 herausbekommen habe
auslesen get_nd_present geht nicht aber alternativ gibt die Kamera einen get_av96 wert aus . den man ja auch als Filter gesetzt oder ausgeschwenkt betrachten kann(Blende 2,8 oder 8). Daher habe ich versucht den auch über set_av96 zurückzuändern weil ich den eindruck hatte set_nd nicht funktioniert muß ich aber noch genau testen.

Die Verschlusszeit kannst Du mit set_tv96_direct verändern.

Das fuktioniert . :p Nur ist der Wert dann so fest sesetzt das er beim nächsten durchlauf der Schleife mit schoot half von der IXUSnicht neu gemessen und berechnet wird.
Wie kann ich den fixwert wieder lösen ? Müsse dann vor dem nächsten Messen passieren. Dann würde das ganze funktionieren.

Mit set_tv96 wird die berechnete Zeit nicht geändert (d und z Werte sind gleich) :(
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon msl » 11.11.2009, 21:07

Hallo,

na dann bau doch eine reine Zeitsteuerung. :p

Du hast Dich nicht wirklich mit dem von gehtnix genannten Link auseinandergesetzt. Dort werden die Abhängigkeiten recht ausführlich diskutiert.

Ausgehend von der Gleichung Bv+Sv=Tv+Av kannst Du Die benötigte Verschlusszeit berechnen. Dabei wird der ND-Filter so fest eingestellt, dass Du den kleinsten Blendenwert (2,8 ) hast. Für kurze Verschlusszeiten brauchst Du möglichst viel Licht. Der ISO-Wert (in der Gleichung Sv) wird auch fest eingestellt. Somit haben wir 2 Konstanten. Mit Bv wird die Szene eingemessen. Dann können wir Tv berechnen: Bv+Sv-Av=Tv. Ist die berechnete Verschlusszeit noch zu hoch, kannst Du am ISO-Wert schrauben. Das bedeutet dann aber auch erhöhtes Bildrauschen.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon fdietsch » 11.11.2009, 22:34

Super, Danke; die Formel hat gefehlt. Haut auch fast immer hin. (geringe differenz sicher durch rundungsfehler)
Code: Alles auswählen
print "berechnungstest"

i=1

rem filter ausschalten
set_nd_filter 2
:foto
  set_iso i
  press "shoot_half"
  sleep 500 
  release "shoot_half" 
  a=get_av96
  t=get_tv96 
  b=get_bv96
  s=get_sv96

  print "AV96Blende", a
  print "Zeit", t
  print "ISOmarket", s
  print "b", b
  print b+s a+t
  sleep 1500 
  goto "foto"


Werte darauf basierend mal etwas testen.
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon fdietsch » 11.11.2009, 23:55

Inzwischen sieht es so aus.
Mit der vorgabe der individuelllen max (min) zeit soll ein Verwackeln sicher verhindert . zuerst wird die Empfindlichkeit erhöht und wen das nix bringt mit max zeit belichte selbst wenn dann daß bild unterbelichet wird.
in zeile 41 kommt ein error, denke an der isoanpassung muß ich noch was ändern.

Code: Alles auswählen
@title Zeitsteuerung
@param m max zeit
@default m 736
@param r raw 0 aus 1 ein
@default r 0
@param p pause zwischen bildern s
@default p 0

rem beste Auflösung
set_resolution 0
rem beste qualität
set_quality 0
rem set_raw r
rem Iso Startwert i
i=1
rem fokus auf unendlich
set_focus 65535
sleep 400
set_aflock 1
rem filter ausschalten (entspricht belde 8 auf Blende 2,8 öffnen)
set_nd_filter 2

:messen
  set_iso i
  press "shoot_half"
  sleep 500 
  release "shoot_half" 
  a=get_av96
  t=get_tv96 
  b=get_bv96
  s=get_sv96

  print "AV96Blende", a
  print "Zeit", t
  print "ISOmarket", s
  print "b", b
  print b+s a+t
  sleep p*1000
  z=s+b-292
  rem Isoanpassung bei zu langer Belichtungszeit   
  if z<m-384 then z+384 s+384
  if z<m-288 then z+288 s+288
  if z<m-192 then z+192 s+192
  if z<m-96 then z+96 s+96
  set_iso96 s
  rem minimale Belichtungszeit
  if z<m then z=m
  set_tv96 z
  set_nd_filter 2
  goto "shot"


:shot
rem auslösen
shoot
goto "messen"


:restore
   cls
   print "************************"
   print "Benutzerabbruch"
   set_aflock 0
   sleep 500   
   exit_alt
   return
IXUS 80 FW 101a CHDK 1.0.0-DE

Power shot A480 CHDK
fdietsch
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 26
Registriert: 19.04.2008, 14:43
Wohnort: 99510 Niederroßla / Thür

Beitragvon rudi » 12.11.2009, 09:41

Hallo fdietsch,

die if-Anweisungen sind falsch. Siehe Handbuch!

Nun der Reihe nach:
1. Die Bedingung wird immer ein unerwartetes Ergebnis liefern. KEIN Syntaxfahler! -> Handbuch!
2. Nach dem THEN kann nur eine Anweisung in dieser Zeile noch ausgeführt werden. Syntaxfehler!
3. Das Ergebnis der Addition wird nicht weiter Verarbeitet. Syntaxfehler!

Du musst also auf mehrzeilige if-Anweisungen ausweichen oder besser dir die select-Anweisung ansehen und mit einer Hilfsvariablen arbeiten.

":restore" ist ein Label, und kein GOSUB -> also kein RETURN am Ende. Dafür ist ein END erforderlich.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Beitragvon gehtnix » 12.11.2009, 18:46

rudi hat geschrieben:":restore" ist ein Label, und kein GOSUB -> also kein RETURN am Ende. Dafür ist ein END erforderlich.
Ist in diesem Fall richtig.

In HDR-Hyper wird ":restore" aber auch mit einem return eingesetzt. Wird einmal über die Taste "set" angesprungen oder eben als Abbruch mit dem Druck auf den Auslöser.

gruß gehtnix
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 12:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS990 IS

Beitragvon rudi » 12.11.2009, 21:44

Hallo gehtnix,

ich möchte vom eigendlichen Thema kurz abschweifen.
HDR-Hyper
Grundsätzlich funktioniert deine Methode, da das Script in jedem Fall beendet wird.
Bei mir einscheint aber nach drücken des Auslösers die Fehlermeldung "uBasic: bad return", da keine Rücksprung-Zeilennummer auf den GOSUB-Stack abgelegt wurde.

Syntaktisch besser sollte es sein, statt GOSUB "restore" besser GOTO "restore" zu verwenden und statt dem RETURN das END von oben zu nehmen. Nach dem GOTO "start" wird es niemals abgearbeitet.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

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

cron