Brauche Hilfe bei der Entwicklung meiner A540 Fernsteuerung!

Kamera-Hardware, Selbstbaufernbedienung und sonstige Hardware-Erweiterungen

Beitragvon fe50 » 30.09.2009, 13:12

Jetzt hat Schwarzkiefer ja eine Menge Stoff zum Ausprobieren...

@CHDKLover
Der Ansatz ist korrekt, funktioniert so aber nicht; die Picaxes schlucken keine geklammerten Bedingungen/Ausdrücke (zumindest nicht die kleineren Typen wie der 20M bzw. alle ausser den X1 und X2 Typen) etc. Um Dein Beispiel lauffähig zu kriegen müsste es wie folgt umgebaut werden:
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting

main:

'Warten auf Tastendruck

DO LOOP UNTIL pin0=1 OR pin1=1 OR pin2=1 OR pin3=1 OR pin4=1 OR pin5=1 OR pin6=1 OR pin7=1

'Taste merken

let b0 = pin0

let b0 = 2*pin1 + b0

let b0 = 4*pin2 + b0

let b0 = 8*pin3 + b0

let b0 = 16*pin4 + b0

let b0 = 32*pin5 + b0

let b0 = 64*pin6 + b0

let b0 = 128*pin7 + b0

'Warten bis Taste losgelassen

DO LOOP UNTIL pin0=0 AND pin1=0 AND pin2=0 AND pin3=0 AND pin4=0 AND pin5=0 AND pin6=0 AND pin7=0

'gemerkte Teste auswerten

high 1

SELECT CASE b0

  CASE 1

    pause 100

  case 2

    pause 150

  case 4

    pause 200

  case 8

    pause 250

  case 16

    pause 300

  case 32

    pause 350

  case 64

    pause 400

  else

    'undefined

  endselect  

low 1

goto main
Erstellt in 0.008 Sekunden, mit GeSHi 1.0.8.9

Der Nachteil ist, dass keine Dauerfunktion (also Halten einer Taste, sinnvoll z.B. beim zoomen) möglich ist, zudem ist der Speicherbedarf etwas höher: 163 von 256 Bytes, die einzel-if Lösung benötigt mit 96 Bytes deutlich weniger; das ist allerdings unrelevant, solange der Speicher nicht benötigt wird.

Die Picaxes sind dennoch recht flexibel, auch wenn sie auf Spaghetti-Code stehen, keine Klammern mögen, nur Ganzzahlen wollen und strikt von links nach rechts rechnen...
Optimierungsmöglichkeiten gibt's hier viele, z.B. in Bezug auf die Batterielaufzeit; längere Pausen können z.B. mit nap gelöst werden, am elegantesten wäre das Ganze jedoch als Interrupt-Lösung: einfach eine Dauer-Stromsparschleife fahren und bei Tastendruck in die Auswerteschleife gehen - der 20M kann aber leider im Interrupt-Betrieb nur 5 Eingänge verwenden...
Dateianhänge
chdk_remote_demo_20m.bas
Demo Sourcecode für CHDK Remote mit 7 Inputs, für Picaxe 20M
(814 Bytes) 346-mal heruntergeladen
◄"The grass was greener, The light was brighter"►  ◄fe50 home►  ◄TRAIL-Magazin►  ◄RTFM !►
Benutzeravatar
fe50
CHDK-Legende
CHDK-Legende
 
Beiträge: 1106
Registriert: 25.04.2008, 14:28
Wohnort: B'Württemberg
Kamera(s): Ixus50 101b, Ixus860 100c, SX10 101a

Beitragvon CHDKLover » 30.09.2009, 13:23

Danke fe50,
jetzt hab ich es auch verstanden. Bei den Atmels konnte man auch schön auf den ganzen Port zugreifen, dann währe es viel kürzer gegangen.
Mit dem Zoomen hab ich mir schon fasst gedacht.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon Schwarzkiefer » 30.09.2009, 15:39

Hallo @all:

Erst mal Danke ich euch für die tolle Resonanz. Ich mach mich jetzt gleich ans Werk und werde die verschieden Lösungsansätze probieren. Dann wird es (hoffentlich) auch funktionieren. Aber warum sollte es das auch nicht :D

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

Beitragvon Schwarzkiefer » 09.10.2009, 17:43

Hallo,

meine Fernsteuerung läuft endlich hardwareseitig. Womit ich jetzt noch große Probleme habe, ist das Erstellen des CHDK-Skripts. Ich hab zwar schon mehrfach im CHDK-Handbuch gelesen, komme da aber auf keinen grünen Zweig, Es wäre super, wenn Ihr mir auch noch beim Script helfen könntet.

Nochmals die Zeiten meiner Fernsteuerung und die dafür gewünschten Funktionen für die Canon A540:

100ms: Kamera soll fokussieren und dann auslösen
150ms: Manuellen Weißabgleich
200ms: EV-Korrektur -
250ms: EV-Korrektur +
300ms: Zoom -
350ms: Zoom +
400ms: Blende - (weiter schließen)
450ms: Blende + (weiter öffnen)


Ich weiß vor allem nicht, wei ich die speziellen Funktionen verwirklichen soll. Mein Ansatz (wenn man das überhaupt als Ansatz bezeichnen kann) wäre folgender:

while 1

p=get_usb_power
sleep 200

If p>8 then shoot endif
If p>13 then ?
If p>18 then ?
If p>23 then ?
if p>28 then click "zoom_in" endif
if p>33 then "zoom_out" endif
if p>38 then ?
if p>43 then ?
wend

end


Es wäre also wirklich super, wenn Ihr mir beim Script helfen könntet. In die Kamera werde ich es dann hoffentlich schon bekommen.

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

Beitragvon didi » 10.10.2009, 12:01

hallo schwarzkiefer,

schön das deine hardware jetzt funktioniert.
aber verrate uns doch mal wie dein softwareproblem
mit dem picaxe 20 gelöst wurde.

skript findes du hier: viewtopic.php?t=1453

du müsstes das nur nach deinen möglichkeiten und wünschen umschreiben.

gruss
Powershot a720 IS mit CHDK-DE-Version
- CHDK Fernbedienung mit 3 Tasten -
Benutzeravatar
didi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 116
Registriert: 19.04.2008, 14:24
Wohnort: Petershagen / OWL
Kamera(s): Powershot A720 1.0c

Beitragvon Schwarzkiefer » 10.10.2009, 20:55

Hallo didi,

danke für deine Antwort. Dein Link bringt mich aber leider auch irgendwie nicht wirklich weiter.
Womit ich Probleme habe, ist die Skripts zu lesen. Ich kann vom Inhalt her schwer sagen, was ich brauche und was nicht. Ich bin leider nicht so erfahren mit CHDK. Im Handbuch habe ich natürlich schon gelesen.

Und ich habe keine Ahnung, wie ich den manuellen Weißabgleich über CHDK dürchführe und auch bei den anderen Funktionen bin ich etwas am rätseln.

Ganz toll fände ich es, wenn jemand von euch so lieb wäre und mir ein passendes Script "maßanfertigt".

Ich habe mich beim Picaxe-Programm für den einfachsten Aufbau entschieden:

' Wait until switch press
main:
if pin0 = 1 then
high 1
pause 80
low 1
pause 1920
end if

if pin1 = 1 then
high 1
pause 120
low 1
pause 1880
end if

if pin2 = 1 then
high 1
pause 160
low 1
pause 1340
end if

if pin3 = 1 then
high 1
pause 200
low 1
pause 1300
end if

if pin4 = 1 then
high 1
pause 240
low 1
pause 1260
end if

if pin5 = 1 then
high 1
pause 280
low 1
pause 1220
end if

if pin6 = 1 then
high 1
pause 320
low 1
pause 1180
end if

if pin7 = 1 then
high 1
pause 360
low 1
pause 1140
end if

goto main


Ich denke, es müsste so funktionieren. In der Praxis konnte ich es aber noch nicht testen, da ich ja noch kein funktionsfähiges CHDK-Skript habe.

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

Beitragvon didi » 11.10.2009, 12:55

hallo schwarzkiefer,

du musst jetzt deine hardware prüfen.
mit einem skript remote-tester.

viewtopic.php?t=335
hiermit bekommst du die werte deiner fernbedienung gezeigt.
danach kannst du anfangen dir ein skript zuschreiben.

viewtopic.php?t=1453
hier kannst du dir ein passendes skript ansehen.

braucht nur noch umschreiben und fertig.

gruss
Powershot a720 IS mit CHDK-DE-Version
- CHDK Fernbedienung mit 3 Tasten -
Benutzeravatar
didi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 116
Registriert: 19.04.2008, 14:24
Wohnort: Petershagen / OWL
Kamera(s): Powershot A720 1.0c

Beitragvon Schwarzkiefer » 16.10.2009, 13:02

Hallo!

Ich brauche unbedingt nochmals eure Hilfe!!! Ich komme mit meinem CHDK-Skript einfach nicht weiter. Ich bin das Handbuch jetzt schon mehrfach durchgegangen und habe auch alle Beiträge der "Technik-Ecke" durchgelesen. Aber ein eigenes funktionsfähiges Skript, welches ich zudem noch verstehe, bringe ich einfach nicht zu stande. Ich stelle mich wahrscheinlich einfach nur zu blöd an. Ich weiß jedenfalls nicht mehr weiter und bin langsam am verzweifeln.

Was ich allenfalls zusammen binge, ist das Auslösen. Bei Sachen wie Weißabgleich, EV +/-, Blende, etc. setzt es dann bei meinen Fähigkeiten völlig aus.

Die Zeiten welche die Kamera misst, habe ich jetzt ermittelt:

1. Auslöser: 9-10
2. manueller Weißabgleich: 14-15
3. EV Korrektur - : 19-20
4. EV Korrektur + : 24-25
5. Zoom - : 29-30
6. Zoom + : 34-35
7. Blende - : 39-40
8. Blende + : 43-45

Aber das Skript bekomme ich wie gesagt alleine nicht hin. Ich möchte nochmals darum betteln, das mir bitte jemand ein passendes Skript schreibt. Für einen der im Erstellen von Skripts für CHDK fit ist, dürfte das ja keine große Herausforderung sein. Für diese Hilfe wäre ich überaus dankbar.

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

Beitragvon didi » 16.10.2009, 14:33

hallo schwarzkiefer,

ich habe ein a720is und kann dir nur mitteilen was für skripte und einstellungen
bei mir laufen.

siehe seite 65 vom chdk handbuch - in den einstellung muss die funktion der
fernbedienung deaktiviert sein!.

bei mir hab ich die autostartfunktion aktiviert.

ich benutze folgendes skript für meine fernbedienungen
die funktionen für auslösen zoom in und zoom out kannst du so übernehmen
aber wie man den weissabgleich, ev korrektur und blende da musst du nochmal
die anderen fragen.

Code: Alles auswählen
@title USB-Fernbedieung

while 1
   do
      a = get_usb_power
   until a>0
   if a <=9 then gosub "ch1down" else if a <=17 then gosub "ch2mid" else if a <=25 then gosub "ch2up" else if a <=33 then gosub "ch2down" else if a <=41 then gosub "ch1up" else if a <=49 then gosub "ch1mid" else print "error"
   endif
wend
end

:ch1up   
   shoot
   return

:ch1mid
   print a
   print "Menu-Taste"
   print "Funktion: Shoot-half"
   press "shoot_half"
   sleep 1000
   release "shoot_half"   
   cls
   return

:ch1down
   print a
   print "Taste: I<<"
   print "Funktion: -zoom-out"
   press "zoom_out"
   sleep 250
   release "zoom_out"   
   cls   
   return

:ch2up
   print a
   print "Taste: +"
   print "Funktion: +++zoom-in"
   press "zoom_in"
   sleep 500
   release "zoom_in"   
   cls   
   return

:ch2mid
   print a
   print "Taste: >>I"
   print "Funktion: +zoom-in"
   press "zoom_in"
   sleep 250
   release "zoom_in"
   cls
   return

:ch2down
   print a
   print "Taste: -"
   print "Funktion: ---zoom-out"
   press "zoom_out"
   sleep 500
   release "zoom_out"   
   cls   
   return

return



gruss
Powershot a720 IS mit CHDK-DE-Version
- CHDK Fernbedienung mit 3 Tasten -
Benutzeravatar
didi
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 116
Registriert: 19.04.2008, 14:24
Wohnort: Petershagen / OWL
Kamera(s): Powershot A720 1.0c

Beitragvon gehtnix » 16.10.2009, 14:58

didi hat geschrieben:if a <=9 then gosub "ch1down" else if a <=17 then gosub "ch2mid" else if a <=25 then gosub "ch2up" else if a <=33 then gosub "ch2down" else if a <=41 then gosub "ch1up" else if a <=49 then gosub "ch1mid" else print "error"
endif
Baut mal dieses If-Monster um, das ist fehlerhaft. Der Fehler tritt bei "else print error" auf.

Code: Alles auswählen
   do
      p = get_usb_power
   until p>0
   select p
      case 1 to 50; gosub "button1"
      case 51 to 100; gosub "button2"
      case 101 to 150; gosub "button3"
      case 151 to 200; gosub "button4"
      case_else; gosub "error"
   end_select


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 msl » 16.10.2009, 15:29

Hallo,

ich würde auch Tastaturbefehle vermeiden.

Für das Zooming kann man set_zoom_rel verwenden. Damit kann man mit einem Einzeiler das Zoomen organisieren. Je nach dem, ob der Wert positiv oder negativ ist, wird hinein oder heraus gezoomt. Die Höhe des Wertes bestimmt die Schrittweite.

für Ev-Schritte benutzt man den Befehl set_ev in 32er Schritten (1/3 Ev) ausgehend von 0 oder vom eingestellten Ev-Wert, den man mit get_ev auslesen kann.

Die Blende läßt sich mit set_av oder set_av96 manipulieren. Notwendige Werte stehen im Handbuch im Anhang.

Ein manueller Weißabgleich ist per Skript nicht machbar! <- Edit: Falsch, es ist bedingt machbar!

Gruß msl
Zuletzt geändert von msl am 17.10.2009, 10:30, insgesamt 1-mal geändert.
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 Schwarzkiefer » 16.10.2009, 17:11

Hallo,

danke für die Antworten. Momentan helfen mir diese aber leider auch nicht wirklich weiter. Ich bin nach wie vor ratlos. Ich habe jetzt schon dutzende Male versucht, diverse Skripts in die Kamera zu bekommen. Leider ohne Erfolg. Die Skripts werden dann abgebrochen, weil diese fehlerhaft sind. Wenn ich mir also selber ein Skript "schreibe" (besser gesagt zusammen kopiere), dann wird daraus nichts. Ich hoffe noch, dass hier mal jemand ein für meine bedürfnisse passendes Skript postet, sodass ich höchstens noch Kleinigkeiten anpassen muss.

Zwecks Weißabgleich: Gibt es denn da überkaupt keine Möglichkeit? Diese Funktion wollte ich nämlich unbedingt haben. Ich kann ja über "Set" den manuellen Weißabgleich anwählen und dann mit der Taste "Menü" diesen auch durchführen. Kann man da im Skript etwas basteln, was dies übernimmt???

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

Beitragvon msl » 16.10.2009, 18:17

Schwarzkiefer hat geschrieben:Zwecks Weißabgleich: Gibt es denn da überkaupt keine Möglichkeit? Diese Funktion wollte ich nämlich unbedingt haben. Ich kann ja über "Set" den manuellen Weißabgleich anwählen und dann mit der Taste "Menü" diesen auch durchführen. Kann man da im Skript etwas basteln, was dies übernimmt???


Sicherlich ist das die Notvariante und einzige Möglichkeit, den Weißabgleich mit ins Spiel zu bringen. Das passiert dann aber mit Verzögerung, ehe alles durchgeklickert wurde. Außerdem benötigst Du immer einen definierten Startpunkt. Aber machbar ist es. Gibt es einen bestimmten Grund, dass Du unbedingt den Weißabgleich mit dabei haben möchtest?

Schwarzkiefer hat geschrieben:Ich bin nach wie vor ratlos. Ich habe jetzt schon dutzende Male versucht, diverse Skripts in die Kamera zu bekommen. Leider ohne Erfolg. Die Skripts werden dann abgebrochen, weil diese fehlerhaft sind.

Dann fang doch mal mit einem konkreten Skript an. Das Shooting hast Du schon realisiert. gehtnix hat Dir die Verzweigung vorgegeben. Wenn Du nicht weiterkommst, poste das konkrete Skript hier als Beispiel. Dann kann Dir weitergeholfen werden.

Erwarte hier keine fertige Lösung. Dazu müsste man auch die Fernbedienung zum Probieren bei der Hand haben. Ein Skripter kann immer nur mit der eigenen Hardware testen. Es nützt Dir nichts, wenn ich Dir etwas zusammenschreibe, was bei mir läuft. Deine Kamera kann aber vielleicht damit nichts anfangen, weil es Abweichungen bei der Software gibt.

Wenn Du es selbst mit Unterstützung entwickeltst, verstehst Du es später auch besser und kannst Veränderungen vornehmen.

Also ran ans Werk. Deine Fernbedienung hast Du doch auch hinbekommen.

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 msl » 16.10.2009, 20:18

Nachtrag

Unter bestimmten Umständen kann der Weißabgleich gesteuert werden. Meine Aussage war nicht ganz richtig. Es gibt eine Propcase-Variable, die wenigstens den Zusatnd anzeigt.

Und hier zum Einstieg das Test-Skript zur Überprüfung Deiner Fernbedienung. Ich weiß aber nicht, ob es wirklich funktioniert. uBasic ist nicht so mein Ding. ;)

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



while 1



do

    p = get_usb_power

until p>0



select p

    case  9 to 10; print "Auslöser"

    case 14 to 15; print "WB"

    case 19 to 20; print "Ev -"

    case 24 to 25; print "EV +"

    case 34 to 35; print "Zoom -"

    case 39 to 40; print "Zoom +"

    case 39 to 40; print "Av -"

    case 43 to 45; print "Av +"

    case_else;     print "Fehler"

end_select



wend



end



 
Erstellt in 0.007 Sekunden, mit GeSHi 1.0.8.9


Wenn das funktioniert, können wir ins Detail gehen.

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 Schwarzkiefer » 16.10.2009, 20:52

Hallo msl,

danke für deine tollen Antworten. Deine letzten beiden Postings haben mir so richtig weitergeholfen. Herzlichen Dank für die mutmachenden Worte! Zu deiner Frage, wofür ich den Weißabgleich denn eigentlich brauche: Im Startposting erwähnte ich bereits, dass ich die Kamera an einem Mikroskop betreibe. CHDK ist da eine super Lösung um die Kamera fernzusteuern. Per Hand auslösen würde die Bilder nur verwackeln. Ein korrekt durchgeführter Weißabgleich ist für ein gutes Mikrofoto unerlässlich. Das liegt daran, dass die Lichtsituation am Mikroskop für eine Digitalkamera nicht gerade optimal ist. Schlechter Weißabgleich gibt schlechte Fotos.

Ich habe jetzt ein Script, welches teilweise funktioniert. Zwar mit einer ellenlangen if-Schleife, aber besser als nichts. Es funktionieren der Auslöser und das Zoomen. Die EV Korrektur wird aber noch nicht durchgeführt, aber zumindest schon mal per "print" angezeigt. Wie ging das nochmal mit der Blendenkorrektur?

@title CHDK Remote Script

while 1
do
a = get_usb_power
until a>0
if a <=10 then gosub "ch1up" else if a <=15 then gosub "ch1mid" else if a <=20 then gosub "ch1down" else if a <=25 then gosub "ch2up" else if a <=30 then gosub "ch2mid" else if a <=35 then gosub "ch2down" else if a <=40 then gosub "ch3up" else if a <=45 then gosub "ch3mid" else print "error"
endif
wend
end

:ch1up
print "Auslöser"
shoot
return

:ch1mid
print "WB"
BAUSTELLE FÃœR MANUELLEN WEISSABGLEICH
return

:ch1down
print "EV -"
set_ev -32 --> geht noch nicht
return

:ch2up
print "EV +"
set_ev 32 --> geht noch nicht
return

:ch2mid
print "Zoom -"
set_zoom_rel -1
return

:ch2down
print "Zoom +"
set_zoom_rel 1
return

:ch3up
print "AV -"
BAUSTELLE FÃœR BLENDE -
return

:ch3mid
print "AV +"
BAUSTELLE FÃœR BLENDE +
return

return



Dein Test-Skript habe ich mal eingegeben (deine Zahlenfehler bei den Zeiten habe ich korrigiert). Dieses Skript ist voll funktionsfähig. Alle Befehle werden auf dem Display angezeigt. Daher: Test bestanden!

Jetzt bin ich mal gespannt ob wir das funktionsfähig kriegen!

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

VorherigeNächste

Zurück zu Technik-Ecke

Wer ist online?

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

cron