CHDK-Scripte

    Hiho!


    Ich hab mich vorgestern ewig durch die Foren und Wikis zu CHDK geschlagen, und finde das nicht ganz einfach, sich da zurecht zu finden! Am besten lerne ich sowas aber auch durch Codebespiele! Deswegen mach ich mal einen Thread hier auf, in dem wir mal Scripte und Codeschnippsel zeigen, diskutieren und sammeln können. Ich glaub mit CHDK ist viel mehr möglich, als mir bewusst ist!


    Hier mal was von mir:


    Der folgende Codeschnippsel stellt auf der Canon A570 is auf manuellen Focus um, und stellt dann auf "unendlich"- hoffe ich zumindest.



    Tschüss
    Tiggr (aka Marcus)

    Hiho!


    Ich glaub der Wert von 15000 bei dem set_focus ist noch zu klein, nehmt besser 65535!


    Tschüss
    Tiggr (aka Marcus)

    So, nachdem ich stundenlang mit Marcus hier diskutiert habe, sieht mein Script für die S90 jetzt so aus:



    Stellt automatisch auf MF und dann "unendlich".
    Anschließend startet das normale CHDK-Script von Peter Engels, um via CHDK und AuRiCo auslösen zu können.

    Hallo!


    Zitat

    Original von Florian


    Stellt automatisch auf MF und dann "unendlich".


    Da das Objekt der Begierde nicht immer um 65m (genau 65535mm) zur Kamera steht, habe ich mit Hilfe von "gehtnix" aus dem CHDK-Forum ein Skript bearbeitet, mit dem in komfortabler Weise die Entfernung schrittweise eingestellt werden kann.




    Dieses Skript ist auch für PAP geeignet


    Gruß Adalbert
    :)
    - Editiert von Zaunkönig am 15.09.2010, 14:27 -

    Hi,


    nachdem ich hier sehe dass euch zu CHDK eine Anleitung fehlt, schaut mal hier hin


    http://www.wirklemms.de


    Da gibt es auch eine Anleitung mit Auflistung der einzelnen Befehle. Zum Downloaden muss man eingeloggt sein.


    Wir verwenden die Version CHDK-DE die einige spezielle Befehle hat die von der internationalen Version nicht unterstützt werden. Deshalb, Skripte von der deutschen Sektion nur mit CHDK-DE nutzen.


    Am Anfang der Code-Ecke ist eine reichhaltige Sammlung von Skripten.


    Zu dem Skript vom Zaunkönig noch die Anmerkung. Eine Ixus hat keinen manuellen Fokus. Daher die Fokus-Verstellung auf diese Weise. Das Skript läuft aber auch mit Kameras die einen MF haben.


    gehtnix

    @ Florian,


    das Skrip erspart, auch wenn die Kamera einen manuellen Fokus hat, den Modus immer wieder zu ändern, wenn man sonst im Autofokus fotografiert.
    ... und zum Fernauslösen braucht du je ein Skript. ;)


    Gehtnix
    super erklärt. :H:


    Gruß Adalbert
    :)
    - Editiert von Zaunkönig am 15.09.2010, 14:06 -

    Hiho!


    Danke für das PDF, das ist echt prima! Bin gerade am überlegen, ob ich mir das mal ausdrucke...


    Sozusagen als Bettlektüre!


    Tschüss
    Tiggr (aka Marcus)

    moin moin,


    hier ist noch eine JPG-Version des Handbuchs für die Kamera.


    Die Datei auf die SD-Karte im Verzeichnis DCIM entpacken, fertig. Dann in Wiedergabe ansehen und reinzoomen.


    Da bietet sich die kleine Karte die beim Kauf der Kamera dabei war.
    Für Unterwegs immer mal die Möglichkeit was nachzulesen.


    Viel Spaß


    gehtnix

    Zitat

    Original von Gehtnix
    moin moin,


    hier ist noch eine JPG-Version des Handbuchs für die Kamera.


    gehtnix


    Ich wußte garnicht, dass es eine solche Datei gibt.


    Es fehlt nur noch, dass man dieses "Buch" auch in den "Kopf"bekommt. :D:D:D


    Gruß Adalbert


    :)

    Hiho!


    Dank des Handbuchs und dem Script von Adalbert habe ich nun auch mein Script für die Ixus 100is fertig!



    CHDK für die Ixus 100is ist noch Beta, vielleicht wird sich da noch was am Script ändern.


    Aus irgend einem Grund startet die Kamera nach dem Einschalten mit CHDK im Replay-Modus. Deswegen warte ich am Anfang des Scripts ein wenig, schalte dann auf Aufnahmemodus, und warte nochmal, um der Kamera Zeit zum Umschalten zu geben!


    Dann setze ich den Fokus auf Unendlich, das hab ich auf Adalberts Script geklaut. Eigentlich könnte ich auf das IF auch verzichten, ich weiß ja, ich bin auf einer Ixus, aber was solls, es stört nicht...


    Der Rest ist dann wieder ganz normal...


    Tschüss
    Tiggr (aka Marcus)

    moin moin,


    ich erlaube mir mal anzumerken:


    Leerzeile 8 löschen


    Zeile 12-14 kann auch gelöscht werden


    Zeile 20 löschen


    Zeile 21 nur - set_aflock 1


    Zeile 33 - wer liest das in der Luft?


    Hinter dem end immer eine Leerzeile


    Eine Ergänzung wäre noch dies:


    Zeile 38
    if z>200 then goto "panic"


    und unter end dann diese subroutine


    :panic
    shut_down
    sleep 3000
    return


    Sollte der Drachen mal runterrauschen, so drückt man lange auf den USB-Auslöser und die Kamera wird abgeschaltet. Das Objektiv wird eingefahren!


    Hier wäre für euch noch das Airwolf-Skript von Interesse.


    gehtnix

    Zitat

    Original von Gehtnix
    Zeile 33 - wer liest das in der Luft?


    Die Anzeige dient der Diagnose bei Inbetriebnahme oder Problemen.
    Hat mir bei Nachfragen / Ferndiagnosen zu meinem RC-CHDK Interface schon oft geholfen.


    Seit Anfang des Jahres ist diese Anzeige per Default ausgeschaltet, lässt sich aber zu Diagnosezwecken einschalten,
    dazu im Initialisierungskopf einfügen: (Das Script auf meiner kleinen CHDK Seite beinhaltet diese Änderung)


    Zitat

    @param d ShowTime
    @default d 0


    und die Zeile zum Anzeigen der Werte ersetzen durch:


    Zitat

    if d>0 then print "usbpower:",z


    Somit kann man durch Setzen der Variable auf > '1' die Anzeige aktivieren,
    ein Wert von '0' unterdrückt die Anzeige.

    Viele Eifelgrüße, Peter

    Hiho!


    Ich geh da mal durch! :)


    Zeile 8: Huch, wo kommt die her?


    Zeile 12-14: Tja, das do... irgendwie ist da nirgends klar gesagt, ob man den gesamten Code nochmal in do...end kappseln muss! Mal ja, mal nein, mal sagen Leute, sie hätten Fehler ohne. Egal, schadet nix.


    Grundsätzlich: Leerzeilen lasse ich zur Strukturierung drinnen! Auch wenn sie Ausführungszeit kosten. Ausführungszeit ist mir egal, und ich will so programmieren, wie man "richtig" programmiert. Das heißt sauber gegliederter Quelltext. Ich wollte mir eh mal LUA ansehen, weil Basic mit goto ist eh ein Krampf! ;) Mein Traum: Python auf der Kamera! :D


    Zeile 20 und 21: Das mit der IF-Abfrage hatte ich ja schon geschrieben, und ich gebe den Focus lieber wieder explizit frei, bevor ich ihn ändere.


    Zeile 33: Ich lese das! ;) Videoübertragung! Ist zwar wenig hilfreich, stimmt, aber schadet auch nichts! Ich seh halt gerne, was mein Script macht!


    Die abschließende Leerzeile ist wohl beim Kopieren ins Script verloren gegangen.


    Die Panic-Funktion finde ich eine nette Idee! Das bau ich noch ein!


    Ich find es schön, dass langsam doch Leben in die CHDK-KAP-Programmierung hier im Forum kommt. Ich hab in den letzten Tagen viel gelernt! Danke!


    Tschüss
    Tiggr (aka Marcus)

    moin moin,


    da halte ich dagegen. Ich geh dann auch mal durch:


    Zeile 8: Keine Panik, iss ja jetzt wech


    Zeile 12-14: do/end, dat jibbet et nich im CHDK-Handbuch! Stiftet aber bei weiteren Kopieraktionen Verwirrung wenn auf einmal ein herrenloses until sich zu dem do gesellt.


    Ansonsten, her mit der do/end-Quelle


    Leerzeile und Struktur ist schon OK. Aber das sleep 5000 ist halt unnötig. Daher dann diese 3 Zeilen, wech damit.


    Und... "Basic mit goto und Krampf", das ist aber ein schlagendes Argument für uBasic, der uBasic-Debugger. Euch muss man aber auch zum Jagen tragen


    Zeile 20 und 21: Wenn schon kopiergeklaut, dann aber richtig. Das Skript vom Zaunkönig läuft auch z.B auf einer S90. Mit "if get_nd_present<>0 then " wird nun festgestellt dass die Kamera einen ND-Filter hat, also eine IXUS ist. Da Du ja ohnehin oben ausdrücklich den Hinweis gibst dass das Skript für die IXUS ist, so ist das unnötig, schadet aber auch nicht. Es reicht "set_aflock 0/1".


    Zeile 33 OK


    gehtnix

    Hiho!


    Das mit dem do/end war mehr so das Ergebnis aus dem Studium verschiedenster Forenbeiträge... vielleicht hab ich auf die falschen gehört!


    Das zweite sleep 5000 lasse ich auf alle Fälle drin, da er nach set_record 1 das Objektiv ausfährt! Und ich will ihm Zeit lassen, das Objektiv sicher drausen zu haben, bevor ich den Fokus umstelle.


    Das erste sleep 5000 ist mehr zur Beruhigung für mich, damit die Kamera in einem stabilen Zustand ist, bevor ich das Objektiv ausfahre. Darüber lasse ich mich mir reden, aber beim Kappen hab ich ja Zeit!


    Basic ist auch mit Debugger ein Krampf! goto ist nicht umsonst in der Programmierung verpöhnt! Den Debugger wollte ich mir gestern schon installieren, aber der läuft wohl nur unter Mac und Windoof, ich bin aber mit Linux unterwegs. Aber wie schon gesagt: Debugger ist toll, aber Basic bleibt Basic! Ich bin in Python, PHP und Perl unterwegs, und nichts liest sich so schlecht wie uBasic!


    Zitat

    Zeile 20 und 21: Wenn schon kopiergeklaut, dann aber richtig. Das Skript vom Zaunkönig läuft auch z.B auf einer S90. Mit "if get_nd_present<>0 then " wird nun festgestellt dass die Kamera einen ND-Filter hat, also eine IXUS ist. Da Du ja ohnehin oben ausdrücklich den Hinweis gibst dass das Skript für die IXUS ist, so ist das unnötig, schadet aber auch nicht. Es reicht "set_aflock 0/1".


    War schon klar! Ich war nur irgendwann zu faul, das noch raus zu löschen! ;) Es schadet ja nichts, und falls ich das Script mal aus versehen auf eine andere Kamera pumpe, dann ist es schon da! :) Ist ne faule Ausrede für Faulheit, aber ich bin halt manchmal träge!


    Dafür baue ich die "Notbremse" von dir noch ein, um die Kamera auschalten zu können! Das find ich gut!


    Warum gibt es eigentlich fast nur uBasic-Scripte, und so wenig LUA? Nur weil keiner LUA kennt, oder hat das einen tieferen Sinn?


    Tschüss
    Tiggr (aka Marcus)

    Zitat

    Original von Tiggr
    Dafür baue ich die "Notbremse" von dir noch ein, um die Kamera auschalten zu können! Das find ich gut!


    Ich find's auch gut,
    aber es kann bei uns leider niemand etwas damit anfangen.....


    Der Grundgedanke von Gehtnix ist gut,
    aber leider weiss er nicht wie wir die unterschiedlichen Pulse bekommen (über RC-CHDK2)


    RC-CHDK2 liefert aber nur die 3 Impulslängen (100ms, 300ms, 500ms), mehr nicht,
    es gibt keine Möglichkeit in der Luft einen 2 sek. langen Impuls am USB Eingang zu generieren.......
    Und somit würde eh nie die Panik Funktion ausgeführt.

    Viele Eifelgrüße, Peter

    Also, das mit dem Skript ist erledigt.


    Zu uBasic: Am Anfang von CHDK stand uns nur uBasic zur Verfügung. Keine Frage dass LUA oder sonstwas mehr kann oder besser zu lesen ist. LUA kam erst später zu CHDK.


    Viel User können noch Basic. Für die ist es dann ein Leichtes hier selber zu skripten.
    Ab und An kommen ja auch neue User die gleich mit LUA skripten.


    Selber bin ich zu faul in LUA zu skripten. Es gab aber schon mal Situationen wo ich dachte, oha jetza ist es soweit. Konnte diese Notsituation aber immer elegant umschiffen. Das Skript vom Zaunkönig war ratzfatz zusammenkopiert.


    Die panic-Funktion sollte euer Hirnschmalz anregen 8-)


    gehtnix