Logique : gérer mouvement de 2 moteurs avec des "ou" et "et"
Résolu
poparnassus
Messages postés
426
Date d'inscription
Statut
Membre
Dernière intervention
-
poparnassus Messages postés 426 Date d'inscription Statut Membre Dernière intervention -
poparnassus Messages postés 426 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai besoin de réaliser un code en C pour gerer deux moteur (des chenilles), la finalité de ce code
JDX_Mx , JDY_Mx , JGX_Mx , JGY_Mx qui represente les valeurs de mes joystique en pourcentage.
L'objectif est que je dois envoyer deux variables à un robot,
Puissance roue gauche : PRoueG
Puissance roue droite : PRoueD
Probleme j'arrive pas a inclure les mouvement avancer et reculer
j'ai essayer ca mais ca marche pas:
je travaille avec l'axe Y joystique gauche pour géréé la puissance du courant envyer dans les moteurs, et l'axe X joystick droit pour géré mes mouvement gauche et droit.
j'arrive pas à faire tenir compte le fais que quand je deplace mon axe X à droite de 30%, par ex, et que mon axe Y joy gauche est à 25% par ex, les 30% de x qui represente une reduction de 30% de la puissance qui est appliqué donc 25 % (axe y joy gauche)
Et de plus, y a certain incoherence dans mes conditions ca marche pas bien
j'ai besoin de réaliser un code en C pour gerer deux moteur (des chenilles), la finalité de ce code
JDX_Mx , JDY_Mx , JGX_Mx , JGY_Mx qui represente les valeurs de mes joystique en pourcentage.
L'objectif est que je dois envoyer deux variables à un robot,
Puissance roue gauche : PRoueG
Puissance roue droite : PRoueD
// Une simple rotation, à gauche ou à droite sans avancer ni reculer. if((input->JGY_Mx == 0) && (input->JDX_Mx < 0)) //Rotation Gauche Sans Avance ni reculer { input->PRoueG = input->JDX_Mx; input->PRoueD = -input->JDX_Mx; } else if ((input->JGY_Mx == 0) && (input->JDX_Mx > 0))//Rotation Droite Sans Avance ni reculer { input->PRoueG = input->JDX_Mx; input->PRoueD = -input->JDX_Mx; } printf("Roue gauche: %d\n\n",input->PRoueG); printf("Roue droite: %d\n\n",input->PRoueD); //Ca fonctionne j'obtiens bien des valeurs opposé pour PRoueG et PRoueD si mon joystick est à mis parcour genre, 50% à gauche j'obtiens biens PRoueG=-50 et PRoueD=50
Probleme j'arrive pas a inclure les mouvement avancer et reculer
j'ai essayer ca mais ca marche pas:
if ((input->JGY_Mx > 0) && (input->JDX_Mx < 0)) // Avancer et tourner a gauche { input->PRoueG = 100 + input->JDX_Mx; input->PRoueD = input->JGY_Mx; } else if ((input->JGY_Mx > 0) && (input->JDX_Mx > 0)) // Avancer et tourner a droite { input->PRoueG = input->JGY_Mx ; input->PRoueD = 100 - input->JGY_Mx ; } if ((input->JGY_Mx < 0) && (input->JDX_Mx < 0)) // reculer et tourner a gauche { input->PRoueG = input->JGY_Mx - (input->JGY_Mx - input->JDX_Mx); input->PRoueD = input->JGY_Mx; } else if ((input->JGY_Mx < 0) && (input->JDX_Mx > 0)) { input->PRoueG = input->JGY_Mx ; input->PRoueD = input->JGY_Mx - (input->JGY_Mx - input->JDX_Mx); } printf("Roue gauche: %d\n\n",input->PRoueG); printf("Roue droite: %d\n\n",input->PRoueD);
je travaille avec l'axe Y joystique gauche pour géréé la puissance du courant envyer dans les moteurs, et l'axe X joystick droit pour géré mes mouvement gauche et droit.
j'arrive pas à faire tenir compte le fais que quand je deplace mon axe X à droite de 30%, par ex, et que mon axe Y joy gauche est à 25% par ex, les 30% de x qui represente une reduction de 30% de la puissance qui est appliqué donc 25 % (axe y joy gauche)
Et de plus, y a certain incoherence dans mes conditions ca marche pas bien
A voir également:
- Logique : gérer mouvement de 2 moteurs avec des "ou" et "et"
- Et logique excel - Guide
- Lecteur logique ✓ - Forum Windows
- Afpa tests niveau 3 d'entrée en formation : français, maths, logique - Forum Études / Formation High-Tech
- Tableau analyse logique pdf - Guide
- Simulateur logique combinatoire en ligne - Télécharger - Vie quotidienne
1 réponse
1er probleme dans Rotation Droite Sans Avance ni reculer, jobtien PRoueG = 0 et PRoueD =100, alors que je devrais avoir PRoueG= -100
2eme probleme dans Avancer et reculer, si j'avance 20 % et tourne de plus de 20% mes valeurs passe en negatif et je ne leveux pas
2eme probleme dans Avancer et reculer, si j'avance 20 % et tourne de plus de 20% mes valeurs passe en negatif et je ne leveux pas
if((input->JGY_Mx == 0) && (input->JDX_Mx == 0)) //mise à zero { input->PRoueG = 0; input->PRoueD = 0; } if((input->JGY_Mx == 0) && (input->JDX_Mx < 0)) //Rotation Gauche Sans Avance ni reculer { input->PRoueG = input->JDX_Mx; input->PRoueD = -input->JDX_Mx; } else if ((input->JGY_Mx == 0) && (input->JDX_Mx > 0))//Rotation Droite Sans Avance ni reculer { input->PRoueG = input->JDX_Mx; input->PRoueD = -input->JDX_Mx; } if((input->JGY_Mx > 0) && (input->JDX_Mx == 0)) // avancer { input->PRoueG =input->JGY_Mx; input->PRoueD = input->JGY_Mx; } else if ((input->JGY_Mx < 0)&&(input->JDX_Mx == 0)) { input->PRoueG = input->JGY_Mx; input->PRoueD = input->JGY_Mx; } //Avancer if((input->JGY_Mx > 0)&&(input->JDX_Mx < 0)) // tourner a gauche { input->PRoueG = input->JGY_Mx + input->JDX_Mx; input->PRoueD = input->JGY_Mx; } else if (input->JDX_Mx > 0) //tourner a droite { input->PRoueG = input->JGY_Mx ; input->PRoueD = input->JGY_Mx - (input->JDX_Mx); } //reculer if ((input->JGY_Mx < 0) && (input->JDX_Mx < 0)) // tourner a gauche { input->PRoueG = input->JGY_Mx - input->JDX_Mx; input->PRoueD = input->JGY_Mx; } else if ((input->JGY_Mx < 0) &&(input->JDX_Mx > 0)) //tourner a droite { input->PRoueG = input->JGY_Mx ; input->PRoueD = input->JGY_Mx + (input->JDX_Mx); } printf("Roue gauche: %d\n\n",input->PRoueG); printf("Roue droite: %d\n\n",input->PRoueD);