| I2C HMC6352 compass heading (sparkfun breakout) by BARRAGAN (http://barraganstudio.com) Demonstrates use of the Wire library reading data from the HMC6352 compass heading Created 28 April 2008 |

    // I2C HMC6352 compass heading (sparkfun breakout)
    // by BARRAGAN (http://barraganstudio.com)

    #include <TwoWire.h>

    int compassAddress = 0x42 >> 1;  // From datasheet compass address is 0x42
                                     // shift the address 1 bit right, the Wire library only needs the 7
                                     // most significant bits for the address
    int reading = 0;

    void setup()
    {
      Wire.begin();                // join i2c bus (address optional for master)
      Serial.begin(9600);          // start serial communication at 9600bps
      pinMode(48, OUTPUT);
      digitalWrite(48, HIGH);
    }

    void loop()
    {
      // step 1: instruct sensor to read echoes
      Wire.beginTransmission(compassAddress); // transmit to device
                                  // the address specified in the datasheet is 66 (0x42)
                                  // but i2c adressing uses the high 7 bits so it's 33
      Wire.send('A');             // command sensor to measure angle
      Wire.endTransmission();     // stop transmitting

      // step 2: wait for readings to happen
      delay(10);                   // datasheet suggests at least 6000 microseconds

      // step 3: request reading from sensor
      Wire.requestFrom(compassAddress, 2);    // request 2 bytes from slave device #33

      // step 4: receive reading from sensor
      if(2 <= Wire.available())    // if two bytes were received
      {
        reading = Wire.receive();  // receive high byte (overwrites previous reading)
        reading = reading << 8;    // shift high byte to be high 8 bits
        reading += Wire.receive(); // receive low byte as lower 8 bits
        reading /= 10;
        Serial.println(reading);   // print the reading
      }

      delay(500);                  // wait for half a second
    }

|  | .