0% found this document useful (0 votes)
272 views1 page

Include - Wire.h

This code configures an Arduino to communicate with an HMC5883 magnetometer over I2C to continuously read magnetic field data from its three axes. It sets the I2C address and register for continuous measurement mode, then in a loop reads the 6 bytes of x, y, z axis data from register 3, combining the 2 bytes for each value, and prints the results to the serial monitor every 500ms.

Uploaded by

Losa Fernandez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
272 views1 page

Include - Wire.h

This code configures an Arduino to communicate with an HMC5883 magnetometer over I2C to continuously read magnetic field data from its three axes. It sets the I2C address and register for continuous measurement mode, then in a loop reads the 6 bytes of x, y, z axis data from register 3, combining the 2 bytes for each value, and prints the results to the serial monitor every 500ms.

Uploaded by

Losa Fernandez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 1

#include <Wire.

h> //I2C Arduino Library

#define addr 0x1E //I2C Address for The HMC5883

void setup(){

Serial.begin(9600);
Wire.begin();

Wire.beginTransmission(addr); //start talking


Wire.write(0x02); // Set the Register
Wire.write(0x00); // Tell the HMC5883 to Continuously Measure
Wire.endTransmission();
}

void loop(){

int x,y,z; //triple axis data

//Tell the HMC what regist to begin writing data into


Wire.beginTransmission(addr);
Wire.write(0x03); //start with register 3.
Wire.endTransmission();

//Read the data.. 2 bytes for each axis.. 6 total bytes


Wire.requestFrom(addr, 6);
if(6<=Wire.available()){
x = Wire.read()<<8; //MSB x
x |= Wire.read(); //LSB x
z = Wire.read()<<8; //MSB z
z |= Wire.read(); //LSB z
y = Wire.read()<<8; //MSB y
y |= Wire.read(); //LSB y
}

// Show Values
Serial.print("X Value: ");
Serial.println(x);
Serial.print("Y Value: ");
Serial.println(y);
Serial.print("Z Value: ");
Serial.println(z);
Serial.println();

delay(500);
}

You might also like