tarrinos a écrit:- Je lance le chdk et lorsque que je presse le bouton rien ne se passe
tarrinos a écrit:Faut-il obligatoirement réaliser un script ???
tarrinos a écrit:Et comment actionner le zoom ???
tarrinos a écrit:
1 press = zoom in (...)
C'est le nombre de pression à exercer sur le poussoir ??
tarrinos a écrit:Je pense donc brancher 2 voies de mon récepteur dessus et interpréter le signal pour déclencher et/ou zoomer.
while 1
do
a = get_usb_power
until a>0
print a
sleep 500
wend
while 1
do
a = get_usb_power
until a>0
if a < 150 then gosub "action1"
if a > 149 then gosub "action2"
wend
end
:action1
print "action 1"
return
:action2
print "action 2"
return
while 1
do
a = get_usb_power
until a>0
if a < 5 then gosub "ch1up"
if a > 4 and a < 8 then gosub "ch1mid"
if a > 7 and a < 11 then gosub "ch1down"
if a > 10 and a < 14 then gosub "ch2up"
if a > 13 and a < 17 then gosub "ch2mid"
if a > 16 and a < 20 then gosub "ch2down"
if a > 19 then print "error"
wend
end
:ch1up
print "channel 1 up"
return
:ch1mid
print "channel 1 middle"
return
:ch1down
print "channel 1 down"
return
:ch2up
print "channel 2 up"
return
:ch2mid
print "channel 2 middle"
return
:ch2down
print "channel 2 down"
return
Deltakap a écrit:Bonjour Dan,
Houlà, ça fait un tas de questions d'un coup
Oui, j'aurais peu être du le faire en plusieurs questions ...tarrinos a écrit:- Je lance le shdk et lorsque que je presse le bouton rien ne se passe
Dans le menu chdk, il faut que tu actives le "enable remote"
c'est dans "miscellanous stuff", puis "remote parameters" et là il faut cocher "enable remote".
ca devrait maintenant fonctionner (chdk actif) en appuyant sur ton bouton.
Non, ça ne marche pas ... (version 1.00K du firmware sur s95 + chdk 1.1 ou 1.2)
- enable remote validé depuis le début
- switch type, tout essayé
- controle mode, tout essayé
Et rien ne se passe quand j’appuie sur mon poussoir 5v (script (boucle vide) lancer ou pas ...) C'est peu être normal ? ou un mauvais réglage, problème de jeunesse du s95 ou du firmware 1.00k ?????
Si quelqu'un avec le même matériel et logiciel pouvait faire des essais similaires
Par contre la seule chose qui fonctionne depuis le début, c'est le démarrage auto du script ! Quand je presse sur le bouton poussoir le script ce lance !!!! Et là c'est bingotarrinos a écrit:Faut-il obligatoirement réaliser un script ???
Avec ton bouton, en principe non (après la manip ci-dessus). Pour ton projet, oui.
Ba là du coup , je n'ai pas le choix.tarrinos a écrit:Et comment actionner le zoom ???
Des tests sont en cours sur le S95 avec Yvo ici: viewtopic.php?f=3&t=4427
et on se rapproche d'un script avec zoom (et autokap pour l'instant) qui fonctionne sur le S95
ça va bien m'aidertarrinos a écrit:
1 press = zoom in (...)
C'est le nombre de pression à exercer sur le poussoir ??
En fait non, c'est la durée et pas le nombre qui va compter.
Les commandes que va recevoir le script du Canon sont des impulsions de durée bien précise, durée qui dépend du canal activé sur la télécommande.
Par exemple, si tu actionnes le stick1 vers le haut, un module électronique (arduino ou autre) va transformer cette action en une impulsion de 20ms que le script chdk devra comprendre et interpreter en actionnant le zoom (ou autre). En actionnant le stick1 vers le bas, l'électronique va générer une impulsion de 40ms qui sera interprétée par le Canon et qui déclenchera l'apn (bon c'est juste un exemple pour essayer d'expliquer le truc )
oktarrinos a écrit:Je pense donc brancher 2 voies de mon récepteur dessus et interpréter le signal pour déclencher et/ou zoomer.
Un arduino peut bien sûr traduire les signaux de la télécommande vers le S95, mais il existe aussi une solution beaucoup plus simple:
Peter (KapShop) vend le cable qui va bien: http://www.kapshop.com/Rig-Parts-Camera-Control/c6_83/p204/gentWIRE-USB2-(Canon)/product_info.html
Ce cable contient un microcontroleur et se branche sur 2 ports du récepteur et sur le canon... y'a plus qu'à lancer le script chdk2 (et peut-être faire quelques retouches sur ce script)
PS: si tu as besoin du retour vidéo, je crois que Peter peut réaliser sur commande un cable chdk2 & video.
ok, je vais essayé de faire ce câble.(vidéo/data).
N'hésite pas à googler "CHDK2", tu auras pas mal d'infos sur le comment fonctionne tout ça.
Deltakap a écrit:Suite...
Le script chdk2 permet simplement de lancer des actions différentes en fonction de la durée des impulsions envoyées sur l'entrée usb de l'apn.
Si tu veux mieux comprendre comment fonctionne ce script, tu peux essayer avec ton montage actuel (le bouton) le script suivant:
- Code: Tout sélectionner
while 1
do
a = get_usb_power
until a>0
print a
sleep 500
wend
çà MARCHE !!! remplacement du wend par return et là lecture auto du temps d’appui sur le BP ... ( impulsions facile à simuler par l'arduino et donc facile de choisir différentes actions)
Si tu appuies une seconde sur le bouton, le script va te donner une valeur (par exemple 100).
Si tu appuies 2 secondes, tu auras une valeur proche du double (200 dans mon exemple).
PS: il faut attendre au moins 1/2 seconde avant d'appuyer de nouveau sur le bouton (à cause du sleep 500)
Il suffit alors de prendre la valeur moyenne (150) pour déterminer une valeur de seuil:
- Code: Tout sélectionner
while 1
do
a = get_usb_power
until a>0
if a < 150 then gosub "action1"
if a > 149 then gosub "action2"
wend
end
:action1
print "action 1"
return
:action2
print "action 2"
return
Avec ce deuxième script, à chaque fois que tu appuieras moins d'1,5s, le script lancera l'action1 et affichera "action 1". Pour un appui de plus de 1,5s, il lancera l'action2.
Il est bien sur possible de déterminer des seuils supplémentaires et lancer d'autres actions (c'est le principe du script chdk2):
- Code: Tout sélectionner
while 1
do
a = get_usb_power
until a>0
if a < 5 then gosub "ch1up"
if a > 4 and a < 8 then gosub "ch1mid"
if a > 7 and a < 11 then gosub "ch1down"
if a > 10 and a < 14 then gosub "ch2up"
if a > 13 and a < 17 then gosub "ch2mid"
if a > 16 and a < 20 then gosub "ch2down"
if a > 19 then print "error"
wend
end
:ch1up
print "channel 1 up"
return
:ch1mid
print "channel 1 middle"
return
:ch1down
print "channel 1 down"
return
:ch2up
print "channel 2 up"
return
:ch2mid
print "channel 2 middle"
return
:ch2down
print "channel 2 down"
return
Il faudra évidemment remplacer les "print" par une vraie action, genre "shoot" ou "set_zoom..".
Avec un câble chdk2 ou un arduino, le script va juste utiliser des valeurs de seuil plus faibles qu'avec le bouton (on le voit ci-dessus) puisque les impulsions vont être plus rapides (des dizaines de ms au lieu de secondes avec ton bouton)
Une petite remarque: Si tu fais le choix de l'arduino, tu n'as évidemment pas besoin du câble chdk2... un simple cable usb suffira (l'arduino remplacera ton bouton actuel). Par contre le script sur le Canon sera le même (peut-être aux valeurs de seuil près puisque c'est l'arduino qui déterminera les durées des impulsions envoyées à l'apn)
while 1
set_zoom(1)
sleep 1000
set_zoom(5)
sleep 1000
wend
end
tarrinos a écrit:Me reste plus qu'a interpréter le signal du récepteur rc modulation de fréquence ou seuil de tension.
Deltakap a écrit:Pour les tests en cours avec Yvo au sujet de la commande du zoom par script, il ne nous reste plus qu'à valider la syntaxe "set_zoom(z)"
PS: "set_zoom z" sans parenthèses fonctionne sur mon 860 mais pas sur le S95.
Si tu veux tester, tu peux essayer par exemple:
- Code: Tout sélectionner
while 1
set_zoom(1)
sleep 1000
set_zoom(5)
sleep 1000
wend
end
Si le zoom gigote toutes les secondes, c'est que l'instruction set_zoom avec parenthèses est ok
Encore Merci, Testé et ça marche !!! Je vous colle un petit scripte dans la semaine shoot/zoom/dezoom suivant le temps de pression !!!tarrinos a écrit:Me reste plus qu'a interpréter le signal du récepteur rc modulation de fréquence ou seuil de tension.
Si tu pars (comme je crois l'avoir compris ) sur l'option arduino, n'hésite pas à jeter un oeil du coté de l'instruction PulseIn().... ça devrait te simplifier énormément la vie pour déterminer si il y a eu une action sur un stick de la télécommande
plesage a écrit:André, je sais à qui tu vas envoyer ta carte SD vierge pour la" Chdékizer"........
tarrinos a écrit:PulseIn() : en fouillant, c'est ce qui revient le plus souvent pour mesurer ces amplitudes de temps générées par le récepteur pour les servos ... Mais si j'arrive à convertir ces amplitudes en tension, je pense que ce serra plus simple pour moi et certainement plus rapide .
Dan,
André a écrit:Mais de quoi y causent ces deux là ???
Et en quelle langue ?????
Deltakap a écrit:André a écrit:Mais de quoi y causent ces deux là ???
Et en quelle langue ?????
André, un jour, j'arriverai à te convertir (à force de persévérance )
//2012-daniel wambach-www.macrogoutte.com-tarrinos@free.fr
// programme : test de lecture de deux voies d'un récepteur de radiocommande (futaba)
// Projet final : commande du zoom et du déclenchement d'un appareil photo (canon(s95) avec chdk
//initialisation des voies.
//7 et 8 sur ma radiocommande.
//voie 7 sur potentiomètre rotatif pour le zoom.
//voie 8 sur un interrupteur 2 positions à retour auto pour le déclenchement de l'appareil photo.
int mesure_voie7;
int mesure_voie8;
void setup() {
// choix des entrée d2 et d3 de l'arduino
pinMode(2, INPUT);
pinMode(3, INPUT);
// vitesse de transfert arduino sur le port série
Serial.begin(9600);
}
// boucle infinie
void loop() {
// mesure les fronts hauts du signal(pwm(carré)) émis sur les voies 7 et 8 du recepteur de la radiocommande vers les entrées d2 et d3 de l'arduino
mesure_voie7 = pulseIn(2, HIGH, 30000);
mesure_voie8 = pulseIn(3, HIGH, 30000);
// affiche sur le moniteur série du programme arduino les résultats
// les mesures de la voie 7 varie de 1190 au min à 1840 au max en passant par 1500 au milieu.
// les mesures de la voie 8 passe de 1090 interrupteur au repos à 1900 interrupteur enclenché.
Serial.print("mesure_voie7=");
Serial.println(mesure_voie7);
Serial.print("mesure_voie8=");
Serial.println(mesure_voie8);
delay(200);
}
rem "Dans une boucle infinie."
z=0
t=0
while 1
rem "Execute ce qui suit."
do
rem "mets dans la variable "t" le temps en miliseconde divisé par 10 pendant lequel le port usb (broches 1 et 4) à ressus une tension comprise entre 3 et 5 volts."
rem "http://chdk.wikia.com/wiki/USB_Remote"
t = get_usb_power
until t>0
rem "Dès que "t" existe."
rem "Si le temps est plus faible qu'une seconde alors zoom."
if t < 100 then gosub "zoom_plus"
rem "Si le temps est compris entre une et 3 seconde alors dezoom."
if t > 100 and t < 300 then gosub "zoom_moins"
rem "Si le temps est supperieur à 3 secondes alors prends une photographie."
if t > 300 then gosub "prends_photo"
rem "Reboucle."
wend
end
rem "sous programme qui zoom".
:zoom_plus
print "zoom_plus"
z=z+1
set_zoom(z)
sleep 2000
return
rem "sous programme qui dézoom".
:zoom_moins
print "zoom_moins"
z=z-1
set_zoom(z)
sleep 2000
return
rem "sous programme qui déclenche l'appareil".
:prends_photo
print "prends_photo"
shoot
sleep 2000
return
tarrinos a écrit:La suite suivant le temps qu'il fera dans la Meuse, là j'ai 30 crocus à planter
Retourner vers L'électronique embarquée et au sol
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 70 invités