Aller au contenu


Photo
- - - - -

problème contrôle servo avec un joystick

gestion servo manette ps3

  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 boulaz

boulaz

    Membre

  • Membres
  • 12 messages

Posté 24 janvier 2017 - 11:03

bonjour,

 

je viens vous voir car j'ai un problème pour gérer un servo avec une manette de ps3

 

actuellement j'arrive a faire pivoter mon servo de 0 a 180° avec joystick

 

ci-dessous le code que j'utilise

 

Fichier joint  test gestion servo ps3.PNG   54,72 Ko   17 téléchargement(s)

 

mon problème c'est que je voudrais que mon servo fasse 0 - 180° puis revienne a 0° et ainsi de suite tant que le joystick est actionné ( marche avant d'un hexapod)

 

j'ai réussi en utilisant la touche 'up'

 

 Fichier joint  test marche AV.PNG   35,56 Ko   20 téléchargement(s)

 

pouvez vous m'aider a comprendre la marche a suivre, quel fonction prendre pour que ce soit mon joystick qui ordonne cette action

 

merci d'avance pour vos conseils 

 



#2 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 333 messages
  • Gender:Male

Posté 24 janvier 2017 - 11:24

Salut!

Normalement lorsque ton joystique est en position "normale" (au centre) la valeur que tu récupères en x et en y vaut 128 (255 divisé par 2).

Du coup au lieu d'exécuter l'enchaînement des angles lorsque tu presses le bouton "haut" tu peux exécuter l'enchaînement lorsque la valeur du joystique est > à 128 par exemple. Voir > 130 ou 135 pour te laisser une petite marge.

#3 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 964 messages
  • Gender:Male
  • Location:Anglet

Posté 25 janvier 2017 - 01:23

Bonjour 

 

 

 

 

actuellement j'arrive a faire pivoter mon servo de 0 a 180° avec joystick

 

mon problème c'est que je voudrais que mon servo fasse 0 - 180° puis revienne a 0° et ainsi de suite tant que le joystick est actionné ( marche avant d'un hexapod)

 

 

 

l'autre partie de la réponse est selon moi dans la question =) 

Il faut que tu fasses une boucle " tant que "  = boucle "while" .  qui prend en condition le paramètre qui t'intéresse pour déclencher l'action. 

 

Exemple avec le bouton up par rapport à ton second code :

 

Au lieu de faire un

if (PS3.getButtonPress(UP) )  

Essais de faire: 

while (PS3.getButtonPress(UP) )  

 

et ensuite pour utiliser le joystick à la place du bouton up la méthode fournit par ashira est bonne ;) il te restera à remplaver la condition

PS3.getButtonPress(UP) par    PS3.getAnalogHat(RightHatX) > 135    ( 135 ou autre chiffre à toi de le régler ;) )

 

 

Si tu es débutant avec arduino, même si tu as un peu dépassé le stade tout premiers pas je te recommande de lire :  l'ouvrage robot-maker pour débuter avec arduino

 

La 6 ème page traite des boucles et des conditions dont la boucle while. 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#4 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 25 janvier 2017 - 10:43

(...)

Il faut que tu fasses une boucle " tant que "  = boucle "while" .  qui prend en condition le paramètre qui t'intéresse pour déclencher l'action. 

Exemple avec le bouton up par rapport à ton second code :

 

(...)

 

Heu, c'est plutôt une mauvaise idée : la fonction "loop" est déjà une boucle en soit. En faisant un while de durée inconnue (quand s'arrête la pression sur le joystick ? Pas moyen de savoir), tu bloques ton programme à ce point là et tu empêches toute autre mise à jour (e.g. lecture éventuelle de capteur) qui pourrait être importante (si par exemple, le mouvement de la patte dépend des obstacles en face du robot). La solution d'Ashira me semble plus adaptée au problème.


R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#5 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 964 messages
  • Gender:Male
  • Location:Anglet

Posté 25 janvier 2017 - 11:10

@R1D1 Je suis en partie d'accord avec toi R1D1 , de toute façon cela dépend de ce qu'on souhaite faire et de la façon de programmer... On peut au contraire souhaiter ne faire qu'une partie de l'ensemble de la fonction loop en boucle... Il n'y a pas de bonne ou mauvaise façon de faire, il y a des façon qui sont plus efficaces que d'autres ... 
C'est un peu comme dire qu'utiliser la fonction delay est une mauvaise idée...  

Quoi qu'il en soit ma remarque n'est pas du tout une solution différente de celle d'ashira, mais juste un complément. 

Ashira propose bien une bonne solution pour utiliser le joystick ( que je reprend dans mon exemple ;) )


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#6 boulaz

boulaz

    Membre

  • Membres
  • 12 messages

Posté 25 janvier 2017 - 09:23

bonjour,

 

je vous remercie pour toute ces info, je pense que sa va bien m'aider pour commencer 

 

je vais tester tous ça ce soir et je vous dirait ce qu'il en est.

 

 

 

 

 

  

 

 

Si tu es débutant avec arduino, même si tu as un peu dépassé le stade tout premiers pas je te recommande de lire :  l'ouvrage robot-maker pour débuter avec arduino

 

La 6 ème page traite des boucles et des conditions dont la boucle while. 

 

 

merci pour le lien, je vais le lire tranquillement et pour ce que j'ai vu dedans ça ne pourra que m'aider dans ma réalisation

 

 merci encore pour votre aide   :thank_you:



#7 boulaz

boulaz

    Membre

  • Membres
  • 12 messages

Posté 29 janvier 2017 - 12:20

bonjour,
 
j'ai réussi a faire ce que je voulais avec vos conseil mais j'ai encore 3 petites question 
 
comment faire pour que deux servo fasse la même action quand j'appui sur une touche (ex: PS3.getButtonPress(UP) car j'ai pas réussi 
 
j'ai voulu gérer la vitesse du servo1 mais sans succès, pouvez vous me dire ou est mon erreur (PS3.getAnalogHat(LeftHatY) >= 130) une fois avec 'delay(500) et l'autre 'delay(200)
 
et la dernière
pourquoi mon servo exécute 2 fois ce que je lui demande ex: 
 
servo1.write(pos += 80);
    delay(500);
    servo1.write(pos -= 80);
    delay(500);
 
moi je lui demande de le faire (de 90° a 170° puis de revenir a  90°) et lui il le fais 2 fois
 
ci-dessous un bout du code 
 
 
 
merci d'avance pour votre  :thank_you:

Fichier(s) joint(s)

  • Fichier joint  test 2.PNG   58,34 Ko   0 téléchargement(s)


#8 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 29 janvier 2017 - 02:32

pourquoi mon servo exécute 2 fois ce que je lui demande ex: 
 
servo1.write(pos += 80);

    delay(500);

    servo1.write(pos -= 80);

    delay(500);

moi je lui demande de le faire (de 90° a 170° puis de revenir a  90°) et lui il le fais 2 fois
 

 

S'il n'y a que cette action qui se répète, c'est peut-être parce que ton code se répète

 

Edit : c'est plus sympa quand la code est en texte, entre les balise pour le code plutôt qu'en image.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#9 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 964 messages
  • Gender:Male
  • Location:Anglet

Posté 29 janvier 2017 - 04:13

très bientôt un tutoriel pour pouvoir faire encore mieux qu'une image ou le code entre balise ;)   ( arduino web editor ;) )


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users