Brauche Hilfe bei der Entwicklung meiner A540 Fernsteuerung!

Kamera-Hardware, Selbstbaufernbedienung und sonstige Hardware-Erweiterungen

Beitragvon msl » 16.10.2009, 21:29

Hallo,

ok, ich sehe, Du denkst mit und hast die falschen Werte entdeckt. :D

Die Notwendigkeit eines Weißabgleichs sehe ich ein. Aber wozu brauchst Du Blendeneinstellungen? Sollte der Lichteinfall nicht maximal sein. Je größer die Blende, desto weniger Lichteinfall hast Du. Ich lasse mich aber gerne vom Nutzen der Blendeneinstellung überzeugen.

Vieleicht kann man die Tasten auch für die Empfindlichkeit (ISO) nutzen?

Und nun der nächste Test:
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title Remote Control



E=0



while 1



do

    p = get_usb_power

until p>0



select p

    case  9 to 10; gosub "Shooting"

    case 14 to 15; gosub "WB"

    case 19 to 20; gosub "Ev_Minus"

    case 24 to 25; gosub "Ev_Plus"

    case 29 to 30; gosub "Zoom_Minus"

    case 34 to 35; gosub "Zoom_Plus"

    case 39 to 40; gosub "Av_Minus"

    case 43 to 45; gosub "Av_Plus"

    case_else;     gosub "Fehler"

end_select



:Shooting

print "Auslöser"

shoot

return



:WB

print "WB"

rem BAUSTELLE FÃœR MANUELLEN WEISSABGLEICH

return



:Ev_Minus

print "EV -"

E=E-1

set_ev E*32

return



:Ev_Plus

print "EV +"

E=E+1

set_ev E*32

return



:Zoom_Minus

print "Zoom -"

set_zoom_rel -1

return



:Zoom_Plus

print "Zoom +"

set_zoom_rel 1

return



:Av_Minus

print "AV -"

rem BAUSTELLE FÃœR BLENDE -

return



:Av_Plus

print "AV +"

rem BAUSTELLE FÃœR BLENDE +

return



:Fehler

print "Fehler"

print "neue Eingabe"

return



wend



end



 
Erstellt in 0.013 Sekunden, mit GeSHi 1.0.8.9


Nun hast Du genug Stoff zum Testen und Weiterentwickeln.

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 gehtnix » 18.10.2009, 01:44

Hi,

hier mal der manuelle Weißbildabgleich. Einfach das hier
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
:WB

print "WB"

rem BAUSTELLE FÃœR MANUELLEN WEISSABGLEICH

return
Erstellt in 0.004 Sekunden, mit GeSHi 1.0.8.9
mit dem ersetzen.

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
:WB

    click "set"

    sleep a

    click "down"

    sleep a

    if (get_propset=1 and (7<>get_prop 5)) or (get_propset=2 and (7<>get_prop 268)) then

        do

            click "right"

        if get_propset=1 then until 7=get_prop 5 else until 7=get_prop 268 endif

    endif

    sleep a



    P=0

    cls

    print "************************"

    print "* Karte halten und"

    print "* mit weiterem USB-Klick"

    print "* geht es weiter"

    print "************************"

    do

        P=get_usb_power

    until P>0



    click "menu"

    sleep a*5

    click "up"

    sleep a

    click "set"

    sleep a

    cls

    return

 
Erstellt in 0.006 Sekunden, mit GeSHi 1.0.8.9
Mit dem ersten Klick der Fernsteuerung wird der Weißbildabgleich aktiviert, da brauchst Du nix voreinstellen. Dann wartet das Skript. Karte, oder was auch immer, vor das Objektiv halten und nochmals auf die FB (kann jede Taste sein) drücken, fertig. Dann kannst Du Dein Foto machen.

Du musst aber darauf achten, dass vor dem Skriptstart das rote Icon immer oben links auf ISO stehen muß! Dann mit "SET" aus dem Menü gehen. Schaltest Du die Kamera ein steht das Icon immer oben links.

Und wie kann es anders sein ](*,) bin mal wieder voll gegen die If-Wand gelaufen.

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 Schwarzkiefer » 18.10.2009, 10:47

Hallo gehtnix, Hallo msl,

vielen Dank für eure Scripts. Ich habe versucht, diese funktionsfähig zu kriegen, aber so richtig rund läuft es noch nicht wirklich. Die SD-Karte ist vom vielen Stecken schon ganz heiß ;-) Es taucht noch so mancher Fehler auf und ich kann nix machen.


Folgende Probleme hab ich noch:
- die EV-Korrektur funktioniert irgendwie nicht. Wird nur über per "print" angezeigt, sonst tut sich nichts.
- nach kurzer Zeit und nach willkürlichem Tastendruck wird das Skript mit der Fehlermeldung "uBasic :20 Parse err" abgebrochen! Woran liegt das?
- Es müsste schon eine Blendenkorrektur sein. ISO-Korrektur wäre nur eine Notlösung

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title Remote Control



E=0



while 1

p=0        ------> HABE ICH NACHTRÄGLICH EINGEFÃœGT. OK SO ?

do

        p = get_usb_power

until p>0



select p

        case  9 to 10; gosub "Shooting"

        case 14 to 15; gosub "WB"

        case 19 to 20; gosub "Ev_Minus"

        case 24 to 25; gosub "Ev_Plus"

        case 29 to 30; gosub "Zoom_Minus"

        case 34 to 35; gosub "Zoom_Plus"

        case 39 to 40; gosub "Av_Minus"

        case 43 to 45; gosub "Av_Plus"

        case_else;     gosub "Fehler"

end_select



wend      ----> musste ich hier hoch setzen      

                         

end        ----> musste ich hier hoch setzen      



:Shooting

print "Auslöser"

shoot

return



:WB

        click "set"

        sleep a

        click "down"

        sleep a

        if (get_propset=1 and (7<>get_prop 5)) or (get_propset=2 and (7<>get_prop 268)) then

                do

                        click "right"

                if get_propset=1 then until 7=get_prop 5 else until 7=get_prop 268 endif

        endif

        sleep a



        P=0

        cls

        print "************************"

        print "* Karte halten und"

        print "* mit weiterem USB-Klick"

        print "* geht es weiter"

        print "************************"

        do

                P=get_usb_power

        until P>0



        click "menu"

        sleep a*5

        click "up"

        sleep a

        click "set"

        sleep a

        cls

        return



:Ev_Minus

print "EV -"

E=E-1

set_ev E*32

return



:Ev_Plus

print "EV +"

E=E+1

set_ev E*32

return



:Zoom_Minus

print "Zoom -"

set_zoom_rel -1

return



:Zoom_Plus

print "Zoom +"

set_zoom_rel 1

return



:Av_Minus

print "AV -"

rem BAUSTELLE FÃœR BLENDE -

return



:Av_Plus

print "AV +"

rem BAUSTELLE FÃœR BLENDE +

return



:Fehler

print "Fehler"

print "neue Eingabe"

return
Erstellt in 0.011 Sekunden, mit GeSHi 1.0.8.9


Wäre super, wenn Ihr mir wieder helfen könntet.

Herzliche Grüße
Schwarzkiefer
Powershot A540
Schwarzkiefer
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 15
Registriert: 06.09.2009, 18:54

Beitragvon msl » 18.10.2009, 11:43

Hallo,

hast Du bei der Ev-Änderung ein Foto gemacht und die Exif-Daten ausgewertet? Erwarte nicht, dass die kameraeigene Ev-Korrektur angezeigt wird. Zur Orientierung kannst Du Dir den jeweiligen Wert anzeigen lassen. Baue dazu nach dem ev_set-Befehl ein "print E*32" und zur Gegenkontrolle ein "print get_ev". Die Werte sollten übereinstimmen.

Der "Parse Error" kann verschiedene Ursachen haben. Nimm mal nach einandere die verschiedenen Sprungmodule außer Betrieb, damit der Fehler eingekreist werden kann. Vielleicht hängt es auch mit dem von gehtnix erwähnten Fehler zusammen.

Jetzt sind wir genau an der Stelle, die ich zuvor beschrieben hatte. Ohne die Hardware ist es ziemlich schwierig, alle Funktionen abzusichern. Das Debugging ist aufwendig. Es muss viel mit Varianten getestet werden.

Die Av-Geschichte machen wir, wenn alles andere funktioniert. Sonst haben wir noch eine Baustelle.

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 gehtnix » 18.10.2009, 12:23

msl hat geschrieben:Vielleicht hängt es auch mit dem von gehtnix erwähnten Fehler zusammen.
Das Glaube ich hier nicht. Zeile 20 liegt ja ganz weit oben.

msl hat geschrieben:Ohne die Hardware ist es ziemlich schwierig, alle Funktionen abzusichern.
Da muß Schwarzkiefer alleine durch, ohne Hardware geht da bei mir nix.

Code: Alles auswählen
------> HABE ICH NACHTRÄGLICH EINGEFÜGT. OK SO ?
Solche Sachen stehen aber doch nicht im Skript?

Code: Alles auswählen
sleep a
Das könnte es sein, a?

Also ganz oben direkt unter den Titel:
Code: Alles auswählen
@param a Sleep-Time   (x100)
@default a 3

a=a*100

E=0
p=0

Das E + p stellst Du dahin.

gruss 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 Schwarzkiefer » 18.10.2009, 13:37

Hallo,

jetzt funktioniert das Skript soweit. Juhuuuu!!! Unten dazu mehr.

Code:
------> HABE ICH NACHTRÄGLICH EINGEFÜGT. OK SO ?

Solche Sachen stehen aber doch nicht im Skript?

Nein, natürlich steht so was nicht im Skript.

Die EV-Korrektur hat schon immer funktioniert. Ich hatte die Fehlannahme, dass ich die Auswirkungen der Korrektur schon im Vorschaubild sehen kann. Aber das ist natürlich nicht so.

Zum Fehler: Er tritt (trat) immer dann auf, wenn die Kamera von der Steuerung zwei Befehle in zu kurzen Zeitabständen bekommt, also z.B. die EV-Taste 2x schnell hintereinander betätigt wird.
Hauptursache für den Parse error war, dass ich nach case_else einen Strichpunkt hatte. Ohne den funktioniert es jetzt. Dann bricht das Skript nitchtmit Parse error ab, sondern bringt per Print die Fehlermeldung.
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
   case 39 to 40; gosub "Av_Minus"

   case 43 to 45; gosub "Av_Plus"

   case_else      gosub "Fehler"

end_select
Erstellt in 0.003 Sekunden, mit GeSHi 1.0.8.9


Nur noch ein Schönheitsfehler: Ich kann jetzt alle Tasten in kurzen Zeitabständen betätigen. Nur wenn ich zwischen dem betätigen der Zoom-Tasten nicht min. 4 Sekunden warte, gibt es wieder eine Fehlermeldung. Ich nehme an, dass sich der Zoom-Befehl nicht beschleunigen lässt, oder?

Eine Frage noch: Die Tatsache, dass ich nach dem Aufrufen des Weißabgleichs erst eine Info bekomme, dann eine Graukarte vorhalten kann und mit erneutem Tastendruck dann erst der Weißabgleich durchgeführt wird, ist im allgemeinen eine super nützliche funktion. Ich bräuchte dies aber nicht. Was müsste ich aus dem Skript löschen, dass der Weißabgleich gleich auf einmal durchgeführt wird?

Und dann können wir schon die Blendenkorrektur angehen.

Viele Grüße
Schwarzkiefer
Powershot A540
Schwarzkiefer
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 15
Registriert: 06.09.2009, 18:54

Beitragvon gehtnix » 18.10.2009, 14:30

Hi Schwarzkiefer,

Du solltest Dir mal vor Augen führen dass Du da drei System am Laufen hast die nicht miteinander kommunizieren! A540, Skript, Deine FB.
Mit Deiner FB kannst Du jetzt beliebig feuern. Wenn aber das Skript was zu tun hat gehen diese Befehle ins Nirwana. Durch das Skript kannst Du Deine Canon genauso unter Feuer nehmen. Hier aber ebenso, wenn die erstmal den Zoom einfährt gehen weitere Klicks ins Nirwana.

Also, dieses hier "print "Zoom -" ", das setzt Du mal vor das "return". Wenn das nicht reicht dann setzt Du das "sleep a" hinter "set_zoom...".

Unter das "while 1" könntest Du noch ein
Code: Alles auswählen
print "****************"
print " FB bereit"
setzen. Dann weißt Du das der alte Befehl abgearbeitet wurde. Und dann erst wieder klicken.

Schwarzkiefer hat geschrieben:Ich nehme an, dass sich der Zoom-Befehl nicht beschleunigen lässt, oder?
Nein, siehe oben.

Schwarzkiefer hat geschrieben:Was müsste ich aus dem Skript löschen, dass der Weißabgleich gleich auf einmal durchgeführt wird?
Alles was Du dann nicht mehr brauchst ;) Mal ein Wink "until P>0" mit "until P=0" austauschen.

Schwarzkiefer hat geschrieben:Und dann können wir schon die Blendenkorrektur angehen.
A bisserl was musst Du schon selber einbringen.

Hältst Du denn zum Weißabgleich irgendwas vor´s Objektiv?

gruss 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 Schwarzkiefer » 18.10.2009, 20:29

Hallo gehtnix,

es funktioniert immer besser. Jetzt auch mit Zoom und kurzem Weißabgleich.

gehtnix hat geschrieben:Hältst Du denn zum Weißabgleich irgendwas vor´s Objektiv?

Wie ich schrieb ist die Kamera an meinem Mikroskop adaptiert. Der Weißabgleich wird einfach ohne ein mikroskopisches Präparat durchgeführt. Das Licht ist dann meine Karte für den Weißabgleich.

gehtnix hat geschrieben:A bisserl was musst Du schon selber einbringen.

Tut mir leid, aber mit der Blendenkorrektur komm ich nicht weiter. Ich hab jetzt schon probiert den set_av Befehl an verschiedenster Stelle einzubinden, aber bislang ohne Funktion. Gibst du mir wenigstens einen Tipp.

Viele Grüße
Schwarzkiefer
Powershot A540
Schwarzkiefer
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 15
Registriert: 06.09.2009, 18:54

Beitragvon msl » 18.10.2009, 20:56

Hallo,

Du musst zuerst feststellen, welche Av-Werte Deinen Blendeneinstellungen entsprechen. Das kannst mit einem kleinem Skript erledigen, bei dem Du mit get_av96 die Werte aller Deiner möglichen Blendeneinstellungen ermittelst.

Diese Werte kannst Du dann mit dem Befehl set_av96_direct setzen. Der Befehl ist im Handbuch bis jetzt nicht dokumentiert. Er hat die gleiche Wirkung wie das Ersetzen des Blendenwertes in den "Extra-Foto-Einstellungen". Ob und wie man die einzelnen Stufen mathematisch ermitteln kann , wird sich aus dem Test mit get_av96 ergeben.

Du solltest aber noch die Abhängigkeit Blende und Zoom beachten. Nicht in jeder Zoomstufe ist jede Blende möglich. Ausführliche Informationen dazu hat gehtnixhier zusammengestellt.

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 gehtnix » 18.10.2009, 22:20

Hallo,

AV oder EV - das ist hier die Frage!

Ich tippe aber mal auf EV, Du willst bestimmt am Monitor fein abstimmen?
Mit EV siehst Du am Monitor die Veränderung. Mit set_ev dagegen siehst Du die Veränderung nicht.

Wenn dem so ist, dann einfach mal die komplette Tastenfolge auf einem Stück Papier aufschreiben um ins + und - zu gehen. Dann nach dem Papier wiederholen, dann erst siehst Du Deine Irrtümer bzw. Fehler.

Dann ein click davor, "" muß auch noch dazu und schon hast Du den Skriptteil der Dir noch fehlt. Mit sleep a zwischen jedem click, das musst mal ausprobieren ob das notwendig ist.

Für AV geht das aber auch.

EDIT Du willst ja beides! Habe ich erst jetzt gesehen.

Des wird scho! Da kommst Du noch vor Weihnachten auf Deinen grünen Zweig, gehtnixehrenwort.

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 gehtnix » 29.10.2009, 13:18

@schwarzkiefer,

wie sieht es denn bei Dir aus? Sitzt Du auf dem grünen Zweig?

Und lass uns mal Bilder sehen

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 Schwarzkiefer » 30.10.2009, 15:51

Hallo gehtnix,

erst mal sorry dass ich mich nicht mehr gemeldet habe. Ich hatte diese Woche so viel zu tun, dass für das Skript keine Zeit mehr blieb. Bilder reiche ich noch nach.

Aaalso: Ich habe schon versucht die AV-Korrektur in ein Skript zu kriegen. Aber irgendwie wird das nichts. Sag mir doch bitte was ich ergänzen muss. Wenn nicht, dann muss ich halt auf die AV-Korrektur verzichten. :D Ich bin mir nicht sicher, ob ich diese benötige, oder ob die EV-Korrektur ausreicht.

Ich möchte noch haben, dass die Kamera sich dauerhaft auf manuellem Fokus (unendlich) befindet, so lange das Skript läuft. Geht das mit dem von mir eingesetzten "set_focus 65535"? Muss ich die Kamera auch noch in den MF-Modus bringen, oder reicht es, wenn ich es im Skript habe?

Und noch etwas ganz wichtiges: Die Kamera schaltet ja das Display nach ein paar Sekunden aus, wenn keine erneute Eingabe erfolgt. Kann man das Display in der Kamera oder im Skript irgendwie dauernd einschalten? Also dass das Display nicht mehr in den Stromsparmodus geht?

Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@title Remote Control

@param a Sleep-Time   (x100)

@default a 3



a=a*100



E=0



set_zoom_rel 2



set_focus 65535



while 1

    do

...

 
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9


Viele Grüße
Schwarzkiefer
Powershot A540
Schwarzkiefer
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 15
Registriert: 06.09.2009, 18:54

Beitragvon gehtnix » 30.10.2009, 18:46

Hi Schwarzkiefer,

mach doch folgendes. Nimm Deinen Editor und da schreibst Du dann mal das hinein.
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
@titel EV+

@param z Tasten Sleep 1/100

@default z 10



z=z*100



click ""

sleep z



click ""

sleep z



end



 
Erstellt in 0.002 Sekunden, mit GeSHi 1.0.8.9

im CHDK-Handbuch Seite 83, da stehen Bezeichnungen der Tasten.

Kamera einschalten und den Modus auswählen.

Jetzt beginnst Du den EV-Wert an Deiner Kamera zu verstellen. Jede Taste die Du drückst schreibst Du auf ein Stück Papier, für jedes Skript ein Zettel! Dann trägst Du das oben ein, fertig ist das erste Teilskript.

Nach end immer eine Leerzeile lassen. Sleep ist absichtlich so hoch gewählt, kannste dann gemütlich zuschauen.

Also machst Du zunächst vier kleine Teil-Skripte, EV+ EV- AV+ AV-.bas. Die kannst Du dann nacheinander laufen lassen.

Wenn Du da nicht weiterkommst, dann stelle hier zunächst erst mal ein Teil-Skript ein.
Dann erst kann ich sagen was Du ergänzen musst.

Wenn die vier korrekt laufen ist es kein Hexenwerk die in Dein Remote Control zu bekommen.

Schwarzkiefer hat geschrieben:Muss ich die Kamera auch noch in den MF-Modus bringen, oder reicht es, wenn ich es im Skript habe?
Brauchst Du Beides. Erst Kamera in MF und dann set_focus.

Schwarzkiefer hat geschrieben:Kann man das Display in der Kamera
Ja, kann man => CANON-Handbuch

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

Vorherige

Zurück zu Technik-Ecke

Wer ist online?

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

cron