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:
#include// knihovna I2C #define address 0x1E // adresa modulu HMC5883L pro I2C void setup () { Serial.begin (9600); // inicializuje sériovou komunikaci Wire.begin (); // inicializace modulu // Nastavte vhodný režim senzoru Wire.beginTransmission (adresa); // otevřená komunikace Wire.write (0x02); // vyberte registr režimu Wire.write (0x00); // režim nepřetržitého měření Wire.endTransmission (); } void loop () { int x, y, z; // proměnné pro tři osy // Nastavení adresy pro čtení dat Wire.beginTransmission (adresa); Wire.write (0x03); // výběr registru 3, registr MSB v ose X. Wire.endTransmission (); // Číst data pro každou osu, dva registry pro jednu osu Wire.requestFrom (adresa, 6); if (6 <= Wire.available ()) { x = Wire.read () << 8; // MSB osy X. x | = Wire.read (); // LSB osy X. z = Wire.read () << 8; // MSB osy Z. s | = Wire.read (); // LSB osy Z. y = Wire.read () << 8; // MSB osy Y. y | = Wire.read (); // LSB osy Y. } // Zobrazení dat na sériovém monitoru Serial.print ("x:"); Serial.print (x); Serial.print ("y:"); Sériové výtisky; Serial.print ("od:"); Serial.println (z); zpoždění (250); // zpoždění mezi měřeními 250 ms }
Účinky programu můžeme vidět níže:
Screenshot sériového monitoru.