HMC5883L a 3osý magnetometr Arduino

Výukový program ukazuje, jak ovládat digitální magnetometr pomocí Arduina.

Příklad používá následující prvky:

Připojení senzoru k Arduinu:

Modul komunikuje prostřednictvím populární sběrnice I2C. Připojení k Arduinu by tedy mělo být provedeno následovně:

Modul HMC5883L Pin Arduino
VCC 5 V
GND GND
SCL A5
SDA A4

Schéma připojení magnetometru k Arduino Uno.

Program pro Arduino

V příkladu byl použit následující kód:

  1. #include // knihovna I2C
  2. #define address 0x1E // adresa modulu HMC5883L pro I2C
  3. void setup () {
  4. Serial.begin (9600); // inicializuje sériovou komunikaci
  5. Wire.begin (); // inicializace modulu
  6. // Nastavte vhodný režim senzoru
  7. Wire.beginTransmission (adresa); // otevřená komunikace
  8. Wire.write (0x02); // vyberte registr režimu
  9. Wire.write (0x00); // režim nepřetržitého měření
  10. Wire.endTransmission ();
  11. }
  12. void loop () {
  13. int x, y, z; // proměnné pro tři osy
  14. // Nastavení adresy pro čtení dat
  15. Wire.beginTransmission (adresa);
  16. Wire.write (0x03); // výběr registru 3, registr MSB v ose X.
  17. Wire.endTransmission ();
  18. // Číst data pro každou osu, dva registry pro jednu osu
  19. Wire.requestFrom (adresa, 6);
  20. if (6 <= Wire.available ()) {
  21. x = Wire.read () << 8; // MSB osy X.
  22. x | = Wire.read (); // LSB osy X.
  23. z = Wire.read () << 8; // MSB osy Z.
  24. s | = Wire.read (); // LSB osy Z.
  25. y = Wire.read () << 8; // MSB osy Y.
  26. y | = Wire.read (); // LSB osy Y.
  27. }
  28. // Zobrazení dat na sériovém monitoru
  29. Serial.print ("x:");
  30. Serial.print (x);
  31. Serial.print ("y:");
  32. Sériové výtisky;
  33. Serial.print ("od:");
  34. Serial.println (z);
  35. zpoždění (250); // zpoždění mezi měřeními 250 ms
  36. }

Účinky programu můžeme vidět níže:

Screenshot sériového monitoru.

zveme vás ke spolupráci!