Code programme Picaxe

ludo0404

Senior Member
Réponse :

Il y a une erreur sur une ligne :


if inter1 = 0 and EN1 = 1 then détecter servo1down ' Si l'inter est à 0 et que le flag à 1 cela signifie que c'est la premiere fois qu'on bascile l'inter
é ^
 

dje8269

Senior Member
Oups mauvais copier coller autant pour moi ;

ca devrait aller mieux :

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:

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
Et moi qui te disait de donner un programme qui marche en simulation , pris a mon tour . lol
 

ludo0404

Senior Member
Idem, des petits acouts....

J'ai revérifié avec mon code original pour voir si rien n'était endommagé et non tout marche...
 

PieM

Senior Member
1 - 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.
 

ludo0404

Senior Member
1 - 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.
1- il y a bien deux servos, et si l'info change, pas besoin d'aller en fin de course

2- il ne me semble pas avoir de programme sans pulsout.... Mon programme original avec pulsout fonctionne...
 

dje8269

Senior Member
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
 

ludo0404

Senior Member
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
Ca, ca marche pour un servo !
 

PieM

Senior Member
il y a bien deux servos, et si l'info change, pas besoin d'aller en fin de course
donc pas de boucle do loop.
Re : est ce qu'il doivent être actionnés en même temps ?

merci d'essayer ce prog:

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
Attention que j'ai rajouté 2 délais : à configurer...
 

dje8269

Senior Member
Ben non car rien ne maintient les servos en position !
Ben si le pulsout justement .

Si le nouveau programme fonctionne , c'est qu'il y as un conflit entre pulsout et servo .

Quand on se sert pas de servo( donc de pulsout), il faut le désactivé .

Ca, ca marche pour un servo !
Oui le programme est fait pour un servo , à la base , je voulais te laissé faire le deuxième lol
 

ludo0404

Senior Member
donc pas de boucle do loop.
Re : est ce qu'il doivent être actionnés en même temps ?

merci d'essayer ce prog:

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
Attention que j'ai rajouté 2 délais : à configurer...

Non ils ne doivent pas fonctionner en même temps....

Ce code la fonctionne, il y a juste un acout indésirable lors du retour à 0 du servo en C2
 

ludo0404

Senior Member
OOOps confusion.... Je t'explique :

la première phrase concernait un PAN kit....

La deuxième, celle qui est vrai et a retenir pour la situation actuelle concerne bien deux servos indépendants....
 

ludo0404

Senior Member
merci d'essayer ce prog:

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
Attention que j'ai rajouté 2 délais : à configurer...
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 ?
 

dje8269

Senior Member
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 ?
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 :

si ca marche pas il faudra réinitialisé les servo a chaque incremetation
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
 

ludo0404

Senior Member
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
Temps de réaction de 1sec environ aprés la fermeture du tor et les servos bougent rapide.....

Le dernier code de piem fonctionne trés bien sauf ce petit acout au retour à 0 du servo en c2
 

dje8269

Senior Member
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
 

ludo0404

Senior Member
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
.... Marche pas, des acouts dans le déplacement...
 

ludo0404

Senior Member
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
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....
 

ludo0404

Senior Member
Bon voila j'ai essayé de doubler le code qui fonctionne, mais il y a une erreur dans la simulation, je ne sais pas quoi changer.... voila ce que j'ai fait :

Code:
#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
 

ludo0404

Senior Member
J'ai réussi à trouver les erreurs seul ! mais le servo 2 ne fonctionne pas je suis sur de pas etre loin du compte.....

Code:
 #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
 

dje8269

Senior Member
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 .

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
 

ludo0404

Senior Member
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 .

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
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&#8217;à se qu'on ferme au moins une fois son tor
 

dje8269

Senior Member
Cadeaux :

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
 

ludo0404

Senior Member
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 .
Et effectivement si on peut l&#8217;empêcher d'aller au bout si on a juste une impulsion du tor...
 

ludo0404

Senior Member
Cadeaux :

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
Pareil toujours des acouts tant qu'on a pas fermé un tor
 

ludo0404

Senior Member
On peut , sinon il fonctionne ?


Je viens de relancer la prog et fait un on / off de l'alim et ca marche maintenant dés le début... parfait parfait parfait ! Plus qu'a arreter leur course si le tor se rouvre avant la fin de la course et tu seras mon dieu !
 

dje8269

Senior Member
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 :

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 
	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
 

ludo0404

Senior Member
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 :
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.

Je ne sais comment vous remercier c'est vraiment hyper sympa de m'avoir aidé

MERCI MERCI ET MERCI !!!!!!!!!!!!
 

dje8269

Senior Member
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 !!!
 

ludo0404

Senior Member
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 !!!
Ok merci je vais chercher à comprendre mieux et à potasser le manuel...

L'autre (celui de piem je suppose).... En effet c'est bizarre que ca fasse ce petit beug au servo 2....
 

PieM

Senior Member
normalement ca devrait le faire .
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.
 
Top