Arduino Motor Shield V3

Démarré par Fabrice, Juin 23, 2016, 04:15:46 pm

« précédent - suivant »

Fabrice

Bonjour,
Le bloc moteur "Shield Arduino" (avec l'image du shield V3) pose deux problèmes :

1) il génère un code avec une erreur sur les numéros de pattes.

Les pattes sont bien définies (sauf les pattes A0 et A1 pour la mesure de l'intensité dans les moteurs qui est donc inutilisable, ainsi que les freins en  8 et 9, dommage...)
void setup()
{
  pinMode(12,OUTPUT);//directionPinA
  pinMode(13,OUTPUT);//directionPinB
  pinMode(3,OUTPUT);//speedPinA
  pinMode(11,OUTPUT);//speedPinB

}


mais le code généré contient une erreur en pilotant les mauvaise pattes du shield :
void forward()
{
  analogWrite(9,50);//Motor A speed                                                          patte 9 au lieu de la patte 3
  analogWrite(10,50);//Motor B speed                                                        patte 10 au lieu de la patte 11
  digitalWrite(7,LOW);//turn DC Motor B (right) move clockwise                  patte 7 au lieu de la patte 12
  digitalWrite(8,LOW);//turn DC Motor A (left) move clockwise                    patte 8 au lieu de la patte 13
}



Solution : utiliser le bloc "Carte moteur générique PWM", où l'on peut renseigner les pattes utilisées pour la direction et le signal pwm (la vitesse)
Conseil : utiliser des variables pour les vitesses des moteurs (voir ci-après)

2) cas où il y a différentes vitesses pour les moteurs[/u]
Lorsqu'on utilise plusieurs fois le bloc avance, en changeant les vitesses des moteurs directement dans le bloc, seule les vitesses du dernier bloc sont appliquées à l'ensemble du programme ; Le code C généré ne contient alors qu'une fonction "forward", ne prenant quel les valeurs de vitesse du dernier bloc "Avance" utilisé. Il faudrait modifier le script qui génère le code C de manière qu'il prenne en compte les valeurs numériques des vitesses, en utilisant deux variables, et non plus des constantes

Solution il faut créer deux variables (par exemple Vitesse_moteur_A et Vitesse_moteur_B)
On fixe les valeurs des vitesses juste avant d'utiliser le bloc moteur

Remarque : Ce problème est également présent sur les autres blocs moteurs, pour les autres cartes, donc si les vitesses varient, il faut toujours passer par des variables.


SebCanet

Merci des informations, je regarde ça aussi vite que possible.
Là je suis overbooké par un projet complémentaire....bientôt prêt.

SebCanet

1) dans le forward() les n° de pins ne correspondent pas à ceux déclarés dans le setup(). N'y a-t-il pas un pb de version de shield ?
Je suis preneur de toute version améliorée du code qui inclut les mesures + freins ! Perso je n'ai pas ce shield donc je ne peux pas tester par moi même.

2) J'ai modifié le code pour que la vitesse soit un paramètre externe à la fonction forward();
Merci de tester avant que je ne le généralise dans l'ensemble du fichier \generators\robot_motors.js