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 !
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.
//
// 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.
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.