AuRiCo und CHDK

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

AuRiCo und CHDK

Beitragvon Burschilan » 08.04.2014, 14:49

Hallo,
ich bin neu hier im Forum und möchte mich einem lange bestehenden Problem widmen. Wenn ich Formatierungen falsch gemacht oder das Board Falsch gewählt habe seht es mir bitte nach, ich werde versuchen mich schnell an zu passen.

Ich möchte mit meiner A2300 Bilder von einer Drachen aus machen. Dafür habe ich ein Rig gebaut das unter dem Drachen in die Leine gehängt wird. Die Kamera soll mit Hilfe von zwei Servos dreh und neigbar sein. Die Steuerung erfolgt durch das AuRiCoSystem von Peter Engels.
Auch die Kamera soll durch das AuRiCo ausgelöst werden.

So viel zum Grundaufbau. Wenn ich nun die Kamera mit CHDK starte bekommt die Kamera wohl auch wie gewünscht ein Signal, aber leider macht sie dann keine Bilder sondern fährt das Objektiv auf und zu.

Ich wäre froh wenn mir jemand helfen kann damit ich hoffentlich schöne Luftbilder machen kann.

Mein Skript wie folgt:

Code: Alles auswählen
@title RC with MF
@param a Shoot
@default a 10
@param b ZoomIn
@default b 30
@param c ZoomOut
@default c 50

@param o TimeOffset
@default o 8

print "changing to MF"
do
    click "down"
    sleep 500
    get_prop 6 w
until w = 4

print "set focus to infinit"
set_focus 65535
sleep 500

print "ready for KAP! :-)"
do

  do
   z = get_usb_power
  until z>0

  print "usbpower: ",z

  if z>(a-o) and z<(a+o) then shoot
  if z>(b-o) and z<(b+o) then click "zoom_out"
  if z>(c-o) and z<(c+o) then click "zoom_in"

until is_key "set"

end


Danke schon mal für eure Hilfe!

PS: Das Skript ist nicht auf meinem Mist gewachsen sondern ist von einem KAper, ich glaube für seine S90, entliehen
Burschilan
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 1
Registriert: 08.04.2014, 14:21
Kamera(s): A2300

Re: AuRiCo und CHDK

Beitragvon Werner_O » 10.04.2014, 11:06

Hallo Burschilan,

zunächst einmal herzlich willkommen hier im Forum!

Leider verstehe ich das Aurico-System nicht wirklich, und eine genaue Dokumentation dazu bzgl. Kameransteuerung via USB-Impuls ist leider nicht vorhanden. Auch Du schreibst dazu leider viel zuwenig. Anscheinend scheinst Du ja immerhin gezielt rein- oder rauszoomen zu können, oder ist bereits diese Annahme falsch? Machst Du das über eine Funkfernsteuerung oder wie ? Fragen über Fragen...

So bleibt mir zunächst nur eine Analyse des von Dir verwendeten Skriptes:

1) Dieses erzwingt zunächst den MF-Modus und setzt den Fokus auf unendlich, Zeilen:
Code: Alles auswählen
print "changing to MF"
do
    click "down"
    sleep 500
    get_prop 6 w
until w = 4

print "set focus to infinit"
set_focus 65535
sleep 500

Bereits hier frage ich mich, ob das immer sinnvoll ist, da so keine scharfen Aufnahmen von näheren Objekten möglich sind. Das könnte man in einem geänderten Skript auch optional machen, stattdessen auch die sogenannte "hyperfokale Distanz" einstellen usw. usf.

2) Anschließend wird in einer Endlosschleife der USB-Port bzgl. dort ankommender Spannungsimpulse abgefragt. Abhängig von der Länge eines erkannten Impulses (z) , wobei anscheinend drei unterschiedlich lange Impulslängen (siehe Definitionen für a[Shoot], b[Zoom-Out], c[Zoom-In] und o[Offset] sowie die Schleifenabfragen) erwartet werden, wird dann eine der folgenden Aktionen ausgeführt:
a) Shoot
Dieser Fall tritt bei einer gemessenen Impulslänge von 30-170 ms (z = 3-17) auf
Code: Alles auswählen
if z>(a-o) and z<(a+o) then shoot

a ist ja = 10 (100 ms) und o = 8 (80 ms)
b) Zoom-Out
Dieser Fall tritt bei einer gemessenen Impulslänge von 230-370 ms (z = 23-37) auf
Code: Alles auswählen
if z>(b-o) and z<(b+o) then click "zoom_out"

b ist ja = 30 (300 ms) und o = 8 (80 ms)
c) Zoom-In
Dieser Fall tritt bei einer gemessenen Impulslänge von 430-570 ms (z = 43-57) auf
Code: Alles auswählen
if z>(b-o) and z<(b+o) then click "zoom_out"

c ist ja = 50 (500 ms) und o = 8 (80 ms)

Eines ist somit jetzt schon klar:
Deine Kamera macht deshalb keine Bilder, weil der Fall gemessene USB-Impulslänge = 30-170 ms nie eintritt.
Bitte überprüfe darum, welche gemessenen USB-Impulszeiten z Dein Skript anzeigt, siehe
Code: Alles auswählen
print "usbpower: ",z

Diese Zeile sorgt am Display unten links für die Ausgabe "usbpower: (Wert für z)"
Hinweis: bitte mache immer mehrere Tests, da die Impulslängen bisher noch nicht wirklich genau abgefragt werden können und immer in einem Bereich von/bis liegen!

Für den Fall, daß diese Ausgaben im Skript zu kurz sind um sie ablesen können, findest Du nachfolgend ein einfaches Lua-Skript, welches nur die vom Aurico-Modul gesendeten USB-Impulslängen misst, anzeigt und danach jeweils eine Pause (Default: 3 sec; Voreinstellbar: 1-5 sec) zum Ablesen einlegt. Weil es ein Skript in der Sprache Lua ist, muß es zwingend mit der Dateiendung *.lua gespeichert werden, bspw. mit dem Namen "Usb-Test.lua":
Code: Alles auswählen
--[[
*********************
USB Impulse Test v1.0
Date: 2014/04/10
Licence: GPL
Author: Werner_O
*********************
@title USB Impulse Test
@param s Sleep Time (sec)
@default s 3
@range s 1 5
]]

time = s * 1000

print("USB Impulse Test:")
print("Waiting for USB Impulse")

while true do
    repeat
        z = get_usb_power()
    until z > 0
    cls()
    print("USB Impulse recognized:")
    print(string.format("Impulse Length = %d0 ms", z))
    sleep(time)
    cls()
    print("USB Impulse Test:")
    print("Waiting for USB Impulse")
end


Soviel zunächst von mir. Ohne wesentlich genauere Infos von Dir kann ich Dir aber vermutlich nicht wirklich weiterhelfen.

Liebe Grüße
Werner_O
Benutzeravatar
Werner_O
CHDK-Legende
CHDK-Legende
 
Beiträge: 1014
Registriert: 22.10.2010, 14:12
Wohnort: Köln
Kamera(s): SX20 1.02d
SX240 1.01a
S100 1.01a
S3 1.00a


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast