Nature du projet
Motor shield V3 joystick deux moteurs
Bonjour,
Je suis complètement débutant dans le monde de l'arduino et voici mon projet :
- Un moteur DC sur l'axe X : mobilise l'objet horizontalement
- Un moteur DC sur l'axe Y : mobilise l'objet verticalement
- Une carte Arduino Motor shield V3 comprenant : Blindage Contrôleur de Moteur Arduino V3 + Microcontrôleur Arduino Mega 2560 Rev3
- Une plaque à essai, des résistances 10 Ohms, des potentiomètres des cables pour breadboard M/M
- Un joystick avec carte de déploiement intégrée : http://www.robotshop.com/eu/fr/mini-...he-cytron.html
- 4 interrupteurs de fin de course placés aux extrémités X et Y pour stopper le moteur concerné
Je souhaite que l'objet puisse se déplacer avec le joystick dans la direction X ou Y ou les deux simultanément selon une vitesse de moteur constante mais diminuée par rapport à l'initiale avec un arrêt du moteur concerné lorsque l'interrupteur de fin de course est enclenché.
Pouvez-vous m'aider en termes de branchements (je ne comprends pas les schémas théoriques) ? Pouvez-vous m'aider pour le code de la carte Arduino ?
Je vous mets en photo mes branchements pour mon essai avec juste les deux moteurs et le joystick
Et voici mon code pour ce premier montage qui ne fonctionne pas.
Merci à vous
Code:const int vitesseMotA=3; // Constante pour la broche 3 const int sensMotA=12; // Constante pour la broche 12 const int freinMotA=9; // Constante pour la broche 9 const int intensiteMotA=A0; // intensité du moteur 0 const int vitesseMotB=11; // Constante pour la broche 11 const int sensMotB=13; // Constante pour la broche 13 const int freinMotB=8; // Constante pour la broche 8 const int intensiteMotB=A1; // intensité du moteur 1 // --- Déclaration des constantes des broches analogiques --- //const int Voie[6]={0,1,2,3,4,5}; //declaration constante de broche analogique // --- Déclaration des variables globales --- // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- // --- Déclaration des constantes des broches analogiques --- const int axe1Joystick=2; // Constante pour la broche analogique 2 const int axe2Joystick=3; // Constante pour la broche analogique 3 // --- Déclaration des variables globales --- int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique int positionAxe1=0; // Variable pour acquisition résultat brut de conversion analogique numérique axe 1 Joystick int positionAxe2=0; // Variable pour acquisition résultat brut de conversion analogique numérique axe 2 Joystick void setup() { // debut de la fonction setup() // --- ici instructions à exécuter 1 seule fois au démarrage du programme --- // ------- Initialisation fonctionnalités utilisées ------- Serial.begin(115200); // ------- Broches en sorties numériques ------- pinMode (vitesseMotA,OUTPUT); // Broche vitesseMotA configurée en sortie pinMode (freinMotA,OUTPUT); // Broche freinMotA configurée en sortie pinMode (vitesseMotB,OUTPUT); // Broche vitesseMotB configurée en sortie pinMode (sensMotA,OUTPUT); // Broche sensMotA configurée en sortie pinMode (sensMotB,OUTPUT); // Broche senMotB configurée en sortie // ------- Broches en entrées numériques ------- pinMode (bpJoystick,INPUT); // Broche bpJoystick configurée en entrée // ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ------- // Les BP du shield Joystick + BPx2 dispose d'un rappel au plus sur le shield // ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ------- // ------- Initialisation des variables utilisées ------- // ------- Codes d'initialisation utile ------- digitalWrite(vitesseMotA,LOW); // a l'arret digitalWrite(sensMotA,LOW); digitalWrite(freinMotA,LOW); // frein off digitalWrite(vitesseMotB,LOW); // à l'arret digitalWrite(sensMotB,LOW); digitalWrite(freinMotB,LOW); // frein off } void loop(){ // debut de la fonction loop() //----- lecture position Joytstick positionAxe1=analogRead(axe1Joystick); // acquisition conversion analogique numérique sur broche analogique axe 1 positionAxe2=analogRead(axe2Joystick); // acquisition conversion analogique numérique sur broche analogique axe 2 if (positionAxe1>700) { digitalWrite(vitesseMotA,HIGH); digitalWrite(sensMotA,HIGH); } if (positionAxe1<300) { digitalWrite(vitesseMotA,HIGH); digitalWrite(sensMotA,LOW); } if (positionAxe2>700) { digitalWrite(vitesseMotB,HIGH); digitalWrite(sensMotB,HIGH); } if (positionAxe2<300) { digitalWrite(vitesseMotA,HIGH); digitalWrite(sensMotA,LOW); } while(1); // stop loop }
-----