Je n'arrive pas à utiliser mon nouveau magnétomètre

Bonjour, je viens d'acheter un petit magnétomètre pour tester son efficacité mais impossible de le faire fonctionner avec I2C. J'utilise un arduino Nano.
Voici le lien du module : banggood.com
Voici le lien de la documentation : akm.com

Si quelqu'un pourrait m'aider en me donnant un bout de code me donnant la valeur des trois axes ce serait un grand pas pour moi !

Merci d'avance, Nico.

Bonjour
T'aider à quoi?
Tu as un code?
Qu'est-ce qui cloche? à quel moment?
Tu as tout bien c^ablé?
Tu as vérifié les soudures? L'alim?

Tu as essayé un code exemple type?
D'où vient le vent, comment fait-on les bébés?

Salut, tout est plein câblé sur une Bread Board, les analogRead sur le pin A4 (SDA) et le pin A5 (SCL) fonctionnent. Le seul problème est l'interprétation avec Wire.h, je n'arrive pas du tout a faire fonctionner l'I2C (je ne maîtrise pas ce protocole).
J'aimerais un code fonctionnel me renvoyant la valeur X; Y; Z de magnétomètre sous forme d'un float afin d'utiliser les valeurs par la suite.

Salut, commence par poster ton code actuel et bien préciser toutes les connexions.

Voici le code : hastebin
Voici les logs : hastebin

Visiblement, il bloque dans la commande endTransmission :
Essaye :

  Serial.println("Wire.endTransmission(false);");
  Wire.endTransmission(false);

//
// Originally, 'endTransmission' was an f(void) function.
// It has been modified to take one parameter indicating
// whether or not a STOP should be performed on the bus.
// Calling endTransmission(false) allows a sketch to
// perform a repeated start.
//
// WARNING: Nothing in the library keeps track of whether
// the bus tenure has been properly ended with a STOP. It
// is very possible to leave the bus in a hung state if
// no call to endTransmission(true) is made. Some I2C
// devices will behave oddly if they do not see a STOP.
//

Sinon, essaye de réinstaller la bibliothèque Wire ? ou de la mettre à jour.

En effet, et même en ajoutant false, il fait pareil...

Essaye avec 'true', j'ai peut-être mal compris les instructions...

Pareil...

Tu as essayé de désinstaller / réinstaller la bibliothèque ?

Sinon, endTransmission renvoie une valeur :

uint8_t TwoWire::endTransmission(uint8_t sendStop)
{
  // transmit buffer (blocking)
  int8_t ret = twi_writeTo(txAddress, txBuffer, txBufferLength, 1, sendStop);
  // reset tx buffer iterator vars
  txBufferIndex = 0;
  txBufferLength = 0;
  // indicate that we are done transmitting
  transmitting = 0;
  return ret;
}

Essaye de l’afficher. Les codes d’erreur sont indiqués ici

  1. if (twi_error == 0xFF)

  2. return 0; // success

  3. else if (twi_error == TW_MT_SLA_NACK)

  4. return 2; // error: address send, nack received

  5. else if (twi_error == TW_MT_DATA_NACK)

  6. return 3; // error: data send, nack received

  7. else

  8. return 4; // other twi error

  9. // ensure data will fit into buffer

  10. if(TWI_BUFFER_LENGTH < length){

  11. return 1;

Bonjour

Cela arrive en cas d'anomalie de cablage ou d'absence de resistances de pull up sur SDA et SCL.
Si ces lignes sont maintenues à GND l'arduino croit qu'un autre maître est en train de causer sur le bus et attend eternellement son tour.
Ce comportement est conforme aux principes I2C
La seule chose dommage, c'est que la bibliothèque wire n'intègre aucune gestion de timeout sur cette attente.