• Welcome to Forum des utilisateurs de Blockly(s). Please login or sign up.
 

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Sujets - Fabrice

1
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.