/******************************************* Sample sketch that configures an HMC5883L 3 axis magnetometer to continuous mode and reads back the three axis of data. Code compiles to a size of 1500 bytes Equivalent Wire Library code compiles to 2032 bytes *******************************************/ #include #define HMC5883L 0x1E int x = 0; int y = 0; int z = 0; void setup() { I2c.begin(); I2c.write(HMC5883L,0x02,0x00); //configure device for continuous mode } void loop() { I2c.read(HMC5883L,0x03,6); //read 6 bytes (x,y,z) from the device x = I2c.receive() << 8; x |= I2c.receive(); y = I2c.receive() << 8; y |= I2c.receive(); z = I2c.receive() << 8; z |= I2c.receive(); } /* Wire library equivalent would be this //#include #define HMC5883L 0x1E int x = 0; int y = 0; int z = 0; void setup() { Wire.begin(); Wire.beginTransmission(HMC5883L); Wire.send(0x02); Wire.send(0x00); Wire.endTransmission(); } void loop() { Wire.beginTransmission(HMC5883L); Wire.send(0x03); Wire.endTransmission(); Wire.requestFrom(HMC5883L,6); x = Wire.receive() << 8; x |= Wire.receive(); y = Wire.receive() << 8; y |= Wire.receive(); z = Wire.receive() << 8; z |= Wire.receive(); } ********************************************/