Arduino Forum

International => Français => Topic started by: Hardach on Jul 18, 2019, 11:18 pm

Title: 9 Axis motion Shield : aucune valeur
Post by: Hardach on Jul 18, 2019, 11:18 pm
Bonjour à tous,

je suis novice sur Arduino, je viens d'acheter une carte UNO et un "9 Axis Motion Shield" pour un projet particulier.

J'ai fait mes premiers programmes/sketchs sur la UNO en suivant qq tutos et ça marche.

Par contre pour le shield 9 axes, ça ne se passe pas bien. Les programmes d'exemples compilent, et semblent tourner correctement mais les valeurs renvoyées (euler angles, accélérations…) restent toutes à 0.


Il y a sans doute un truc hyper basique qui échappe à un débutant comme moi...

Avez vous une idée de ce que cela peut être svp ?


Title: Re: 9 Axis motion Shield : aucune valeur
Post by: supercc on Jul 18, 2019, 11:44 pm
Bonsoir,

Quote
Il y a sans doute un truc hyper basique qui échappe à un débutant comme moi...
Peut-être que poster ton code et un schéma des branchements aiderai ;-)



Title: Re: 9 Axis motion Shield : aucune valeur
Post by: Hardach on Jul 19, 2019, 07:42 pm
Pas faux:-) mais en fait il s'agit des exemples fournis dans les librairies, je n'ai rien changé.
Voici l'exemple de code Euler.ino pour lire les angles de rotation :


#include "NAxisMotion.h"        //Contains the bridge code between the API and the Arduino Environment
#include <Wire.h>

NAxisMotion mySensor;         //Object that for the sensor
unsigned long lastStreamTime = 0;     //To store the last streamed time stamp
const int streamPeriod = 20;          //To stream at 50Hz without using additional timers (time period(ms) =1000/frequency(Hz))

void setup() //This code is executed once
{   
  //Peripheral Initialization
  Serial.begin(115200);           //Initialize the Serial Port to view information on the Serial Monitor
  I2C.begin();                    //Initialize I2C communication to the let the library communicate with the sensor.
  //Sensor Initialization
  mySensor.initSensor();          //The I2C Address can be changed here inside this function in the library
  mySensor.setOperationMode(OPERATION_MODE_NDOF);   //Can be configured to other operation modes as desired
  mySensor.setUpdateMode(MANUAL);   //The default is AUTO. Changing to MANUAL requires calling the relevant update functions prior to calling the read functions
  //Setting to MANUAL requires fewer reads to the sensor 
}

void loop() //This code is looped forever
{
  if ((millis() - lastStreamTime) >= streamPeriod)
  {
    lastStreamTime = millis();   
    mySensor.updateEuler();        //Update the Euler data into the structure of the object
    mySensor.updateCalibStatus();  //Update the Calibration Status

    Serial.print("Time: ");
    Serial.print(lastStreamTime);
    Serial.print("ms ");

    Serial.print(" H: ");
    Serial.print(mySensor.readEulerHeading()); //Heading data
    Serial.print("deg ");

    Serial.print(" R: ");
    Serial.print(mySensor.readEulerRoll()); //Roll data
    Serial.print("deg");

    Serial.print(" P: ");
    Serial.print(mySensor.readEulerPitch()); //Pitch data
    Serial.print("deg ");
   
    Serial.print(" A: ");
    Serial.print(mySensor.readAccelCalibStatus());  //Accelerometer Calibration Status (0 - 3)
   
    Serial.print(" M: ");
    Serial.print(mySensor.readMagCalibStatus());    //Magnetometer Calibration Status (0 - 3)
   
    Serial.print(" G: ");
    Serial.print(mySensor.readGyroCalibStatus());   //Gyroscope Calibration Status (0 - 3)
   
    Serial.print(" S: ");
    Serial.print(mySensor.readSystemCalibStatus());   //System Calibration Status (0 - 3)

    Serial.println();
  }
}

Et pour ce qui est du câblage, et bien il n'y en a aucun, j'ai juste plugué le shield 9 axis sur la carte uno.


J'ai essayé également l'exemple de projet ici : https://create.arduino.cc/projecthub/techmirtz/using-9-axes-motion-shield-with-arduino-e71107?ref=search&ref_id=9%20axis&offset=0


ça compile mais toutes les valeurs à 0.

L'impression que j'ai est que l'arduino ne communique pas avec le shield.

D'après le code je crois comprendre que les deux communiquent via le bus I2C.

J'ai trouver un programme de scan du bus I2C et quand il s'execute il ne trouve rien, donc je pense que le shield n'est pas détecté.

J'ai trouvé qq articles qui parlent des lignes SDA et SCL nécessaires au bus I2C. Est ce qu'il faut connecter des broches complémentaires pour ces lignes même quand on a plugué le shield dans le connecteur de l'arduino ?



Merci d'avance
David



Title: Re: 9 Axis motion Shield : aucune valeur
Post by: supercc on Jul 19, 2019, 08:22 pm
Bon si c'est le shield  :-~

EDIT : mets ton code entre balise code STP comme expliqué ici (https://forum.arduino.cc/index.php?topic=315372.0).

Désolé, je ne peux pas d'aider sur l'I2C mais d'autres forumeurs certainement...

EDIT2 : là (https://ev3dev-lang-java.github.io/docs/support/fundamentals/sensors/arduino/arduino-9-axes-motion-shield-BNO055.html) il y a un autre exemple qui fait explicitement la mise à jour des données des capteurs en mode MANUAL (via les fonctions du style mySensor.update*()). Comme tu es en mode MANUAL aussi tu dois peut-être aussi le faire avant de pouvoir lire.
Title: Re: 9 Axis motion Shield : aucune valeur
Post by: Hardach on Jul 19, 2019, 09:03 pm
Merci pour ton retour.
Ok pour les balises, je le saurai pour la prochaine fois

Je viens d'essayer le code derrière le lien que tu as indiqué, le résultat est le même malheureusement, toutes les valeurs sont à 0. C'était une belle piste pourtant

Je commence à me demander si le shied n'est pas endommagé...


Title: Re: 9 Axis motion Shield : aucune valeur
Post by: supercc on Jul 19, 2019, 09:11 pm
J'espère que tu auras des infos, je ne sais pas si c'est normal que le scanner i2c échoue.
Title: Re: 9 Axis motion Shield : aucune valeur
Post by: Hardach on Jul 19, 2019, 09:21 pm
oui, c'est aussi ce qui m'inquiète.

Merci à toi en tout cas.