Wouah a écrit:Je n'ai pas vu ce sujet sur le forum...mais il existe peut-être car il date un peu?
Wouah a écrit:(impossible de poster à ce post le fichier en .bas)
Wouah a écrit:Ci dessous le fichier CHDK que j'ai sur ma carte et qui ne fonctionne pas
rem prends une photo (ça me sert à voir si le script est bien lancé)
shoot
Wouah a écrit:- Quels sont les fils du récepteur radio qui sont branchés à l'arduino et sur quelles broches?
- Quels sont les fils et de quelles broches de l'arduino , vont vers la prise micro usb
Wouah a écrit:Donc si vous avez déjà utilisé ce système ou si vous avez des infos, des photos de votre montage je suis preneur...
// commande du zoom et du déclenchement d'un appareil photo (canon s95) via chdk
int mesure_voie6; // voie pour la mesure du zoom
int mesure_voie8; // voie pour le déclenchement de l'appareil photo
int niveau_zoom; // initialisation de la variable "niveau_zoom"
int exniveau_zoom; // initialisation de la variable "exniveau_zoom"
int i; // initialisation de la variable "i"
int t; // initialisation de la variable "t"
void setup() {
// choix des entrée d2 et d3 de l'arduino
pinMode(2, INPUT); // La broche 2 de l'arduino est une entrée ( surveille voie 8 )
pinMode(3, INPUT); // La broche 3 de l'arduino est une entrée( surveille voie 6 )
pinMode(5, OUTPUT); // La broche 5 de l'arduino est une sortie( vers appareil photo )
Serial.begin(9600); // Communique avec le port série à une vitesse de 9600
}
Wouah a écrit:- faut-il brancher quelque part les 2 autres fils le - et le + des 2 voies ? si non, comment le signal peut-il fonctionner?
Wouah a écrit:- Comment alimenter l'arduino?
Wouah a écrit:Une fois que le montage sera bon je vais refaire un essai le fonctionnement avec le CHDK.
Wouah a écrit:Ce que je ne comprend pour le script CHDK, c'est que je n'ai rien de marqué dans le menu, sous le titre ARDUCHDK, alors que le script est bien chargé! il y a juste indiqué Retour
@title Test ArduCHDK
print "Script started"
:debut
do
a=get_usb_power
until a>0
print "a=", a
sleep 100
goto "debut"
//2013-daniel wambach - www.macrogoutte.com - tarrinos@free.fr
// commande du zoom et du déclenchement d'un appareil photo (canon s95) via chdk
int mesure_voie6; // voie pour la mesure du zoom
int mesure_voie8; // voie pour le déclenchement de l'appareil photo
int niveau_zoom; // initialisation de la variable "niveau_zoom"
int exniveau_zoom; // initialisation de la variable "exniveau_zoom"
int i; // initialisation de la variable "i"
int t; // initialisation de la variable "t"
void setup() {
// choix des entrée d2 et d3 de l'arduino
pinMode(2, INPUT); // La broche 2 de l'arduino est une entrée ( surveille voie 8 )
pinMode(3, INPUT); // La broche 3 de l'arduino est une entrée( surveille voie 6 )
pinMode(5, OUTPUT); // La broche 5 de l'arduino est une sortie( vers appareil photo )
Serial.begin(9600); // Communique avec le port série à une vitesse de 9600
}
void loop() {
debut:
// mesure l'interrupteur dédié au déclenchement sur ma radiocommande
mesure_voie8 = pulseIn(2, HIGH); // Mesure la taille de l'impulsion sur la voie 8
if (mesure_voie8>1500){ // Si la taille de cette impulsion est supérieur à 1500 alors :
digitalWrite(5,HIGH); // commence une impulsion sur la broche 5 (front montant)
delay(300); // Pendant 300 ms
digitalWrite(5,LOW); // arrête cette impulsion (front descendant)
delay (100); // faits une pause de 100 ms
}
// mesure le potentiomètre dédié au zoom sur ma radiocommande
delay (500);
mesure_voie6 = pulseIn(3, HIGH);// Mesure la taille de l'impulsion sur la voie 6
delay (10);
Serial.print("mesure_voie6="); // Ecris sur le port série "mesure_voie6="
Serial.println(mesure_voie6); // Ecris sur le port série la valeur mesurée sur la voie 6
// Donne le niveau de zoom suivant les largeurs des impulsions mesurées sur le récepteur voie 6
// J'ai affiné ces chiffres en testant différentes positions de mon potentiomètre cranté
// Mais en gros si on à 1ms pour un zoom à 10(téléobjectif) et 2ms pour un zoom à 0(grand angle)
// 2ms-1ms = 1ms; 1ms/10 = 100 micro/sec
// donc sans affiner : zoom1=1900; zoom2=1800; zoom3=1700 etc.
// Mais à vous de mieux régler ...
// Pour moi :
if (mesure_voie6<1936) niveau_zoom=1; // Si la valeur mesurée sur la voie 6 est supérieure à 1936 alors zoom=1
if (mesure_voie6<1863) niveau_zoom=2; // Si la valeur mesurée sur la voie 6 est supérieure à 1863alors zoom=2
if (mesure_voie6<1765) niveau_zoom=3; // Si la valeur mesurée sur la voie 6 est supérieure à 1765 alors zoom=3
if (mesure_voie6<1681) niveau_zoom=4; // Si la valeur mesurée sur la voie 6 est supérieure à 1681 alors zoom=4
if (mesure_voie6<1602) niveau_zoom=5; // Si la valeur mesurée sur la voie 6 est supérieure à 1602 alors zoom=5
if (mesure_voie6<1518) niveau_zoom=6; // Si la valeur mesurée sur la voie 6 est supérieure à 1518 alors zoom=6
if (mesure_voie6<1443) niveau_zoom=7; // Si la valeur mesurée sur la voie 6 est supérieure à 1443 alors zoom=7
if (mesure_voie6<1359) niveau_zoom=8; // Si la valeur mesurée sur la voie 6 est supérieure à 1359 alors zoom=8
if (mesure_voie6<1274) niveau_zoom=9; // Si la valeur mesurée sur la voie 6 est supérieure à 1274 alors zoom=9
if (mesure_voie6<1191) niveau_zoom=10;// Si la valeur mesurée sur la voie 6 est supérieure à 1191 alors zoom=10
Serial.print("niveau_zoom");// Ecris sur le port série "niveau_zoom="
Serial.println(niveau_zoom);// Ecris sur le port série la valeur de "niveau_zoom"
if (exniveau_zoom==niveau_zoom) {
goto debut;
}// si il n'y a pas de changement, retourne au début du script
exniveau_zoom = niveau_zoom;
// bit de start pour dire à l'appareil photo qu'il peut commencer à compter le nombre d'impulsion correspondant au niveau de zoom
digitalWrite(5,HIGH); // Mets la broche 5 à 1 (commence l'impulsion(front montant))
delay(200); // Pendant 200ms "bit de start"
digitalWrite(5,LOW); // Mets la broche 5 à 0 (arrête l'impulsion(front descendant))
delay (100); // une pause de 100ms
// Envoie un nombre d'impulsion correspondant au niveau du zoom
i=0;
while (i<niveau_zoom){ // Tant que le nombre d'impulsion n'est pas envoyé recommence
i=i+1;
digitalWrite(5,HIGH);// commence une impulsion sur la broche 5 (front montant)
delay(50);// Pendant 50 ms
digitalWrite(5,LOW);// arréte cette impulsion (front descendant)
delay (100); // une pause de 100ms
}
// bit de stop pour dire à l'appareil photo qu'il peut arrêter de compter
digitalWrite(5,HIGH); // commence une impulsion sur la broche 5 (front montant)
delay(120); //// Pendant 120ms "bit de stop"
digitalWrite(5,LOW); //arrête cette impulsion (front descendant)
delay (100);// une pause de 100ms
}
rem déclaration des variables
rem a pour la mesure d'une impulsion
a=0
rem d pour le compteur d’impulsion
d=0
rem prends une photo (ça me sert à voir si le script est bien lancé)
shoot
rem fait une pause d'une seconde
sleep 1000
rem sous-programme début
:debut
rem si y a une impulsion alors mesure la
do
a=get_usb_power
until a>0
rem si la l'impulsion mesurée est plus grande que 24 alors va à la ligne (sous-programme) shoot du script
if a>24 then goto"shoot"
rem si l'impulsion mesurée est plus grande que 15 alors va à la ligne (sous-programme) compte du script
if a>15 then goto "compte"
rem sinon retourne à la ligne début du programme
goto "debut"
rem sous-programme compte
:compte
rem si il y a une impulsion alors mesure la
do
a=get_usb_power
until a>0
rem si la valeur mesurée est comprise entre 8 et 15 (bit de stop) va au sous programme zoom
if a>8 and a<15 then goto"zoom"
rem compteur d'impulsion=compteur d'impulsion + 1
d=d+1
rem retourne au sous-programme compte
goto "compte"
rem sous-programme zoom
:zoom
rem affiche sur l['écran de l'appareil photo (d) le niveau du zoom correspondant au nombre d'impulsion mesurée -1
print"zoom=", d-1
rem demande à l'appareil photo de faire un zoom à d-1
set_zoom d-1
rem rem et les variables à 0
a=0
d=0
rem retourne à la ligne debut
goto "debut"
rem sous-programme shoot
:shoot
rem demande à l'appareil photo de faire une photo
shoot
rem retourne à la lig
'zoom' was not declared in the scope
arduchdk.ino: In function 'void loop()':
arduchdk:55: error: 'zoom' was not declared in this scope
arduchdk:56: error: expected `;' before 'digitalWrite'
arduchdk:74: error: expected `}' at end of input
Wouah a écrit:mais une chose m'étonne tout de même...Il n'y a pas de liaison entre les (-) des 2 voies du récepteur et les GND arduino!
Wouah a écrit:pas plus pour les (+) des voies.
Wouah a écrit:Sinon j'ai re testé le fichier arduchdk.ino dans le programme arduino...voilà ce que ça m'indique....
- Code: Tout sélectionner
'zoom' was not declared in the scope
arduchdk.ino: In function 'void loop()':
arduchdk:55: error: 'zoom' was not declared in this scope
arduchdk:56: error: expected `;' before 'digitalWrite'
arduchdk:74: error: expected `}' at end of input
if (exniveau_zoom==niveau_zoom) {
goto debut;
Wouah a écrit:le script chdk semble avoir des erreur (rien ne s'affiche) ou faut-il le nommer autrement peut-être? est-ce important?
int mesure_voie6; // voie pour la mesure du zoom
int mesure_voie8; // voie pour le déclenchement de l'appareil photo
int ledPin = 13; // LED connected to digital pin 13
int niveau_zoom;
int exniveau_zoom;
int i;
int t;
void setup()
{
// choix des entrée d2 et d3 de l'arduino
pinMode(2, INPUT); // La broche 2 de l'arduino est une entrée ( surveille voie 8 )
pinMode(3, INPUT); // La broche 3 de l'arduino est une entrée( surveille voie 6 )
pinMode(5, OUTPUT); // La broche 5 de l'arduino est une sortie( vers appareil photo )
pinMode(ledPin, OUTPUT); // sets the digital pin as output
Serial.begin(9600); // Communique avec le port série à une vitesse de 9600
}
void loop()
{
debut:
mesure_voie8 = pulseIn(2, HIGH); // Mesure la taille de l'impulsion sur la voie 8
if (mesure_voie8>1500){ // Si la taille de cette impulsion est supérieur à 1500 alors :
digitalWrite(ledPin, HIGH); // sets the LED on
digitalWrite(5,HIGH); // commence une impulsion sur la broche 5 (front montant)
delay(300); // Pendant 300 ms
digitalWrite(5,LOW); // arrête cette impulsion (front descendant)
digitalWrite(ledPin, LOW); // sets the LED off
delay (100); // faits une pause de 100 ms
}
// mesure le potentiomètre dédié au zoom sur ma radiocommande
delay (500);
mesure_voie6 = pulseIn(3, HIGH);// Mesure la taille de l'impulsion sur la voie 6
delay (10);
Serial.print("mesure_voie6="); // Ecris sur le port série "mesure_voie6="
Serial.println(mesure_voie6); // Ecris sur le port série la valeur mesurée sur la voie 6
// Donne le niveau de zoom suivant les largeurs des impulsions mesurées sur le récepteur voie 6
// J'ai affiné ces chiffres en testant différentes positions de mon potentiomètre cranté
// Mais en gros si on à 1ms pour un zoom à 10(téléobjectif) et 2ms pour un zoom à 0(grand angle)
// 2ms-1ms = 1ms; 1ms/10 = 100 micro/sec
// donc sans affiner : zoom1=1900; zoom2=1800; zoom3=1700 etc.
// Mais à vous de mieux régler ... Pour moi ça donne:
if (mesure_voie6<1936) niveau_zoom=1; // Si la valeur mesurée sur la voie 6 est supérieure à 1936 alors zoom=1
if (mesure_voie6<1863) niveau_zoom=2; // Si la valeur mesurée sur la voie 6 est supérieure à 1863alors zoom=2
if (mesure_voie6<1765) niveau_zoom=3; // Si la valeur mesurée sur la voie 6 est supérieure à 1765 alors zoom=3
if (mesure_voie6<1681) niveau_zoom=4; // Si la valeur mesurée sur la voie 6 est supérieure à 1681 alors zoom=4
if (mesure_voie6<1602) niveau_zoom=5; // Si la valeur mesurée sur la voie 6 est supérieure à 1602 alors zoom=5
if (mesure_voie6<1518) niveau_zoom=6; // Si la valeur mesurée sur la voie 6 est supérieure à 1518 alors zoom=6
if (mesure_voie6<1443) niveau_zoom=7; // Si la valeur mesurée sur la voie 6 est supérieure à 1443 alors zoom=7
if (mesure_voie6<1359) niveau_zoom=8; // Si la valeur mesurée sur la voie 6 est supérieure à 1359 alors zoom=8
if (mesure_voie6<1274) niveau_zoom=9; // Si la valeur mesurée sur la voie 6 est supérieure à 1274 alors zoom=9
if (mesure_voie6<1191) niveau_zoom=10;// Si la valeur mesurée sur la voie 6 est supérieure à 1191 alors zoom=10
Serial.print("niveau_zoom");// Ecris sur le port série "niveau_zoom="
Serial.println(niveau_zoom);// Ecris sur le port série la valeur de "niveau_zoom"
// si il n'y a pas de changement, retourne au début du script
if (exniveau_zoom==niveau_zoom) goto debut;
exniveau_zoom = niveau_zoom;
digitalWrite(5,HIGH); // Mets la broche 5 à 1 (commence l'impulsion(front montant))
digitalWrite(ledPin, HIGH); // sets the LED on
delay(200); // Pendant 200ms "bit de start"
digitalWrite(5,LOW); // Mets la broche 5 à 0 (arrête l'impulsion(front descendant))
digitalWrite(ledPin, LOW); // sets the LED off
delay (100); // une pause de 100ms
// Envoie un nombre d'impulsion correspondant au niveau du zoom
i=0;
while (i<niveau_zoom){ // Tant que le nombre d'impulsion n'est pas envoyé recommence
i=i+1;
digitalWrite(5,HIGH);// commence une impulsion sur la broche 5 (front montant)
digitalWrite(ledPin, HIGH); // sets the LED on
delay(50);// Pendant 50 ms
digitalWrite(5,LOW);// arréte cette impulsion (front descendant)
digitalWrite(ledPin, LOW); // sets the LED off
delay (100); // une pause de 100ms
}
// bit de stop pour dire à l'appareil photo qu'il peut arrêter de compter
digitalWrite(5,HIGH); // commence une impulsion sur la broche 5 (front montant)
digitalWrite(ledPin, HIGH); // sets the LED on
delay(120); //// Pendant 120ms "bit de stop"
digitalWrite(5,LOW); //arrête cette impulsion (front descendant)
digitalWrite(ledPin, LOW); // sets the LED off
delay (100);// une pause de 100ms
}
@title ArduCHDK mod
@param b Debug mode
@default b 1
if b>1 then b=1
if b<0 then b=0
a=0
d=0
print "Script started..."
:debut
do
a=get_usb_power
until a>0
if b=1 then print "a=",a
if a>24 then goto "shoot"
if a>15 then goto "compte"
goto "debut"
:compte
do
a=get_usb_power
until a>0
if a>8 and a<15 then goto "zoom"
d=d+1
goto "compte"
:zoom
print "zoom=", d-1
set_zoom d-1
a=0
d=0
goto "debut"
:shoot
shoot
if b=1 then print "shoot"
goto "debut"
Et si tu appuies sur le déclencheur, comme pour prendre une photo, le script affiche bien "script started" ? (ou pas?)Wouah a écrit:
Wouah a écrit:je vais essayer avec la solution 2 alim.
Wouah a écrit:Oui mais rien ne se passe
@title ArduCHDK mod
@param b Debug mode
@default b 0
if b>1 then b=1
if b<0 then b=0
a=0
d=0
print "Script started..."
:debut
do
a=get_usb_power
until a>0
if b=1 then print "a=",a
if a>24 then goto "shoot"
if a>15 then goto "compte"
goto "debut"
:compte
do
a=get_usb_power
until a>0
if a>8 and a<15 then goto "zoom"
d=d+1
goto "compte"
:zoom
if d>10 then d=10
if d<1 then d=1
print "zoom=", d-1
set_zoom d-1
a=0
d=0
goto "debut"
:shoot
shoot
if b=1 then print "shoot"
goto "debut"
int mesure_voie6; // voie pour la mesure du zoom
int mesure_voie8; // voie pour le déclenchement de l'appareil photo
int ledPin = 13; // LED connected to digital pin 13
int niveau_zoom;
int exniveau_zoom;
int i;
int t;
int shoot_ok = 1;
void setup()
{
// choix des entrée d2 et d3 de l'arduino
pinMode(2, INPUT); // La broche 2 de l'arduino est une entrée ( surveille voie 8 )
pinMode(3, INPUT); // La broche 3 de l'arduino est une entrée( surveille voie 6 )
pinMode(5, OUTPUT); // La broche 5 de l'arduino est une sortie( vers appareil photo )
pinMode(ledPin, OUTPUT); // sets the digital pin as output
Serial.begin(9600); // Communique avec le port série à une vitesse de 9600
}
void loop()
{
debut:
mesure_voie8 = pulseIn(2, HIGH); // Mesure la taille de l'impulsion sur la voie 8
if (shoot_ok == 1){
if (mesure_voie8>1600){ // Si la taille de cette impulsion est supérieur à 1500 alors :
puls(300);
shoot_ok = 0;
} else {
shoot_ok = 1;
}
}
// mesure le potentiomètre dédié au zoom sur ma radiocommande
delay (500);
mesure_voie6 = pulseIn(3, HIGH);// Mesure la taille de l'impulsion sur la voie 6
delay (10);
Serial.print("mesure_voie6="); // Ecris sur le port série "mesure_voie6="
Serial.println(mesure_voie6); // Ecris sur le port série la valeur mesurée sur la voie 6
if (mesure_voie6<1936) niveau_zoom=1; // Si la valeur mesurée sur la voie 6 est supérieure à 1936 alors zoom=1
if (mesure_voie6<1863) niveau_zoom=2; // Si la valeur mesurée sur la voie 6 est supérieure à 1863alors zoom=2
if (mesure_voie6<1765) niveau_zoom=3; // Si la valeur mesurée sur la voie 6 est supérieure à 1765 alors zoom=3
if (mesure_voie6<1681) niveau_zoom=4; // Si la valeur mesurée sur la voie 6 est supérieure à 1681 alors zoom=4
if (mesure_voie6<1602) niveau_zoom=5; // Si la valeur mesurée sur la voie 6 est supérieure à 1602 alors zoom=5
if (mesure_voie6<1518) niveau_zoom=6; // Si la valeur mesurée sur la voie 6 est supérieure à 1518 alors zoom=6
if (mesure_voie6<1443) niveau_zoom=7; // Si la valeur mesurée sur la voie 6 est supérieure à 1443 alors zoom=7
if (mesure_voie6<1359) niveau_zoom=8; // Si la valeur mesurée sur la voie 6 est supérieure à 1359 alors zoom=8
if (mesure_voie6<1274) niveau_zoom=9; // Si la valeur mesurée sur la voie 6 est supérieure à 1274 alors zoom=9
if (mesure_voie6<1191) niveau_zoom=10;// Si la valeur mesurée sur la voie 6 est supérieure à 1191 alors zoom=10
Serial.print("niveau_zoom");// Ecris sur le port série "niveau_zoom="
Serial.println(niveau_zoom);// Ecris sur le port série la valeur de "niveau_zoom"
// si il n'y a pas de changement, retourne au début du script
if (exniveau_zoom==niveau_zoom) goto debut;
exniveau_zoom = niveau_zoom;
puls(200);
i=0;
while (i<niveau_zoom){ // Tant que le nombre d'impulsion n'est pas envoyé recommence
i=i+1;
puls(50);
}
puls(120);
}
void puls(int length) {
digitalWrite(ledPin, HIGH); // sets the LED on
digitalWrite(5,HIGH);
delay(length);
digitalWrite(5,LOW);
digitalWrite(ledPin, LOW); // sets the LED off
delay (100);
}
@title ArduCHDK mod
a=0
d=0
print "Script started..."
:debut
do
a=get_usb_power
until a>0
if a>24 then goto "shoot"
if a>15 then goto "compte"
goto "debut"
:compte
do
a=get_usb_power
until a>0
if a>8 and a<15 then goto "zoom"
d=d+1
goto "compte"
:zoom
d=d-1
if d>=10 then d=9
if d<0 then d=0
print "zoom=", d
set_zoom d
a=0
d=0
goto "debut"
:shoot
shoot
goto "debut"
Wouah a écrit:Bon de peur d'avoir des interférences de scripts, j'ai effacé les anciens et rechargé ton dernier....toujours pareil au niveau du zoom. ça plante directement au coup de zoom.
@title ArduCHDK mod
a=0
d=0
print "Script started..."
:debut
do
a=get_usb_power
until a>0
if b=1 then print "a=",a
if a>24 then goto "shoot"
if a>15 then goto "compte"
goto "debut"
:compte
do
a=get_usb_power
until a>0
if a>8 and a<15 then goto "zoom"
d=d+1
goto "compte"
:zoom
print "zoom=", d-1
a=0
d=0
goto "debut"
:shoot
shoot
if b=1 then print "shoot"
goto "debut"
Wouah a écrit:Sinon le déclenchement est systématique des que j'ai appuyé sur le déclencheur de l'apn pour lancer le script et si la radio est éteinte, ça déclenche toutes les 2 secondes....radio allumée il arrête et déclenche si je bouge le manche de la radiosi je n'allume pas la radio (fonction normale)
Wouah a écrit:aucune obligation de résultat!!
Wouah a écrit:Sinon le déclenchement est systématique des que j'ai appuyé sur le déclencheur de l'apn pour lancer le script et si la radio est éteinte, ça déclenche toutes les 2 secondes....radio allumée il arrête et déclenche si je bouge le manche de la radiosi je n'allume pas la radio (fonction normale)
Toujours ce ...... de zoom
Wouah a écrit:Sinon le déclenchement est systématique des que j'ai appuyé sur le déclencheur de l'apn pour lancer le script
Wouah a écrit:si la radio est éteinte, ça déclenche toutes les 2 secondes.
Wouah a écrit:radio allumée il arrête et déclenche si je bouge le manche de la radio
Wouah a écrit:si je n'allume pas la radio (fonction normale)
Toujours ce ...... de zoom
Wouah a écrit:Zoom: ne plante pas...mais ne bouge plus.
Wouah a écrit:Il y a seulement des valeurs en bas à gauche de l'écran de l'apn qui changent quand je bouge le manche de la radio
@title ArduCHDK mod
a=0
d=0
print "Script started..."
:debut
do
a=get_usb_power
until a>0
if a>24 then goto "shoot"
if a>15 then goto "compte"
goto "debut"
:compte
do
a=get_usb_power
until a>0
if a>8 and a<15 then goto "zoom"
d=d+1
goto "compte"
:zoom
d=d-1
if d>9 then d=9
if d<0 then d=0
print "zoom=", d
set_zoom d
sleep 1000
a=0
d=0
goto "debut"
:shoot
shoot
goto "debut"
@title Zoom Series
rem for A610/A620 (cams with 35-140mm lens)(9 zoom steps)(0 thru 8)
rem should also work with A630/A640
rem omitting some focal length choices
rem because only *TEN* params are available
@param a incl 35mm (1=yes)
@default a 1
@param b incl 45mm (1=yes)
@default b 0
@param c incl 51mm (1=yes)
@default c 1
@param d incl 60mm (1=yes)
@default d 1
@param e incl 71mm (1=yes)
@default e 1
@param f incl 83mm (1=yes)
@default f 0
@param g incl 104mm (1=yes)
@default g 1
@param h incl 140mm (1=yes)
@default h 1
let z=a+b+c+d+e+f+g+h
rem this sanity check not foolproof but...
if z<1 | z>8 then gosub "nothing"
@param i Start delay (sec)
@default i 5
@param j Start delay (min)
@default j 0
rem Change code so that "show helptext" is optional
rem if/when CHDK permits additional params.
gosub "instruct"
if w>0 then gosub "countdown"
if h=1 then shoot
if g=1 then set_zoom 7
if g=1 then shoot
if f=1 then set_zoom 6
if f=1 then shoot
if e=1 then set_zoom 5
if e=1 then shoot
if d=1 then set_zoom 4
if d=1 then shoot
if c=1 then set_zoom 3
if c=1 then shoot
if b=1 then set_zoom 2
if b=1 then shoot
rem if a=1 then set_zoom 0
rem Instead of above, let's unconditionally SET_ZOOM 0
rem so cam is at full-wide state when script ends.
set_zoom 0
if a=1 then shoot
print "***finished***"
print "."
end
:instruct
rem This scripts works with flash on or off.
rem Only 2 known preconditions/requirements:
rem -- cam cannot be set to manual focus
rem -- Menu } Review should not be set to "HOLD"
rem
print "1 shot at each selected"
print "focal length"
print "."
print "tripod use OPTIONAL"
print "paused --[ click SET ]--"
wait_click
set_zoom 8
print "begins at full zoom"
let w=j*60+i
print "(after",w;"s start delay)"
print "."
print "Frame your subject area"
print "& click [SET] when ready"
wait_click
rem blank lines scroll away previous helptext
print " "
print " "
print " "
print " "
print " "
return
:nothing
print "0 focal lengths chosen"
print "nothing to do !"
return
:countdown
rem May want to force minimum 2sec start delay here
rem to eliminate camera shake from button press.
rem (I decided it is not needed in the zoom_series script)
rem if w<2 then let w=2
for n=1 to w
let m=w-n+1
print "countdown:", m,"secs"
sleep 940
next n
rem NOTE: Loop timer, above, has been checked for accuracy
rem blank lines scroll away countdown text
print " "
print " "
print " "
print " "
print " "
return
Retourner vers L'électronique embarquée et au sol
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 13 invités