Page 1 of 1

[Topic] Programmation arduino analogique + joystick

Posted: Sat 26 Mar 2016, 21:43
by miniracer0900
Bonjour,

Voici un petit topic pour ceux qui souhaitent intégrer un Arduino et un joystick sur une commande de robot ;)

- Les composants

Bien choisir ses composants est fondamental, mais il faut faire attention à ne pas faire exploser le budget, c'est pour cela que je vous conseil de tout prendre sur Ebay en chine, cela vous coûtera autour de 10€ au final.

L'arduino nano: http://www.ebay.fr/itm/Useful-Device-fo ... SwSHZWe0ni

Le joystick: http://www.ebay.fr/itm/JoyStick-Module- ... Sw--1Wqyko

Les shields (en prendre deux, un par moteur): http://www.ebay.fr/itm/VNH2SP30-Monster ... SwYlJW2A1N

Et surtout n'oubliez pas de prendre du câble, un de forte section pour les moteurs et l'alimentation, et du fin pour les connections à l'Arduino.

Sans plus attendre, voici le code avec en commentaire les pins connectés:

Code: Select all

int x; //création des valeurs
int y;
int a;
int b;
int motA;
int motB;
int pwmA = 3;   //brancher le port 3 de l'Arduino à l'entrée de la carte moteur A sur le port "PMW"
int dirA = 4;   //brancher le port 4 de l'Arduino à l'entrée de la carte moteur A sur le port "INA"
int dirAA = 5;  //brancher le port 5 de l'Arduino à l'entrée de la carte moteur A sur le port "INB"
int pwmB = 11;  //brancher le port 11 de l'Arduino à l'entrée de la carte moteur B sur le port "PMW"
int dirB = 8;   //brancher le port 8 de l'Arduino à l'entrée de la carte moteur B sur le port "INA"
int dirBB = 12; //brancher le port 12 de l'Arduino à l'entrée de la carte moteur B sur le port "INB"

void setup() {
   pinMode(pwmA, OUTPUT); //Attribution des pins
   pinMode(dirA, OUTPUT);
   pinMode(dirAA, OUTPUT);
   pinMode(pwmB, OUTPUT);
   pinMode(dirB, OUTPUT);
   pinMode(dirBB, OUTPUT);
   Serial.begin(9600);
}

void loop() {
  x = analogRead(A4); //brancher le port A4 de l'Arduino sur le port "Rx" du joystick
  y = analogRead(A5); //brancher le port A5 de l'Arduino sur le port "Ry" du joystick
  a = x - 511; //faire un étalonage des valeurs du potentiomètre
  b = y - 511; //regardez juste ce que donne la fonction Serial ;)
  Serial.println(x);
  motA = a + b; //équation logique du moteur A
  motB = a - b; //équation logique du moteur B
  if(motA > 0) {
  digitalWrite(dirA, HIGH);
  digitalWrite(dirAA, LOW);
  analogWrite(pwmA, motA/4);
  }
  else{
  digitalWrite(dirA, LOW);
  digitalWrite(dirAA, HIGH);
  analogWrite(pwmA, (-motA/4));
  }
  if(motB > 0) {
  digitalWrite(dirB, HIGH);
  digitalWrite(dirBB, LOW);
  analogWrite(pwmB, motB/4);
  }
  else{
  digitalWrite(dirB, LOW);
  digitalWrite(dirBB, HIGH);
  analogWrite(pwmB, (-motB/4));
  }
}
Note: Les joystick est orienté de façons à ce que les pins soient orientés vers l'arrière lorsqu'on le regarde du dessus
Note2: N'oubliez pas de relier les +5V et les GND entre eux sinon ça ne marchera pas :)
Note3: Pour le branchement des moteurs, vous trouverez de vous même quel moteur vas à droite, et quel moteur vas à gauche, ainsi que les polarités
Note4: Attention à la tension, les variateurs ne supportent pas au delà de 16V malgré leurs ampérage monstrueux
Note5: N'oubliez pas d'envoyer de 5V sur le "VIN" de l'Arduino et la masse sur un des "GND" de celui-ci

Voilà, j'espère que cela servira à certains qui manque de connaissances sur ce sujet ^^

Si vous avez des questions, n'hésitez pas à les poser ci-dessous ;)

@plus sur les trophées de robotique,
Mathieu