Hallo zusammen,
ich möchte hier mein neues Skript USB_Remo.lua vorstellen. Mein Ziel war dabei ein einfach zu bedienendes USB-Fernbedienungs-Skript, mit welchem auch CHDK-Neulinge schnell Bilder schießen oder auch Videoaufnahmen starten/stoppen können.
Im Skript integrierte rigorose Sicherheitsabfragen sorgen insbesondere bei aktivierten Save-Mode dafür, daß eine Fehlbedienung dieses Skriptes quasi unmöglich ist. Bei erkannten Fehleinstellungen bricht das Skript mit aussagekräftigen Fehlermeldungen ab.
Ein Highlight dieses Skriptes ist dabei die Möglichkeit, sehr einfach manuelle Fokusdistanzen auch bei solchen Cams zu ermöglichen, die eigentlich über keinen MF-Modus verfügen. Das betrifft bspw. viele besonders kompakte und leichte Ixus-Modelle, welche gerne an ferngesteuerten Flugmodellen/Koptern eingesetzt werden. Alternativ können auch die "unendliche Distanz" oder die "hyperfokale Distanz" (benötigt Programm Av oder M) voreingestellt werden.
Sehr praktisch ist auch die mögliche Option, den USB-Port der Cam bei Skriptstart automatisch in den Remote-Modus zu schalten, wobei dieser nach Skriptende automatisch wieder in den "normalen" USB-Modus zurückgesetzt wird.
Ebenfalls überaus praktisch ist auch die Möglichkeit, bei laufendem Skript nach Deaktivierung des Alt-Modus den Zoomfaktor verändern zu können und nach erneuter Aktivierung des Alt-Modus wieder in das Skript einsteigen zu können. Bei gewählten manuellen Fokusvorgaben (MAN, HYP oder INF) erfolgt dann immer eine Neufokussierung des Objektives.
Gleiches gilt auch bei Einstellung HYP (benötigt Programm Av oder M): auch nach einer Blendenvorwahl-Änderung erfolgt dann automatisch eine Neufokussierung des Objektives auf die neue aktuelle hyperfokale Distanz.
Das Skript benötigt dabei zwingend CHDK 1.3 oder höher!
Bei einer erkannten CHDK 1.3 Version ab v3442 wird zudem automatisch der seit dieser Version verfügbare USB-Highspeed-Mode aktiviert, welcher USB-Impulszeiten deutlich präziser messen kann.
Zu den Details:
1) Belichtung
Das Skript verwendet grundsätzlich die an der Cam gemachten Belichtungseinstellungen.
Bei der per Default aktivierten Option "SaveMode" werden dabei nur die Programme P, Tv, Av oder M zugelassen, welche bei der Verwendung von CHDK besonders empfehlenswert sind.
Wagemutige können diese Option auf eigene Gefahr (!) auch deaktivieren, sodaß auch alle anderen verfügbaren Programme zugelassen werden. Das geht dann aber auf eigenes Risiko mit der Möglichkeit, daß reale Schäden an der Kamera auftauchen könnten!
2) Shoot-Modus
Der Vorgabeparameter "Shoot-Mode" kann auf PHOTO, VIDEO oder AUTO eingestellt werden:
a) Bei Voreinstellung PHOTO wird nach einem USB-Impuls immer ein Bild gemacht.
b) Bei Voreinstellung VIDEO wird nach einem USB-Impuls immer eine Videoaufnahme gestartet bzw. wieder gestoppt.
c) Bei Voreinstellung AUTO wird dagegen die Länge eines USB-Impulses ausgewertet und mit dem zusätzlichen Vorgabeparameter "Auto-Time Limit" verglichen:
ist der USB-Impuls kleiner als dieser Wert wird ein Bild gemacht, ist er dagegen größer/gleich diesem Wert wird stattdessen eine Videoaufnahme gestartet.
Info: Der Parameter "Auto-Time Limit" kann dabei in 100ms-Schritten im Bereich 100-1500ms an eigene Vorlieben angepasst werden.
Zusätzlicher Hinweis:
Bei aktuell laufender Videoaufnahme führt jegliche USB-Impulslänge zu einem Abbruch der Videoaufnahme!
Einzelne Bildaufnahmen bei laufender Videoaufnahme sind mit diesem Skript derzeit also bewußt nicht möglich, um Fehlbedienungen vorzubeugen.
3) Fokuseinstellungen
Der Vorgabeparameter "Foc-Mode" kann auf AF, MAN, HYP oder INF eingestellt werden:
a) Bei Voreinstellung AF wird der Autofokus der Cam verwendet.
INFO: Wird bei Einstellung AF ein eingestellter MF-Modus gefunden, wird der dort eingestellte Fokuswert nicht verändert!
b) Bei Voreinstellung MAN wird nach Skriptstart automatisch auf die Distanz eingestellt, welche im zusätzlich verfügbaren Vorgabeparameter "Man. Focus Distance" definiert wurde.
c) Bei Voreinstellung HYP wird nach Skriptstart automatisch auf die hyperfokale Distanz fokussiert.
Wichtig: HYP ist nur in den Programmen Av oder M verfügbar!
d) Bei Voreinstellung INF wird nach Skriptstart automatisch auf unendlich fokussiert.
Zusätzlicher Hinweis:
Bei den Voreinstellungen MAN, HYP und INF aktiviert das Skript falls nötig automatisch entweder (falls möglich) den MF-Modus oder alternativ den AFL-Modus.
Bei Skriptende wird an der Cam wieder der Modus wie beim Skriptstart hergestellt.
4) USB-Einstellungen:
Damit dieses Skript funktionieren kann, müssen in CHDK im Menü CHDK-Einstellungen/USB-Fernbedienung-Parameter folgende Einstellungen gemacht werden:
a) USB Fernbedienung an/aus: AN
b) Schalter-Typ: None
c) Kontrollart: None
Den unter a) genannten Parameter "USB Fernbedienung an/aus" kann dieses Skript über den per Default aktivierten Vorgabeparameter "Auto-Mode USB-Port" auch automatisch bei Skriptstart aktivieren und bei Skriptende wieder deaktivieren. Das ist in der Praxis zumeist überaus nützlich.
5) Automatische Erkennung einer geänderten Zoomeinstellung
Erkennt das Skript bei einer manuellen Fokuseinstellung (MAN, HYP oder INF) und nicht laufender Videoaufnahme eine Änderung der Zoomeinstellung, hält es für 2 sec mit einer Konsolenmeldung an und anschließend erfolgt ein neues Einstellen der gewählten MF-Distanz.
6) Automatische Erkennung einer geänderten Blendeneinstellung im Av- oder M-Modus bei Einstellung HYP
Erkennt das Skript bei der Fokuseinstellung HYP und nicht laufender Videoaufnahme eine Änderung der Blendeneinstellung, hält es für 2 sec mit einer Konsolenmeldung an und anschließend erfolgt ein neues Einstellen der hyperfokalen Distanz passend zur neuen Blendeneinstellung.
Tipp:
Ein zusätzlich aktivierter DOF-Rechner kann wertvolle Infos zu den sich dabei ändernden Nahgrenzen geben, ab denen das Bild scharf wird.
7) Einstellung Save-Mode
Diese per Default aktivierte Einstellung lässt nur die Programme P, Tv, Av oder M zu, ansonsten erfolgt ein Skriptabbruch.
Das ist ausdrücklich so gewollt und auch sinnvoll, da CHDK nur mit diesen Programmen zuverlässig arbeitet.
Deaktiviert man diesen Parameter, lässt dieses Skript auch andere Programme zu.
Eine Deaktivierung dieses Parameters läuft auf eigenes Risiko mit der lauernden Gefahr, daß die Cam beschädigt werden könnte!
Nur erfahrene Photographen können dabei abschätzen, ob gewisse Spezialprogramm wie bspw. möglicherweise PORTRÄT oder LANDSCHAFT zu diesem Skript kompatibel sein könnten!
7) Last not least hier noch ein Screenshot der möglichen Skript-Vorgabeparameter:
Fazit:
Dieses Lua-Skript nutzt sinnvoll viele der neuen Möglichkeiten von CHDK 1.3 und ist dabei einfach zu bedienen.
Umfassenden Sicherheitsabfragen lassen dabei im Save-Mode keine Fehlbedienungen zu.
Die manuellen Fokuseinstellungen (MAN, HYP oder INF) sind besonders für Cams ohne einstellbaren MF-Modus interessant.
Praktisch ist auch die Möglichkeit, bei laufendem Skript (bei kurzzeitig deaktivierten Alt-Modus) die Zoomposition und/oder die Blendenvorwahl (bei den Programmen Av oder M) ändern zu können.
Eine geänderte Zoomeinstellung wird dabei vom Skript erkannt und führt bei aktiviertem "Foc-Mode" MAN, HYP oder INF automatisch zu einer Neufokusssierung. Bei eingestelltem "Foc-Mode" HYP führt ein Änderung der Blendeneinstellung dabei ebenfalls automatisch zu einer Neufokussierung.
Für Rückmeldungen zu diesem Skript, egal ob positiv oder negativ, wäre ich sehr dankbar!
In diesem Skript stecken immerhin unzählige Arbeitsstunden von mir bzgl. Programmierung und auch realen Tests an meinen beiden Kameras.
Liebe Grüße
Werner_O
History:
29.11.2014: Skriptversion 1.00 ist verfügbar
30.11.2014: Skriptversion 1.01 ist verfügbar
Ein Bugfix mit kleinen Änderungen in der Unterfunktion restore().
30.11.2014: Skriptversion 1.02 ist verfügbar
Die manuellen Fokus-Vorgabewerte wurden von 0-6500 cm auf 0-65000 mm geändert.
Damit kann speziell bei Aufnahmen im Makromodus noch genauer fokussiert werden.
11.12.2014: Skriptversion 1.03 ist verfügbar
Abhängig von der erkannten CHDK-Version (1.3 >= v3791 oder 1.4) wird für die Aktivierung/Deaktivierung des USB-High-Speed-Mode nun der neuere Befehl "set_remote_timing()" anstelle von bisher "enable_remote_hp_timer()" verwendet.
Details zu der Notwendigkeit dieser Änderungen gibt es hier.
13.12.2014: Skriptversion 1.04 ist verfügbar
Zum einen ist die neue Skriptversion nun vorbereitet für das kommende CHDK 1.4.
Zum anderen ist der "USB High Speed Mode" nun bereits ab CHDK 1.3 v3442 statt wie bisher v3585 verfügbar.
27.03.2015: Skriptversion 1.05 ist verfügbar
Durch Hilfen von msl, für welche ich überaus dankbar bin , konnte ich den Code weiter optimieren:
1) Ein verbessertes Fehler-Management überprüft nun bei Skriptstart die Skript-Vorgabeparameter bzgl. der gefundenen Kamera-Voreinstellungen und zeigt nun an der Konsole ggfs. sämtliche gefundenen Fehler an, welche ein Ausführen dieses Skriptes bei den gewählten Voreinstellungen verhindern.
2) Durch einen eleganteren Code zum Aktivieren/Deaktivieren des "USB high speed mode" konnte ich die Skriptgröße von ehemals ~ 14 kB auf nun ~ 12 kB reduzieren.
17.05.2015: Skriptversion 1.06 ist verfügbar
Die neue Skriptversion überwacht in den Programmen Av und M mit der Fokuseinstellung HYP zusätzlich die gewählte Blendeneinstellung und stellt bei Blenden-Änderungen automatisch die neue nötige hyperfokale Distanzeinstellung ein.