#Picaxe 08M2
'########################## configuration ################################
symbol position = b1
symbol inter1 = pinC.4
symbol EN1 = b11
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
position = 75 ' On rentre la position d'origine
servo C.1,position' On place le servo
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.1, position ' on positionne le servo avec pulssout pour la stabilité
pause 18 ' pour ralentir la Mise à Jour
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
do
inc position ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position ' On place le servo a sa nouvelle place
loop while position < 100 ' Tant qu'on a pas atteint la valeur on continue
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
do
dec position ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position ' On place le servo a sa nouvelle place
loop while position > 75 ' Tant qu'on a pas atteint la valeur on continue
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
1- il y a bien deux servos, et si l'info change, pas besoin d'aller en fin de course1 - Il faudrait savoir si il y a 1 ou 2 servos, et s'ils doivent fonctionner en même temps et aller systématiquement en fin de course même si l'info a changé. ça me semble essentiel !
2 - si le programme sans les pulsout fonctionne, alors ne pas mettre les lignes qui comporte les else pulsout...
Il est possible que des pulsout soient perturbés par une cde servo toujours active sur la même sortie. Auquel cas il y a une parade.
#Picaxe 08M2
'########################## configuration ################################
symbol position = b1
symbol inter1 = pinC.4
symbol EN1 = b11
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
position = 75 ' On rentre la position d'origine
servo C.1,position' On place le servo
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.1, position ' on positionne le servo avec pulssout pour la stabilité
pause 18 ' pour ralentir la Mise à Jour
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
servo C.1,position
do
inc position ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position ' On place le servo a sa nouvelle place
loop while position < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.1,position
do
dec position ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position ' On place le servo a sa nouvelle place
loop while position > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
Ca, ca marche pour un servo !Bonne idée PieM ,
Tiens essaye en desactivement les servopos , quand on en as pas besoin :
Code:#Picaxe 08M2 '########################## configuration ################################ symbol position = b1 symbol inter1 = pinC.4 symbol EN1 = b11 '########################## Initialisation ################################ setfreq m4 EN1 = 0 ' Au démarrage on met le flag à 0 position = 75 ' On rentre la position d'origine servo C.1,position' On place le servo '################################################################################# '########################## Programme Principal ############################ '################################################################################# do if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter pulsout C.1, position ' on positionne le servo avec pulssout pour la stabilité pause 18 ' pour ralentir la Mise à Jour loop '################################################################################# '########################## Programme Secondaire ########################### '################################################################################# servo1up: servo C.1,position do inc position ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position ' On place le servo a sa nouvelle place loop while position < 100 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo1down: servo C.1,position do dec position ' On descend de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position ' On place le servo a sa nouvelle place loop while position > 75 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal
donc pas de boucle do loop.il y a bien deux servos, et si l'info change, pas besoin d'aller en fin de course
#Picaxe 08M2
'Entrées Sorties ------------------------
symbol servo1 = C.1
symbol servo2 = C.2
symbol capteur1 = pinC.3
symbol capteur2 = pinC.4
'Variables ------------------------------
symbol position1 = b1
symbol position2 = b2
symbol fdc1 = b3
symbol fdc2 = b4
'initialisation--------------------------
symbol delai1 = 10
symbol delai2 = 5
position1 = 90
position2 = 140
main:
'SERVO 1 ========= pos0 = 75 --> 100 ==================
if capteur1=1 then
fdc1=100 'fin de course à atteindre
if position1 < fdc1 then 'si position pas atteinte
inc position1 'on incremente
pause delai1 'on attend
servo servo1,position1 'nouveau positionnement du servo
else ' quand le servo est en position fin de course,
servopos servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout
endif
else
fdc1 = 75 'fin de course à atteindre
if position1 > fdc1 then
dec position1
pause delai2
servo servo1,position1
else
servopos servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course,
endif
endif
'SERVO 2 ============ pos0 = 150 --> 125 ===============
if capteur2 =1 then
fdc2=125 'fin de course à atteindre
if position2 > fdc2 then
dec position2
pause delai1
servo servo2,position2
else
servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
else
fdc2 = 150 'fin de course à atteindre
if position2 < fdc2 then
inc position2
pause delai2
servo servo2,position2
else
servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
endif
goto main
Ben si le pulsout justement .Ben non car rien ne maintient les servos en position !
Oui le programme est fait pour un servo , à la base , je voulais te laissé faire le deuxième lolCa, ca marche pour un servo !
donc pas de boucle do loop.
Re : est ce qu'il doivent être actionnés en même temps ?
merci d'essayer ce prog:
Attention que j'ai rajouté 2 délais : à configurer...Code:#Picaxe 08M2 'Entrées Sorties ------------------------ symbol servo1 = C.1 symbol servo2 = C.2 symbol capteur1 = pinC.3 symbol capteur2 = pinC.4 'Variables ------------------------------ symbol position1 = b1 symbol position2 = b2 symbol fdc1 = b3 symbol fdc2 = b4 'initialisation-------------------------- symbol delai1 = 10 symbol delai2 = 5 position1 = 90 position2 = 140 main: 'SERVO 1 ========= pos0 = 75 --> 100 ================== if capteur1=1 then fdc1=100 'fin de course à atteindre if position1 < fdc1 then 'si position pas atteinte inc position1 'on incremente pause delai1 'on attend servo servo1,position1 'nouveau positionnement du servo else ' quand le servo est en position fin de course, servopos servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout endif else fdc1 = 75 'fin de course à atteindre if position1 > fdc1 then dec position1 pause delai2 servo servo1,position1 else servopos servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course, endif endif 'SERVO 2 ============ pos0 = 150 --> 125 =============== if capteur2 =1 then fdc2=125 'fin de course à atteindre if position2 > fdc2 then dec position2 pause delai1 servo servo2,position2 else servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif else fdc2 = 150 'fin de course à atteindre if position2 < fdc2 then inc position2 pause delai2 servo servo2,position2 else servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif endif goto main
Pour que les deux commandes se fassent en meme temps, il y a quelque chose à ajouter au code ?
Heu ...ludo0404 said:Non ils ne doivent pas fonctionner en même temps....
Un truc que je pige pas, pour le retour du servo 1 on a un "dec" position1 et pour le servo 2 un "inc" ? ca peut pas expliquer l'acout au retour à 0 du servo en C2 ?merci d'essayer ce prog:
Attention que j'ai rajouté 2 délais : à configurer...Code:#Picaxe 08M2 'Entrées Sorties ------------------------ symbol servo1 = C.1 symbol servo2 = C.2 symbol capteur1 = pinC.3 symbol capteur2 = pinC.4 'Variables ------------------------------ symbol position1 = b1 symbol position2 = b2 symbol fdc1 = b3 symbol fdc2 = b4 'initialisation-------------------------- symbol delai1 = 10 symbol delai2 = 5 position1 = 90 position2 = 140 main: 'SERVO 1 ========= pos0 = 75 --> 100 ================== if capteur1=1 then fdc1=100 'fin de course à atteindre if position1 < fdc1 then 'si position pas atteinte inc position1 'on incremente pause delai1 'on attend servo servo1,position1 'nouveau positionnement du servo else ' quand le servo est en position fin de course, servopos servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout endif else fdc1 = 75 'fin de course à atteindre if position1 > fdc1 then dec position1 pause delai2 servo servo1,position1 else servopos servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course, endif endif 'SERVO 2 ============ pos0 = 150 --> 125 =============== if capteur2 =1 then fdc2=125 'fin de course à atteindre if position2 > fdc2 then dec position2 pause delai1 servo servo2,position2 else servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif else fdc2 = 150 'fin de course à atteindre if position2 < fdc2 then inc position2 pause delai2 servo servo2,position2 else servopos servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif endif goto main
Non , un cote tu va de 75 à 100 et de l'autre de 150 à 125 . un cote tu monte de l'autre tu descend . C'est normal .Un truc que je pige pas, pour le retour du servo 1 on a un "dec" position1 et pour le servo 2 un "inc" ? ca peut pas expliquer l'acout au retour à 0 du servo en C2 ?
#Picaxe 08M2
'Entrées Sorties ------------------------
symbol servo1 = C.1
symbol servo2 = C.2
symbol capteur1 = pinC.3
symbol capteur2 = pinC.4
'Variables ------------------------------
symbol position1 = b1
symbol position2 = b2
symbol fdc1 = b3
symbol fdc2 = b4
'initialisation--------------------------
symbol delai1 = 10
symbol delai2 = 5
position1 = 90
position2 = 140
main:
'SERVO 1 ========= pos0 = 75 --> 100 ==================
if capteur1=1 then
fdc1=100 'fin de course à atteindre
if position1 < fdc1 then 'si position pas atteinte
inc position1 'on incremente
pause delai1 'on attend
servopos servo1,position1 'nouveau positionnement du servo
else ' quand le servo est en position fin de course,
servo servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout
endif
else
fdc1 = 75 'fin de course à atteindre
if position1 > fdc1 then
dec position1
pause delai2
servopos servo1,position1
else
servo servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course,
endif
endif
'SERVO 2 ============ pos0 = 150 --> 125 ===============
if capteur2 =1 then
fdc2=125 'fin de course à atteindre
if position2 > fdc2 then
dec position2
pause delai1
servopos servo2,position2
else
servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
else
fdc2 = 150 'fin de course à atteindre
if position2 < fdc2 then
inc position2
pause delai2
servopos servo2,position2
else
servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
endif
goto main
Temps de réaction de 1sec environ aprés la fermeture du tor et les servos bougent rapide.....Non , un cote tu va de 75 à 100 et de l'autre de 150 à 125 . un cote tu monte de l'autre tu descend . C'est normal .
Par contre je sais pas pourquoi PieM à mis des initialisation de servo après chaque incrementation ? plutot qu'un servopos ;
essaye comme ca pour voir :
Code:#Picaxe 08M2 'Entrées Sorties ------------------------ symbol servo1 = C.1 symbol servo2 = C.2 symbol capteur1 = pinC.3 symbol capteur2 = pinC.4 'Variables ------------------------------ symbol position1 = b1 symbol position2 = b2 symbol fdc1 = b3 symbol fdc2 = b4 'initialisation-------------------------- symbol delai1 = 10 symbol delai2 = 5 position1 = 90 position2 = 140 main: 'SERVO 1 ========= pos0 = 75 --> 100 ================== if capteur1=1 then fdc1=100 'fin de course à atteindre if position1 < fdc1 then 'si position pas atteinte inc position1 'on incremente pause delai1 'on attend servopos servo1,position1 'nouveau positionnement du servo else ' quand le servo est en position fin de course, servo servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout endif else fdc1 = 75 'fin de course à atteindre if position1 > fdc1 then dec position1 pause delai2 servopos servo1,position1 else servo servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course, endif endif 'SERVO 2 ============ pos0 = 150 --> 125 =============== if capteur2 =1 then fdc2=125 'fin de course à atteindre if position2 > fdc2 then dec position2 pause delai1 servopos servo2,position2 else servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif else fdc2 = 150 'fin de course à atteindre if position2 < fdc2 then inc position2 pause delai2 servopos servo2,position2 else servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif endif goto main
Ok merci je comprends mieuxLe retour de l'un va de 100 à 75 donc décroit, l'autre va de 125 à 150 donc croit.
#Picaxe 08M2
'Entrées Sorties ------------------------
symbol servo1 = C.1
symbol servo2 = C.2
symbol capteur1 = pinC.3
symbol capteur2 = pinC.4
'Variables ------------------------------
symbol position1 = b1
symbol position2 = b2
symbol fdc1 = b3
symbol fdc2 = b4
'initialisation--------------------------
symbol delai1 = 10
symbol delai2 = 5
position1 = 90
position2 = 140
main:
'SERVO 1 ========= pos0 = 75 --> 100 ==================
if capteur1=1 then
fdc1=100 'fin de course à atteindre
servo servo1,fdc1
if position1 < fdc1 then 'si position pas atteinte
inc position1 'on incremente
pause delai1 'on attend
servopos servo1,position1 'nouveau positionnement du servo
else ' quand le servo est en position fin de course,
servo servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout
endif
else
fdc1 = 75 'fin de course à atteindre
servo servo1, fdc1
if position1 > fdc1 then
dec position1
pause delai2
servopos servo1,position1
else
servo servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course,
endif
endif
'SERVO 2 ============ pos0 = 150 --> 125 ===============
if capteur2 =1 then
fdc2=125 'fin de course à atteindre
servo servo2,fdc2
if position2 > fdc2 then
dec position2
pause delai1
servopos servo2,position2
else
servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
else
fdc2 = 150 'fin de course à atteindre
servo servo2,fdc2
if position2 < fdc2 then
inc position2
pause delai2
servopos servo2,position2
else
servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course,
endif
endif
goto main
.... Marche pas, des acouts dans le déplacement...allez un dernier
Code:#Picaxe 08M2 'Entrées Sorties ------------------------ symbol servo1 = C.1 symbol servo2 = C.2 symbol capteur1 = pinC.3 symbol capteur2 = pinC.4 'Variables ------------------------------ symbol position1 = b1 symbol position2 = b2 symbol fdc1 = b3 symbol fdc2 = b4 'initialisation-------------------------- symbol delai1 = 10 symbol delai2 = 5 position1 = 90 position2 = 140 main: 'SERVO 1 ========= pos0 = 75 --> 100 ================== if capteur1=1 then fdc1=100 'fin de course à atteindre servo servo1,fdc1 if position1 < fdc1 then 'si position pas atteinte inc position1 'on incremente pause delai1 'on attend servopos servo1,position1 'nouveau positionnement du servo else ' quand le servo est en position fin de course, servo servo1,OFF: pulsout servo1,fdc1 ' on passe en pulsout endif else fdc1 = 75 'fin de course à atteindre servo servo1, fdc1 if position1 > fdc1 then dec position1 pause delai2 servopos servo1,position1 else servo servo1,OFF: pulsout servo1,fdc1 ' quand le servo est en position fin de course, endif endif 'SERVO 2 ============ pos0 = 150 --> 125 =============== if capteur2 =1 then fdc2=125 'fin de course à atteindre servo servo2,fdc2 if position2 > fdc2 then dec position2 pause delai1 servopos servo2,position2 else servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif else fdc2 = 150 'fin de course à atteindre servo servo2,fdc2 if position2 < fdc2 then inc position2 pause delai2 servopos servo2,position2 else servo servo2, OFF: pulsout servo2,fdc2 ' quand le servo est en position fin de course, endif endif goto main
dans le programme , mets tout le bloc SERVO 1 en dernier avant le goto main. Et regarde si ce n'est pas l'autre servo ( le 1) qui fait des siennes.Piem : vous n'avez pas une idée pour cet acout au retour du C2 ?
Non, idem, toujours le C2 qui beug au retourdans le programme , mets tout le bloc SERVO 1 en dernier avant le goto main. Et regarde si ce n'est pas l'autre servo ( le 1) qui fait des siennes.
dans le programme , mets tout le bloc SERVO 1 en dernier avant le goto main. Et regarde si ce n'est pas l'autre servo ( le 1) qui fait des siennes.
Puisque ce code fonctionne pour un servo, on ne pourrait pas doubler ce code ? il y a certaines lignes dont je ne suis pas sur qu'il faille doubler comme en1 = b11....Bonne idée PieM ,
Tiens essaye en desactivement les servopos , quand on en as pas besoin :
Code:#Picaxe 08M2 '########################## configuration ################################ symbol position = b1 symbol inter1 = pinC.4 symbol EN1 = b11 '########################## Initialisation ################################ setfreq m4 EN1 = 0 ' Au démarrage on met le flag à 0 position = 75 ' On rentre la position d'origine servo C.1,position' On place le servo '################################################################################# '########################## Programme Principal ############################ '################################################################################# do if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter pulsout C.1, position ' on positionne le servo avec pulssout pour la stabilité pause 18 ' pour ralentir la Mise à Jour loop '################################################################################# '########################## Programme Secondaire ########################### '################################################################################# servo1up: servo C.1,position do inc position ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position ' On place le servo a sa nouvelle place loop while position < 100 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo1down: servo C.1,position do dec position ' On descend de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position ' On place le servo a sa nouvelle place loop while position > 75 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal
#Picaxe 08M2
'########################## configuration ################################
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = pinC.3
symbol EN1 = b11
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
position1 = 75 ' On rentre la position d'origine
position2 = 150
servo C.1,position1' On place le servo
servo C.2,position2
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité
pause 18 ' pour ralentir la Mise à Jour
loop
do
if inter2 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter2 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.2, position2 ' on positionne le servo avec pulssout pour la stabilité
pause 18
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
servo C.1,position1
do
inc position1 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.1,position1
do
dec position1 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
servo1up:
servo C.2,position2
do
dec position2 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.2,position2
do
inc position2 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN1 = 0
#Picaxe 08M2
'########################## configuration ################################
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = pinC.3
symbol EN1 = b11
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
position1 = 75 ' On rentre la position d'origine
position2 = 150
servo C.1,position1' On place le servo
servo C.2,position2
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up1 ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down1 ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité
pause 18 ' pour ralentir la Mise à Jour
loop
do
if inter2 = 1 and EN1 = 0 then gosub servo1up2 ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter2 = 0 and EN1 = 1 then gosub servo1down2 ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
pulsout C.2, position2 ' on positionne le servo avec pulssout pour la stabilité
pause 18
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up1:
servo C.1,position1
do
inc position1 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down1:
servo C.1,position1
do
dec position1 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
servo1up2:
servo C.2,position2
do
dec position2 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down2:
servo C.2,position2
do
inc position2 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN1 = 0
#Picaxe 08M2
'########################## configuration ################################
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = PinC.3
symbol EN1 = b11
symbol EN2 = b12
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
EN2 = 0
position1 = 75 ' On rentre la position d'origine
position2 = 150
servo C.1,position1' On place le servo
servo C.2, position2
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter2 = 1 and EN2 = 0 then gosub servo2up
if inter2 = 0 and EN2 = 1 then gosub servo2down
pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité
pulsout C.2, position2
pause 18 ' pour ralentir la Mise à Jour
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
servo C.1,position1
do
inc position1 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.1,position1
do
dec position1 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
'--------------------------
servo2up:
servo C.2,position2
do
dec position2 ' On diminue de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo2down:
servo C.2,position2
do
inc position2 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
Punaise c'est vraiment presque parfait !!!! mais tant que les tor ne se sont pas fermés au moins une fois les servos ont des acouts... On ferme le tor du servo1 et ce servo n'a plus d'acout en position0 et le 2 a toujours des accouts jusqu’à se qu'on ferme au moins une fois son torce code ne correspond pas a ton cahier des charges , puisque que une fois que tu as appuyé, le servo va au bout, quoi qu'il se passe ; je sais pas si c'est gênant pour ton application .
Le voila avec les deux servos , à essayé:
Code:#Picaxe 08M2 '########################## configuration ################################ symbol position1 = b1 symbol position2 = b2 symbol inter1 = pinC.4 symbol inter2 = PinC.3 symbol EN1 = b11 symbol EN2 = b12 '########################## Initialisation ################################ setfreq m4 EN1 = 0 ' Au démarrage on met le flag à 0 EN2 = 0 position1 = 75 ' On rentre la position d'origine position2 = 150 servo C.1,position1' On place le servo servo C.2, position2 '################################################################################# '########################## Programme Principal ############################ '################################################################################# do if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter2 = 1 and EN2 = 0 then gosub servo2up if inter2 = 0 and EN2 = 1 then gosub servo2down pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité pulsout C.2, position2 pause 18 ' pour ralentir la Mise à Jour loop '################################################################################# '########################## Programme Secondaire ########################### '################################################################################# servo1up: servo C.1,position1 do inc position1 ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position1 ' On place le servo a sa nouvelle place loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo1down: servo C.1,position1 do dec position1 ' On descend de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position1 ' On place le servo a sa nouvelle place loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal '-------------------------- servo2up: servo C.2,position2 do dec position2 ' On diminue de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.2,position2 ' On place le servo a sa nouvelle place loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue servo C.2, off EN2 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo2down: servo C.2,position2 do inc position2 ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.2,position2 ' On place le servo a sa nouvelle place loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue servo C.2, off EN2 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal
#Picaxe 08M2
'########################## configuration ################################
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = PinC.3
symbol EN1 = b11
symbol EN2 = b12
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
EN2 = 0
position1 = 75 ' On rentre la position d'origine
position2 = 150
servo C.1,position1' On place le servo
servo C.2, position2
pause 100
servo C.1, off
servo C.2, off
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter2 = 1 and EN2 = 0 then gosub servo2up
if inter2 = 0 and EN2 = 1 then gosub servo2down
pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité
pulsout C.2, position2
pause 18 ' pour ralentir la Mise à Jour
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
servo C.1,position1
do
inc position1 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.1,position1
do
dec position1 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
'--------------------------
servo2up:
servo C.2,position2
do
dec position2 ' On diminue de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo2down:
servo C.2,position2
do
inc position2 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
Et effectivement si on peut l’empêcher d'aller au bout si on a juste une impulsion du tor...ce code ne correspond pas a ton cahier des charges , puisque que une fois que tu as appuyé, le servo va au bout, quoi qu'il se passe ; je sais pas si c'est gênant pour ton application .
Pareil toujours des acouts tant qu'on a pas fermé un torCadeaux :
Code:#Picaxe 08M2 '########################## configuration ################################ symbol position1 = b1 symbol position2 = b2 symbol inter1 = pinC.4 symbol inter2 = PinC.3 symbol EN1 = b11 symbol EN2 = b12 '########################## Initialisation ################################ setfreq m4 EN1 = 0 ' Au démarrage on met le flag à 0 EN2 = 0 position1 = 75 ' On rentre la position d'origine position2 = 150 servo C.1,position1' On place le servo servo C.2, position2 pause 100 servo C.1, off servo C.2, off '################################################################################# '########################## Programme Principal ############################ '################################################################################# do if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter if inter2 = 1 and EN2 = 0 then gosub servo2up if inter2 = 0 and EN2 = 1 then gosub servo2down pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité pulsout C.2, position2 pause 18 ' pour ralentir la Mise à Jour loop '################################################################################# '########################## Programme Secondaire ########################### '################################################################################# servo1up: servo C.1,position1 do inc position1 ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position1 ' On place le servo a sa nouvelle place loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo1down: servo C.1,position1 do dec position1 ' On descend de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.1,position1 ' On place le servo a sa nouvelle place loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue servo C.1, off EN1 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal '-------------------------- servo2up: servo C.2,position2 do dec position2 ' On diminue de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.2,position2 ' On place le servo a sa nouvelle place loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue servo C.2, off EN2 = 1 ' Une fois le servo à sa position On met le flag a 1 return ' On retourne au programme principal '-------------------------- servo2down: servo C.2,position2 do inc position2 ' On augmente de 1 la position pause 10 ' on fais une pause pour ralentir servopos C.2,position2 ' On place le servo a sa nouvelle place loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue servo C.2, off EN2 = 0 ' Une fois le servo à sa position On met le flag a 0 return ' On retourne au programme principal
Oui il fonctionne parfaitement bien seulement aprés avoir fermé les tor au moins une fois chacunOn peut , sinon il fonctionne ?
On peut , sinon il fonctionne ?
#Picaxe 08M2
'########################## configuration ################################
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = PinC.3
symbol EN1 = b11
symbol EN2 = b12
'########################## Initialisation ################################
setfreq m4
EN1 = 0 ' Au démarrage on met le flag à 0
EN2 = 0
position1 = 75 ' On rentre la position d'origine
position2 = 150
servo C.1,position1' On place le servo
servo C.2, position2
pause 100
servo C.1, off
servo C.2, off
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
if inter1 = 1 and EN1 = 0 then gosub servo1up ' Si l'inter est à 1 et que le flag à 0 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter1 = 0 and EN1 = 1 then gosub servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
if inter2 = 1 and EN2 = 0 then gosub servo2up
if inter2 = 0 and EN2 = 1 then gosub servo2down
pulsout C.1, position1 ' on positionne le servo avec pulssout pour la stabilité
pulsout C.2, position2
pause 18 ' pour ralentir la Mise à Jour
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
servo1up:
servo C.1,position1
do
if inter1 = 0 then exit ' si On rappuie sur l'inter pendant le mouvement on sort
inc position1 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 < 100 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo1down:
servo C.1,position1
do
if inter1 = 1 then exit ' si On rappuie sur l'inter pendant le mouvement on sort
dec position1 ' On descend de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.1,position1 ' On place le servo a sa nouvelle place
loop while position1 > 75 ' Tant qu'on a pas atteint la valeur on continue
servo C.1, off
EN1 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
'--------------------------
servo2up:
servo C.2,position2
do
if inter2 = 0 then exit ' si On rappuie sur l'inter pendant le mouvement on sort
dec position2 ' On diminue de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 > 125 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 1 ' Une fois le servo à sa position On met le flag a 1
return ' On retourne au programme principal
'--------------------------
servo2down:
servo C.2,position2
do
if inter2 = 1 then exit ' si On rappuie sur l'inter pendant le mouvement on sort
inc position2 ' On augmente de 1 la position
pause 10 ' on fais une pause pour ralentir
servopos C.2,position2 ' On place le servo a sa nouvelle place
loop while position2 < 150 ' Tant qu'on a pas atteint la valeur on continue
servo C.2, off
EN2 = 0 ' Une fois le servo à sa position On met le flag a 0
return ' On retourne au programme principal
MAGNIFIQUE !!!!!!!!!!! exactement la où je voulais en venir ! me restera plus qu'à ajuster la vitesse désiré mais ca je devrais m'en sortir seul.normalement ca devrait le faire .
Mais PieM va faire des bonds, car le programme est loin d'être optimisé , j'ai fais ca à la va vite quand même . C'est le fouillis , je suis pas très satisfait, mais si ça fonctionne tant mieux pour toi :
Ok merci je vais chercher à comprendre mieux et à potasser le manuel...Ben de rien . essaye de le comprendre quand même ! ( c'est pour toi)
remplace les "pause 10" par une variable que tu appelle delais comme sur celui de PieM ainsi il te sera facile de changer la vitesse , en remplacement seulement une valeur plutot que toutes les pauses .
Je serais quand même curieux de savoir pourquoi l'autre ne fonctionne pas !!!
Bien sûr ! Dans la mesure ou il n'y a pas de fonctionnement simultané des deux servos, il n'y a pas d'imbrication des commandes.normalement ca devrait le faire .