Ralentir des servos

ludo0404

Senior Member
Bonjour

Quelqu'un pourrait t-il m'aider à modifier mon code (c'est un mode "demonstration" pour un stand pro....). Je souhaiterais que les servo bougent moins vite....

Code:
#Picaxe 08M2
 


'##########################    Initialisation    ################################

setfreq m4
 
servo C.1,150 	' Initialsiation du servo au point milieu
servo C.2,150


'#################################################################################
'##########################    Programme Principal    ############################	
'#################################################################################
do

servopos C.1, 150	' on positionne le servo au point milieu
pause 1500		' Pause de 1 seconde
  
servopos C.1, 125	' on positionne le servo en bout de course
pause 1500		' Pause de 1 seconde

servopos C.1, 150	' on positionne le servo au point milieu
pause 1500		' Pause de 1 seconde
	
servopos C.2, 150	' on positionne le servo au point milieu
pause 1500		' Pause de 1 seconde
  
servopos C.2, 175	' on positionne le servo en bout de course
pause 1500		' Pause de 1 seconde

servopos C.2, 150	' on positionne le servo au point milieu
pause 1500		' Pause de 1 seconde
	

loop
Merci de vos réponses !
Ludo
 
Last edited:

dje8269

Senior Member
Hello ludo,

tu devrais essayer cette méthode .

au lieu d'aller directement de la position 150 à 125 , on va passer par des postions , permettant de ralenir les ordres.
déclare une variable pour commencer en début de programme genre .

Code:
pos_servo1 = b3
ensuite on va incrementer cette variable jusqu' atteindre notre valeur voulue

Code:
servopos C.1, pos_servo1	' on positionne le servo au point milieu
pause 1500		             ' Pause de 1 seconde

do 
inc pos_servo1
pause 1
while pos_servo1 < 125
Tu peux joue avec la pause pour ralentir encore !!!

Bonne bricole !

Programme non testé et vite fait
 

BESQUEUT

Senior Member
Non testé
Code:
[color=Navy]#Picaxe [/color][color=Black]08M2
 [/color]


[color=Green]'##########################    Initialisation    ################################[/color]
[color=Blue]SYMBOL [/color][color=Purple]Depart1[/color][color=DarkCyan]=[/color][color=Purple]b1[/color]
[color=Blue]SYMBOL [/color][color=Purple]Depart2[/color][color=DarkCyan]=[/color][color=Purple]b2[/color]
[color=Blue]SYMBOL [/color][color=Purple]I[/color][color=DarkCyan]=[/color][color=Purple]b3[/color]
[color=Blue]SYMBOL Lenteur[/color][color=DarkCyan]=[/color][color=Navy]50[/color][color=Green]' a ajuster ![/color]


[color=Blue]setfreq m4
 
servo C.1[/color][color=Black],[/color][color=Navy]150     [/color][color=Green]' Initialisation des servos au point milieu[/color]
[color=Blue]servo C.2[/color][color=Black],[/color][color=Navy]150[/color]
[color=Purple]Depart1[/color][color=DarkCyan]=[/color][color=Navy]150[/color]
[color=Purple]Depart2[/color][color=DarkCyan]=[/color][color=Navy]150

#macro [/color][color=Black]Rotation1[/color][color=Blue]([/color][color=Black]Arrivee[/color][color=Blue])
      if [/color][color=Purple]Depart1 [/color][color=DarkCyan]< [/color][color=Black]Arrivee [/color][color=Blue]then
            for [/color][color=Purple]I[/color][color=DarkCyan]=[/color][color=Purple]Depart1 [/color][color=Blue]to [/color][color=Black]Arrivee
                  [/color][color=Blue]servopos C.1[/color][color=Black],[/color][color=Purple]I
                  [/color][color=Blue]pause Lenteur
            next [/color][color=Purple]I
      [/color][color=Blue]else
            for [/color][color=Purple]I[/color][color=DarkCyan]=[/color][color=Purple]Depart1 [/color][color=Blue]downto [/color][color=Black]Arrivee
                  [/color][color=Blue]servopos C.1[/color][color=Black],[/color][color=Purple]I
                  [/color][color=Blue]pause Lenteur
            next [/color][color=Purple]I
      [/color][color=Blue]endif
      [/color][color=Purple]Depart1[/color][color=DarkCyan]=[/color][color=Black]Arrivee[/color]
[color=Navy]#endmacro


#macro [/color][color=Black]Rotation2[/color][color=Blue]([/color][color=Black]Arrivee[/color][color=Blue])
      if [/color][color=Purple]Depart2 [/color][color=DarkCyan]< [/color][color=Black]Arrivee [/color][color=Blue]then
            for [/color][color=Purple]I[/color][color=DarkCyan]=[/color][color=Purple]Depart2 [/color][color=Blue]to [/color][color=Black]Arrivee
                  [/color][color=Blue]servopos C.2[/color][color=Black],[/color][color=Purple]I
                  [/color][color=Blue]pause Lenteur
            next [/color][color=Purple]I
      [/color][color=Blue]else
            for [/color][color=Purple]I[/color][color=DarkCyan]=[/color][color=Purple]Depart2 [/color][color=Blue]downto [/color][color=Black]Arrivee
                  [/color][color=Blue]servopos C.2[/color][color=Black],[/color][color=Purple]I
                  [/color][color=Blue]pause Lenteur
            next [/color][color=Purple]I
      [/color][color=Blue]endif
      [/color][color=Purple]Depart2[/color][color=DarkCyan]=[/color][color=Black]Arrivee[/color]
[color=Navy]#endmacro[/color]




[color=Blue]do

      [/color][color=Black]Rotation1[/color][color=Blue]([/color][color=Navy]150[/color][color=Blue])    [/color][color=Green]' on positionne le servo au point milieu
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde
  
      [/color][color=Black]Rotation1[/color][color=Blue]([/color][color=Navy]125[/color][color=Blue])    [/color][color=Green]' on positionne le servo en bout de course
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde

      [/color][color=Black]Rotation1[/color][color=Blue]([/color][color=Navy]150[/color][color=Blue])    [/color][color=Green]' on positionne le servo au point milieu
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde
      
      [/color][color=Black]Rotation2[/color][color=Blue]([/color][color=Navy]150[/color][color=Blue])    [/color][color=Green]' on positionne le servo au point milieu
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde
  
      [/color][color=Black]Rotation2[/color][color=Blue]([/color][color=Navy]175[/color][color=Blue])    [/color][color=Green]' on positionne le servo en bout de course
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde

      [/color][color=Black]Rotation2[/color][color=Blue]([/color][color=Navy]150[/color][color=Blue])    [/color][color=Green]' on positionne le servo au point milieu
      [/color][color=Blue]pause [/color][color=Navy]1500        [/color][color=Green]' Pause de 1 seconde
      [/color]

[color=Blue]loop[/color]
PS : au fait, avez-vous fini par avoir une indication fiable de l'inclinaison de la moto ?
 
Last edited:

ludo0404

Senior Member
Bonjour

Besquet :
oui en effet, j'ai réussi à avoir une information fiable pour la position de la moto. Nous avons produit une premiére serie avec une information de type "on-off".... C'est à dire que notre capteur sait quand la moto s'incline à gauche et déclenche le servo qui va se mettre directement en position 1.

Pour la deuxieme version de notre produit, j'ai trouvé un ingé qui travail sur un capteur bien plus précis : la moto s'incline de 1°, le servo tourne de 1°..... (le rapport 1° pour 1° sera surement modifié, à voir lors des essais....)

Code demo....

Il y a une erreur sur les lignes "macrorotation....."
if Depart1 < Arrivee then - > erreur sur "arrivee"


Merci !
 
Last edited:

ludo0404

Senior Member
Je peux peut etre me servir de mon code originel en enlevant les commandes d'inter ?

Code:
#picaxe 08M2

'######'####################    configuration    ################################   
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = PinC.3

symbol FC1 = 175     'fin de course servo1
symbol FC2 = 125     'fin de course servo2
symbol RAZ1 = 150    'neutre servo1
symbol RAZ2 = 150    'neutre servo2
symbol tpause_0 = 7 'temps de pause - vitesse servos retour
symbol tpause_1 = 7 'temps de pause - vitesse servos aller

'##########################    Initialisation    ################################
pause 2000 
servo C.1,RAZ1 'servo1 au neutre
servo C.2,RAZ2 'servo2 au neutre
pause 100
position1 = RAZ1 'memorisation position servo
position2 = RAZ2
servo C.1, OFF
servo C.2, OFF
'#################################################################################
prog_principal:

do
   if inter1 = 0 then 
      position1= position1 -1 min raz1
      pause tpause_0
   else
      position1= position1 +1 max fc1
      pause tpause_1
   endif
   pulsout C.1,position1
   If inter2 = 0 then 
      position2= position2 +1 max raz2
      pause tpause_0
   else
      position2= position2 -1 min fc2
      pause tpause_1
   endif
   pulsout C.2,position2
   
loop
 

PieM

Senior Member
Je peux peut etre me servir de mon code originel en enlevant les commandes d'inter ?
Oui bien sûr . Il suffit de considérer que c'est un sous programme et que le programme consiste à définir les positions inter1 et inter2 à 1 ou 0 en fonction d'un timing.

Relire ce qui avait été dit à l'époque: http://www.picaxeforum.co.uk/showthread.php?26616-servo-analog-digital&p=273776&viewfull=1#post273776
pas de commande servopos pour éviter le jitter des servos.

Par contre puisque le systeme existe avec un capteur externe donnant l'inclilnaison, il suffit de remplacer le capteur en donnant une valeur analogique à l'entrée correspondante par programme lié à un timer... ce serait plus indiqué!
 
Last edited:

dje8269

Senior Member
djé :

Valeur inconnu : pos_servo1 = b3
Oui il faut attribuer le nom de la variable avec la commande "symbol"

Code:
Symbol pos_servo1 = b3
Je vois que vous êtes entre bonne main, et vu le niveau demandé je me retire de la conversation
 

ludo0404

Senior Member
Par contre puisque le systeme existe avec un capteur externe donnant l'inclilnaison, il suffit de remplacer le capteur en donnant une valeur analogique à l'entrée correspondante par programme lié à un timer... ce serait plus indiqué!
Bonjour Piem,

Je suis désolé, je ne comprends pas...

En fait je souhaite que les servos fassent lentement des aller retour (aux valeurs données en post 1) chacun leur tour automatiquement, sans commande d'inter.
J'ai donc essayé d'enlever les commandes d'inter comme ci dessous mais ca ne marche pas....

Code:
#picaxe 08M2

'######'####################    configuration    ################################   
symbol position1 = b1
symbol position2 = b2
symbol inter1 = pinC.4
symbol inter2 = PinC.3

symbol FC1 = 175     'fin de course servo1
symbol FC2 = 125     'fin de course servo2
symbol RAZ1 = 150    'neutre servo1
symbol RAZ2 = 150    'neutre servo2
symbol tpause_0 = 7 'temps de pause - vitesse servos retour
symbol tpause_1 = 7 'temps de pause - vitesse servos aller

'##########################    Initialisation    ################################
pause 2000 
servo C.1,RAZ1 'servo1 au neutre
servo C.2,RAZ2 'servo2 au neutre
pause 100
position1 = RAZ1 'memorisation position servo
position2 = RAZ2
servo C.1, OFF
servo C.2, OFF
'#################################################################################
prog_principal:

do
   
      position1= position1 -1 min raz1
      pause tpause_0
   else
      position1= position1 +1 max fc1
      pause tpause_1
   endif
   pulsout C.1,position1
    
      position2= position2 +1 max raz2
      pause tpause_0
   else
      position2= position2 -1 min fc2
      pause tpause_1
   endif
   pulsout C.2,position2
   
loop
 

PieM

Senior Member
Si "c'est un mode "démonstration" pour un stand pro...." comme dit dans #1, je ne comprends pas trop car cette démo n'a rien à voir avec le fonctionnement réel tel qu'il avait été défini dans le sujet précédent, ou les fonctionnements des 2 servos étaient imbriqués. 1 phare revenait au neutre pendant que l'autre s'orientait.
Ce que je veux dire c'est que si actuellement le système fonctionne, il est facile de remplacer l'information venant du capteur monté sur la moto par une info fournie par un programme.

Pour un stand de démo, il est même envisageable pour aller au plus près de la réalité de faire un montage avec le capteur tel qu'il existe, sur une maquette moto en plastique articulée de façon à pouvoir s'incliner grâce à un servo qui serait commandé indépendamment, en angle et durée par un petit 08M2. Les variations de vitesse d'inclinaison et durée pourraient ainsi même varier de façon aléatoire ce qui augmenterait le réalisme.
Sinon, avoir deux servos qui tournent les uns après les autres dans des séquences fixes ne présente pas beaucoup d'intérêt !

Pour ce faire il serait nécessaire bien sûr de connaître le programme actuellement utilisé, ou du moins qu'elle type d'info venant du capteur, rentre sur ce programme et sur quelle entrée.

PS: Ce capteur a été testé sur moto en fonctionnement réel ? Car j'ai personnellement un doute ...

Si c'est pour actionner les servos l'un après l'autre le programme en #3 doit fonctionner.
Tu utilises bien PE version 6 ? et non PE version 5
 

ludo0404

Senior Member
Bonsoir Piem

Je me rends compte que j'aurais du etre plus précis dans mon énoncé mais jene voulais pas trop faire un roman....

Alors pour être précis :

Si "c'est un mode "démonstration" pour un stand pro...." comme dit dans #1, je ne comprends pas trop car cette démo n'a rien à voir avec le fonctionnement réel tel qu'il avait été défini dans le sujet précédent, ou les fonctionnements des 2 servos étaient imbriqués. 1 phare revenait au neutre pendant que l'autre s'orientait.
J'ai fabriqué une maquette de moto avec deux servo de chaque coté surmonté de lentille led.

View attachment 18822View attachment 18823


L'idée est la suivante :

1er mode : les lentilles (servos) tournent automatiquement seules sans action sur l'inclinaison de la moto de maniére à attirer l'oeil du client ("tiens des lumiéres qui tournent....") c'est ce code que je n'arrive pas à faire.....


2eme mode : on actionne un inter qui coupe l'alim du mode 1 "mode auto" et qui alimente une deuxieme carte picaxe munie de deux simples capteurs à bille (bien different donc de notre capteur gyroscopique 3 axes mais bien assez pour une demo -> les capteurs à billes ne fonctionnent que en statique mais pas fonctionnels pour une moto en mouvement dû à la force centrifuge....)
Ce code je l'ai....

Sinon, avoir deux servos qui tournent les uns après les autres dans des séquences fixes ne présente pas beaucoup d'intérêt !
Un programme "automatique" un peu plus aléatoir et moins ennuyant serait préferable mais je ne voulais pas trop en demander !

Pour ce faire il serait nécessaire bien sûr de connaître le programme actuellement utilisé, ou du moins qu'elle type d'info venant du capteur, rentre sur ce programme et sur quelle entrée.
Le code en #6 est le code utilisé avec notre capteur gyroscopique qui envoi un signal 5V dans les pins c4 et c3.
Je m'en sert donc pour mon presentoir avec les capteurs à bille

PS: Ce capteur a été testé sur moto en fonctionnement réel ? Car j'ai personnellement un doute ...

Convaincu ?

Si c'est pour actionner les servos l'un après l'autre le programme en #3 doit fonctionner.
Non, mon picaxe programming editor me signal une erreur lors du load indiquant que qu'il y a une erreur sur les lignes "macrorotation....."
if Depart1 < Arrivee then - > erreur sur "arrivee"
.....

Tu utilises bien PE version 6 ? et non PE version 5
J'ai la version 5.5.5
 

PieM

Senior Member
Bonjour,
Le code en #6 est le code utilisé avec notre capteur gyroscopique qui envoi un signal 5V dans les pins c4 et c3.
ce code est celui que je t'avais donné pour des entrées inter, en tout ou rien. Tu dis que c'est le même utilisé pour le capteur gyroscopique qui lui donnerait une info analogique?
Comprends pas trop.

Enfin l'essentiel est que ça marche, et j'avoue que la vidéo est bluffante! Bravo pour cette réalisation.

Concernant le code dans lequel tu detectes une erreur, l'utilisation de macro ne peut se faire qu'avec PE version 6. Normal que tu aies une erreur avec PE vers 5.5
 

ludo0404

Senior Member
ce code est celui que je t'avais donné pour des entrées inter, en tout ou rien. Tu dis que c'est le même utilisé pour le capteur gyroscopique qui lui donnerait une info analogique?
Comprends pas trop.
Oui c'est ca.... pour le signal, ce n'est pas moi qui m'en suis occupé je ne pourrais donc pas t'expliquer comment ils ont fait !
 
Last edited:

ludo0404

Senior Member
Pour le code en #3, les servos font des acouts, l'un va à sa position 1 trés vite et reviens avec des acouts. L'autre va en 1 avec des acouts lententement et reviens trés vite en 0.....
 
Last edited:

ludo0404

Senior Member
Quelle version de PE ?
Avez-vous bien copié l'intégralité du code ?
En fait j'ai essayé dans un premier tps de le programmer avecla version 5....

Mais la je l'ai fais avec le version 6 (plus d'erreurs) et le resultat est en #14.....
 

PieM

Senior Member
En fait j'ai essayé dans un premier tps de le programmer avecla version 5....

Mais la je l'ai fais avec le version 6 (plus d'erreurs) et le resultat est en #14.....
Ce problème des à-coups est lié à l'utilisation de la commande servo. relire ce qui a été dit dans le sujet de 2014 et que j'ai rappelé dans #7:

pas de commande servopos pour éviter le jitter des servos.
utiliser pulsout !
 

ludo0404

Senior Member
Ce problème des à-coups est lié à l'utilisation de la commande servo. relire ce qui a été dit dans le sujet de 2014 et que j'ai rappelé dans #7:

pas de commande servopos pour éviter le jitter des servos.
utiliser pulsout !
C'est encore pire !!

Voila le code modifié.... (j'ai juste changé les pin pour les servo aussi...)

Code:
#Picaxe 08M2
 


'##########################    Initialisation    ################################
SYMBOL Depart1=b1
SYMBOL Depart2=b2
SYMBOL I=b3
SYMBOL Lenteur=75' a ajuster !


setfreq m4
 
servo C.1,150     ' Initialisation des servos au point milieu
servo C.4,150
Depart1=150
Depart2=150

#macro Rotation1(Arrivee)
      if Depart1 < Arrivee then
            for I=Depart1 to Arrivee
                  pulsout C.1,I
                  pause Lenteur
            next I
      else
            for I=Depart1 downto Arrivee
                  pulsout C.1,I
                  pause Lenteur
            next I
      endif
      Depart1=Arrivee
#endmacro


#macro Rotation2(Arrivee)
      if Depart2 < Arrivee then
            for I=Depart2 to Arrivee
                  pulsout C.4,I
                  pause Lenteur
            next I
      else
            for I=Depart2 downto Arrivee
                  pulsout C.4,I
                  pause Lenteur
            next I
      endif
      Depart2=Arrivee
#endmacro




do

      Rotation1(150)    ' on positionne le servo au point milieu
      pause 1000        ' Pause de 1 seconde
  
      Rotation1(125)    ' on positionne le servo en bout de course
      pause 1000        ' Pause de 1 seconde

      Rotation1(150)    ' on positionne le servo au point milieu
      pause 1000        ' Pause de 1 seconde
      
      Rotation2(150)    ' on positionne le servo au point milieu
      pause 1000        ' Pause de 1 seconde
  
      Rotation2(175)    ' on positionne le servo en bout de course
      pause 1000        ' Pause de 1 seconde

      Rotation2(150)    ' on positionne le servo au point milieu
      pause 1000        ' Pause de 1 seconde
      

loop
 

ludo0404

Senior Member
Même réaction qu'en #14......

Etant donné que le code en #6 fonctionne avec les inter, ne peut t-on pas se baser sur celui la mais le rendre "automatique" ?
 

PieM

Senior Member
Même réaction qu'en #14......

Etant donné que le code en #6 fonctionne avec les inter, ne peut t-on pas se baser sur celui la mais le rendre "automatique" ?
Alors garde le programme qui fonctionne et le plus simple, pour éviter toute complication d'interférence de timing, tu prends un second 08M2 que tu programmes avec ça:

Code:
[COLOR=Navy]#picaxe [/COLOR][COLOR=Black]08M2[/COLOR]

[COLOR=Green]'######'####################    configuration    ################################   [/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]pinC.1   [/COLOR][COLOR=Green]'à relier à C.4 par R330[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]PinC.2   [/COLOR][COLOR=Green]'à relier à C.3 par R330[/COLOR]
[COLOR=Purple]dirsC [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]%110[/COLOR]

[COLOR=Blue]do[/COLOR]

[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0[/COLOR][COLOR=Green]' on positionne les servo au point milieu[/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde
  [/COLOR]
[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]1   [/COLOR][COLOR=Green]' on positionne le servo en bout de course[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde[/COLOR]

[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0   [/COLOR][COLOR=Green]' on positionne le servo au point milieu[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde
   [/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0   [/COLOR][COLOR=Green]' on positionne le servo au point milieu[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde
  [/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]1   [/COLOR][COLOR=Green]' on positionne le servo en bout de course[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde[/COLOR]

[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0   [/COLOR][COLOR=Green]' on positionne le servo au point milieu[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500     [/COLOR][COLOR=Green]' Pause de 1 seconde
[/COLOR]
[COLOR=Blue]loop[/COLOR]
Tu relies l'entrée C.4 du proto à C.1 de ce picaxe avec une R de 330 Ohms
Tu relies l'entrée C.3 du proto à C.2 de ce picaxe avec une R de 330 Ohms

Ce programme est la copie de l'animation que tu souhaites.

par contre :


Code:
[COLOR=Navy]#picaxe [/COLOR][COLOR=Black]08M2[/COLOR]

[COLOR=Green]'######'####################    configuration    ################################   [/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]pinC.1   [/COLOR][COLOR=Green]'à relier à C.4 par R330[/COLOR]
[COLOR=Blue]symbol [/COLOR][COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Purple]PinC.2   [/COLOR][COLOR=Green]'à relier à C.3 par R330[/COLOR]
[COLOR=Purple]dirsC [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]%110[/COLOR]

[COLOR=Blue]do[/COLOR]

[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0  [/COLOR][COLOR=Green]'ligne droite[/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500  
  [/COLOR]
[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]1   [/COLOR][COLOR=Green]'virage à gauche[/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500  [/COLOR]

[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0   [/COLOR][COLOR=Green]'ligne droite[/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]0[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500  
   [/COLOR]
[COLOR=Purple]S_inter1 [/COLOR][COLOR=DarkCyan]= [COLOR=Navy]0[/COLOR][/COLOR][COLOR=Navy]   [/COLOR][COLOR=Green]'virage à droite[/COLOR]
[COLOR=Purple]S_inter2 [/COLOR][COLOR=DarkCyan]= [/COLOR][COLOR=Navy]1[/COLOR]
[COLOR=Blue]pause [/COLOR][COLOR=Navy]1500  [/COLOR]
[COLOR=Blue]loop[/COLOR]
ce code te permet d'agir simultanément sur les deux servos: un revient au neutre pendant que l'autre va en fin de course.

à remarquer que si tu réduis la tempo, le servo ne va pas en fin de course, ce qui est conforme à la réalité.
tu peux aussi pour la démo mettre une tempo qui est une fonction aléatoire. (voir instruction random )

remplacer pause xxx par:

random w1 : w1 = b2*3 + 750
pause w1

fera varier la pause entre 750 et 1500
 

PieM

Senior Member
Bonjour Piem

Mais pour les codes que tu me donne, il faut une action des inter non ?
Non !
Sur le programme initial, (picaxe1) les inters sont reliés aux entrées C.4 et C.3
ces inters te donnaient une info 0V ou 5V en fonction de la position moto.

Version démo, on ne met plus d'inter:
on mets un second 08M2 (picaxe2) qui sur ses sorties C.1 et C.2 va envoyer du 0V ou du 5V en fonction du dernier programme que je t'ai donné . Ces sorties sont reliées aux entrées C.4 et C.3 du picaxe P1 (via une R de sécurité)
 

ludo0404

Senior Member
Non !
Sur le programme initial, (picaxe1) les inters sont reliés aux entrées C.4 et C.3
ces inters te donnaient une info 0V ou 5V en fonction de la position moto.

Version démo, on ne met plus d'inter:
on mets un second 08M2 (picaxe2) qui sur ses sorties C.1 et C.2 va envoyer du 0V ou du 5V en fonction du dernier programme que je t'ai donné . Ces sorties sont reliées aux entrées C.4 et C.3 du picaxe P1 (via une R de sécurité)
Bon en fait j'ai fait à la lettre ce que tu m'a dit et ca marche !!

merci beaucoup pour tes conseils et solutions, je vais paufiner tout ca !
 

PieM

Senior Member
Bon en fait j'ai fait à la lettre ce que tu m'a dit et ca marche !!

merci beaucoup pour tes conseils et solutions, je vais paufiner tout ca !
Super.
pense aussi que les vitesses sont paramétrées et peuvent être différentes dans les deux sens.
Bonne route ...
 
Top