Hallo Udo,
Oder der AF-Wert wird bei Tageslicht ermittelt und dann fix im Skrip hinterlegt (für diesen festgelegten Abstand von ca. 2 Meter). Alle anderen Einstellungen wie Blitz, Belichtung, etc. sollte nach wie vor automatisch von der Kamera übernommen werden.
Du hast anscheinend immer noch nicht begriffen, daß es m.W. so bei Deiner A3300 ohne MF-Modus leider nicht geht.
Via Skriptbefehlen wird alles extrem umständlich - hast Du meinen
gelegten Link dazu überhaupt aufmerksam gelesen?
Via CHDK-Fokus-Vorgaben funktioniert es ebenfalls nicht, weil es dann nur im M-Modus gehen könnte und dann leider keine automatische Belichtungsmessung mehr erfolgen kann.
GsD habe ich im Handbuch zur A3300 auf Seite 96 den überaus wichtigen Hinweis gefunden, daß diese Kamera immerhin den Befehl "AF-Speicherung" (auf englisch AF-Lock) beherrscht und habe dazu inzwischen ein Lua-Skript geschrieben, welches einen anfangs gemachten AF auf eine Distanz nach Deiner Wahl dauerhaft für alle nachfolgenden Aufnahmen speichert, wobei mit "dauerhaft" nur die Dauer des laufenden Skriptes gemeint ist.
Über die CHDK-Einstellungen kannst Du ja festlegen, daß die Kamera im Alt-Modus generell nicht mehr ausgeht, was für Deine Zwecke überaus wichtig wäre.
Hier zunächst mal das Skript:
- Code: Alles auswählen
--[[
**************************************************
Script "Partytime" for an USB remote with provided
AF-Lock for Canon cams without available MF mode
Script Version: v1.00
Licence: GPL
(c) Werner_O 2014/06/18
**************************************************
@title Partytime
@param a Auto-Mode USB-Port
@default a 1
@range a 0 1
@param t Low Limit for AFL in sec
@default t 5
@range t 1 10
]]
-- 1) Definitionen von Variablen und Unterfunktionen:
auto_mode = a --USB Automodus
aflock_mode = 0 --AF-Lock Status
time_limit = t * 100 --USB-Zeitgrenze für die AF-Lock Funktion
usb_high_speed_mode = 0 --Anfangsdefinition USB High-Speed-Mode
--Unterfunktion für AF-Lock:
function command_aflock()
if aflock_mode == 1 then
set_aflock(0) --Disable AF lock
sleep(10)
aflock_mode = 0
end
press("shoot_half")
repeat sleep(10) until get_shooting() == true
set_aflock(1) --Enable AF lock
aflock_mode = 1
print("AF-Lock enabled")
end
--Unterfunktion für Shoot:
function command_shoot()
count = get_exp_count()
shoot()
repeat sleep(10) until get_exp_count() ~= count
end
--Unterfunktion Restore, verwendet bei Skriptabbruch via Auslöser:
function restore()
cls()
if auto_mode == 1 then
set_config_value(121,0) --Disable USB remote
print("USB remote disabled")
end
if aflock_mode == 1 then
set_aflock(0) --Disable AF lock
print("AF-Lock disabled")
end
if usb_high_speed_mode == 1 then
h = enable_highspeed_usb(0) --Disable USB high speed mode
print("USB high speed mode disabled")
end
end
--Definition Konsolenlayout (unten links mit 4 Zeilen und je 28 möglichen Zeichen):
set_console_layout(0, 0, 28, 4)
-- 2) Anfang der Ausführung von Skriptbefehlen:
if auto_mode == 1 then
set_config_value(121,1) --Enable USB remote
print("USB remote enabled")
end
--Verwendung des USB high speed mode bei erkanntem CHDK 1.3 ab Version 3442 oder größer:
if tonumber(string.sub(string.gsub(get_buildinfo().build_number, "%p", ""), 0, 3)) >= 130 then --Get CHDK version
if tonumber(get_buildinfo().build_revision) < 3442 then --Get CHDK build number
usb_high_speed_mode = 0
else
usb_high_speed_mode = 1
h = enable_highspeed_usb(1000)
--Change USB time_limit to another value needed in USB high speed mode:
time_limit = t * 1000
print("USB high speed mode enabled")
end
else
usb_high_speed_mode = 0
end
repeat
x = get_usb_power() -- x = normalerweise die USB-Impulslänge in ms geteilt durch 10;
-- im USB high speed mode dagegen die USB-Impulslänge in ms
if x > 0 then
if x < time_limit then
command_shoot()
else
command_aflock()
end
end
until is_pressed("menu")
-- 3) Befehle nach Skriptabbruch via Taste MENÜ:
cls()
if auto_mode == 1 then
set_config_value(121,0) --Disable USB remote
print("USB remote disabled")
end
if aflock_mode == 1 then
set_aflock(0) --Disable AF lock
print("AF-Lock disabled")
end
if usb_high_speed_mode == 1 then
h = enable_highspeed_usb(0) --Disable USB high speed mode
print("USB high speed mode disabled")
end
(Alternativer Download des Skriptes von meiner eigenen Homepage:
http://www.studio4all.de/foren/chdk/Party.lua)
Wichtige Hinweise zum Skript:
1) Die USB-Zeitgrenze, ab wann das Skript statt Shoot einen AF-Lock macht, kannst Du vor dem Skriptstart via CHDK über einen Vorgabeparameter von 1 bis 10 sec an eigene Vorlieben anpassen.
2) Bei aktiviertem Vorgabeparameter "Auto-Mode USB-Port" wird für den USB-Port bei Start des Skriptes automatisch der Remote-Modus aktiviert und bei Skriptende wieder deaktiviert.
3) Der seit CHDK 1.3 v3442 mögliche "USB High Speed Mode" mit wesentlich genaueren Ergebnissen für den Befehl "get_usb_power()" wird automatisch aktiviert, wenn die vom Skript ermittelte CHDK-Version dazu passt (siehe Zeilen 73 -86).
4) Bzgl. Struktur ist dieses Skript für Lua-Neulinge nicht unbedingt auf den ersten Blick nachzuvollziehen. Bspw. habe ich die Funktionen Shoot und AF-Lock in den Unterfunktionen "command_shoot()" bzw. "command_aflock()" definiert, was mit Lua (nicht aber mit uBasic) möglich ist.
Etliche eingefügte Kommentare sollten aber dabei helfen, die grundlegende Funktionsweise dieses Skriptes nachvollziehen zu können.
5) Konsolen-Textausgaben bei Skriptstart und Skriptende geben wichtige Infos zu USB-Port und USB High Speed Mode. Auch ein erfolgter AF-Lock wird angezeigt.
Zusatzinfo zur Funktion AF-Lock:
Bei meinen eigentlich erfolgreichen Tests dieses Skriptes an meiner S3 kam es zu nicht so ganz nachvollziehbaren Ausgaben am OSD bzgl. des AFL-Symbols:
a) Nach via USB-FB erfolgtem AF-Lock erscheint nur ein grüner AF-Rahmen aber ohne AFL-Anzeige im Display.
Nur die Konsolenausgabe vom Skript zeigt an, daß tatsächlich ein AF-Lock gemacht wurde.
b) Mache ich dann ein Bild, ist der AF-Rahmen nicht mehr grün, dafür wird AFL im Display angezeigt.
c) Beende ich das Skript, wird zunächst weiterhin AFL im Display angezeigt, obwohl das Skript AFL beim Beenden automatisch wieder deaktiviert. Nach erneutem Antippen des Auslösers bei deaktiviertem Alt-Modus ist das AFL-Symbol aber sofort wieder weg.
Das aber nur zur Info - mein Skript macht ja trotzdem schon genau das was es machen soll.
Liebe Grüße
Werner_O