CHDK inside

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern
Start CHDK inside Lua Das Shooting im Skript


Das Shooting im Skript

Drucken PDF

Alles rund um das Shooting im Skript

Das Shooting im Skript ist sicherlich die wichtigste Skriptanwendung. Dabei sind einige Dinge zu beachten.

Es gibt mehrere Methoden, per Skript eine Auslösung zu erzeugen.

Methode 1
1
shoot()
Methode 2
1
click("shoot_full")
Methode 3
1
2
3
4
5
6
press "shoot_half"
sleep 1000
press "shoot_full"
release "shoot_full"
release "shoot_half"
sleep 1000
Methode 4
1
2
3
4
5
6
7
press("shoot_half")
repeat
  until get_shooting() == true
press("shoot_full")
release("shoot_full")
release("shoot_half")
repeat
Methode 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
press("shoot_half")
repeat
  until get_shooting() == true
 
for i=1 , 10 do
 
  click("shoot_full_only") -- Befehl nur in CHDK-DE verfügbar
  sleep(2000)
 
end
 
release("shoot_half")
repeat
  until get_shooting() ~= true

Methode 1 und 2 unterscheiden sich fast nicht. Methode 2 ist etwas schneller (10 ms bei uBasic). Beide Methoden führen eine komplette Auslösung durch. Es wird eingemessen, fokussiert und ausgelöst. Methode 3 eignet sich zum Einfügen von Befehlen nach dem Fokussieren. Es können also Messergebnisse der Kamera berücksichtigt werden. Das gleiche gilt für Methode 4. Hier wird aber solange gewartet, bis die Kamera mit dem Messen und Fokussieren sowie dem Shooting fertig ist. Bei Methode 3 wurde dafür eine Wartezeit festgelegt. Das kann in ungünstigen Momenten evt. nicht ausreichen oder zu lang sein.

Methode 5 ist ein Sonderfall, der sich für Intervall-Aufnahmen eignet, bei denen nicht wiederholt eingemessen werden muss. Diese Methode zeichnet sich durch eine hohe Verarbeitungsgeschwindigkeit aus. Dadurch können sehr kurze Intervallabstände realisiert werden.

Zu beachten ist auch, dass die die komplette Auslösung Zeit beansprucht. Insbesondere Beim Skripten mit Lua muss unbedingt darauf geachtet werden, dass das Shooting abgeschlossen wurde, bevor man weitere Befehle im Zusammenhang mit einer Auslösung abarbeiten lässt. Das wird unter Methode 3 bedingt und unter Methode 4 vollständig beachtet.

Für diese verschiedenen Methoden haben wir diverse Möglichkeiten, auf Verschlusszeit, Blende/ ND-Filter, Belichtung und ISO Einfluss zu nehmen. Dabei sollte man wissen, dass für diese Faktoren nicht immer jeder Wert unter jeder Bedingung einsetzbar ist.

Grundsätzlich gibt es zwei Varianten, Einfluss zu nehmen: a) vor dem Shooting und b) während des Shootings. Beide Varianten haben Ihre Vor- und Nachteile. Bei a) wird vor dem Auslösen alles festgelegt. Das ist einfach und unkompliziert. Variante b) hat den Vorteil, das von der Kamera gemessene Werte beeinflusst werden können. Die Ausführung ist aber komplizierter und nicht immer optimal in allen Situationen einsetzbar.
Welche Möglichkeiten der Einflussnahme bestehen nun?

Nachfolgend sprechen wir über die wichtigsten Befehle zur Einflussnahme auf das zu erstellende Foto. Es gibt wesentlich mehr Skript-Befehle in diesen Zusammenhang. Die meisten dieser Befehle dienen aber nur bestimmten Spezialanwendungsfällen.

Insbesondere sollen Befehle zum Einsatz kommen, die dem APEX-System entsprechen. Mit diesen können wir mathematische Abhängigkeiten besser darstellen. Man spricht auch vom APEX96-System, weil eine Belichtungseinheit dem Wert 96 entspricht. Der kleinste Belichtungswert ist 32 und entspricht 1/3 Belichtungseinheit. Das ist auch gleichzeitig die kleinste Stufe bei den Berechnungen. Im Anhang des CHDK-Handbuchs gibt entsprechende Werte-Tabellen.

Die grundlegende Formel für alle Berechnungen ist:
Av+ Tv= Bv+ Sv
also
Blende(Av) + Verschlusszeit(Tv) = gemessene Helligkeit(Bv) + Empfindlichkeit(Sv)
umgestellt in zwei Gleichungen
Av+Tv= Ev
Bv+Sv=Ev
Ev entspricht der Belichtungseinheit
Belichtungskorrektur
1
2
get_ev()
set_ev()
Wir gehen davon aus, dass ein fester oder automatisch ermittelter Wert der Empfindlichkeit (ISO) vorliegt und die Kamera das Objekt eingemessen hat. Dann können wir mit einer Belichtungskorrektur Einfluss auf Blende und Verschlusszeit nehmen. Mit get_ev erhalten wir den gegenwärtigen Wert der Belichtungskorrektur. Der wird, wenn nichts anderes an der Kamera eingestellt wurde, 0 sein. Soll die Belichtung nun per Skript korrigiert werden, benutzen wir set_ev. Der Wert -192 würde beispielsweise eine Korrektur von -2 Ev bedeuten.

Eine Besonderheit ist aber zu beachten. Canon-Kameras verhindern in den meisten Modi eine Belichtungszeit über eine Sekunde. Haben wir also eine Belichtungskorrektur vorgegeben, bei der die Kamera eigentlich länger als eine Sekunde belichten müsste, wird es zu unerwarteten Ergebnissen kommen.

set_ev sollte möglichst vor dem Shooting eingesetzt werden. Benutzt man diesen Befehl in Methode 3 oder 4 nach dem Fokussieren, kann es zu falsch belichteten Bildern und falschen Werten für die Exif-Daten kommen.
Verschlusszeit bestimmen
1
2
3
4
get_tv96()
get_user_tv96()
set_tv96_direct()
set_tv96()
Mit get_tv96 erhält man den im Augenblick von der Kamera vorgesehenen Belichtungszeitwert nach APEX-System. Der Wert muss nicht unbedingt durch 32 teilbar sein. Das liegt daran, dass die Belichtungsmessung "krumme" Werte liefern kann. Die Kamera wird den Wert aber entsprechend anpassen. Nach jedem Fokussieren wird dieser Wert neu ermittelt.

get_user_tv96 ist nur für Kameras mit einem Tv-Modus interessant. Der Befehl gibt den Wert für die in diesem Modus eingestellte Verschlusszeit zurück.

set_tv96_direct ist der wichtigste Befehl zum Setzen der Verschlusszeit. Er entspricht der Funktion "Ersetze Verschlusszeit" im CHDK-Menü "Extra-Foto-Einstellungen". Er wird immer die von der Kamera berechnete Zeit überschreiben. Man kann ihn in allen vier Methoden vor dem Shooting setzen. Konkrete Werte für bestimmte Verschlusszeiten sind im CHDK-Handbuch im Anhang gelistet.

set_tv96 kann man nur verwenden, nach dem die Kamera fokussiert und berechnet hat. Demzufolge kommen nur die Methoden 3 und 4 zum Einsatz.

set_user_tv96 ist wiederum nur für Kameras mit einem Tv-Modus interessant. Hier wird die Verschlusszeit für diesen Modus gesetzt.

Zusätzlich gibt es in Lua noch eine Möglichkeit, die Verschlusszeit zu steuern.

 

Aufruf einer Lua-Bilbiothek zum Setzen der Verschlusszeit
1
2
proptable=require "propcase"
set_prop(proptable.TV,wert)

Diese Methode setzt voraus, dass sich im CHDK-Unterordner LUALIB die Datei propcase.lua befindet. Damit lassen sich bei schwierigen Anwendungsfällen neue Verschlusszeiten zwischen Fokussieren und Auslösen setzen.

 

Blendenwert bestimmen
1
2
3
4
5
6
7
get_nd_present
get_av96
get_user_av96
set_nd_filter
set_av96
set_av96_direct
set_user_av96

Zuerst sollte man feststellen, welches Blenden-System die Kamera verwendet. Hier kommen Iris-Blende und/oder ein ND-Filter zum Einsatz. Mit get_nd_present kann man feststellen, ob die Kamera einen ND-Filter hat.

Bei einer Iris-Blende können wir verschiedene Werte setzen, meistens zwischen 2.8 bis 8.0. Ein ND-Filter kann dagegen nur 2 Blenden-Werte einehmen, 2,8 und 8.0. Außerdem sollte auch beachtet werden, dass der Zoom Einfluss auf den Blenden-Wert hat. Je weiter in das Objekt hereingezoomt wird, desto geringer ist der Lichteinfall. Damit verringert sich auch der kleinste mögliche Blenden-Wert.

get_av96 gibt den Blenden-Wert als APEX-Wert aus.

get_user_av96 ist nur für Kameras mit Av-Modus anwendbar. Der Befehl gibt den in diesem Modus eingestellten Blenden-Wert zurück.

Mit set_nd_filter kan der ND-Filter ein- und ausgeklappt werden.

Die nächsten drei Befehle sind nur Kameras mit Iris-Blende nutzbar!

set_av96_direct ist der wichtigste Befehl zum Setzen der Blende. Er entspricht der Funktion "Ersetze Blenden-Wert" im CHDK-Menü "Extra-Foto-Einstellungen". Er wird immer die von der Kamera berechnete Blende in Abhängigkeit vom Zoom überschreiben. Man kann ihn in allen vier Methoden vor dem Shooting setzen. Konkrete Werte für bestimmte Blenden-Werte sind im CHDK-Handbuch im Anhang gelistet.

set_av96 kann man nur verwenden, nach dem die Kamera fokussiert und berechnet hat. Demzufolge kommen nur die Methoden 3 und 4 zum Einsatz.

set_user_av96 ist wiederum nur für Kameras mit einem Av-Modus interessant. Hier wird die Blende für diesen Modus gesetzt.

Empfindlichkeit bzw. ISO bestimmen
1
2
3
4
get_sv96()
set_sv96()
get_iso_real()
set_iso_real()

Mit get_sv96 erhält man für den eingestellten oder automatisch ermittelten ISO-Wert den dazugehörigen Wert Belichtungsempfindlichkeit.

Mit set_sv96 kann man die Empfindlichkeit und damit auch den ISO-Wert bestimmen.

Die Befehle get_iso_real und set_iso_real lesen und setzen den real verwendeten Iso-Wert. Dieser ist nicht mit der Canon-eigenen ISO-Anzeige identisch! Das Setzen entspricht der Funktion "Ersetze ISO-Wert" im CHDK-Menü "Extra-Foto-Einstellungen".

Belichtung messen
1
get_bv96()
Dieser Wert ist wichtig, wenn man im Skript Verschlusszeit, Blende oder ISO-Wert berechnen möchte.

get_bv96 gibt den Wert der gemessenen Helligkeit als APEX-Wert zurück.

 

 

Anmeldung

Wer ist online?

Wir haben 51 Gäste online