HMC6352 Compass Baud Rate

I am using the HMC6352 Compass module and it is successfully printing out the correct heading degree with a baud rate of 9600 using the following code taken from the forums:

#include <Wire.h>
int HMC6352Address = 0x42;
// This is calculated in the setup() function
int slaveAddress;
boolean ledState = false;
byte headingData[2];
float headingValue;
int i;
void setup()
{
// Shift the device's documented slave address (0x42) 1 bit right
// This compensates for how the TWI library only wants the
// 7 most significant bits (with the high bit padded with 0)
slaveAddress = HMC6352Address >> 1;   // This results in 0x21 as the address to pass to TWI
Serial.begin(9600);
//pinMode(ledPin, OUTPUT);      // Set the LED pin as output
Wire.begin();
}
void loop()
{
  // Flash the LED on pin 13 just to show that something is happening
  // Also serves as an indication that we're not "stuck" waiting for TWI data
  // Send a "A" command to the HMC6352
  // This requests the current heading data
  Wire.beginTransmission(slaveAddress);
  Wire.send("A");              // The "Get Data" command
  Wire.endTransmission();
  delay(10);                   // The HMC6352 needs at least a 70us (microsecond) delay
  // after this command.  Using 10ms just makes it safe
  // Read the 2 heading bytes, MSB first
  // The resulting 16bit word is the compass heading in 10th's of a degree
  // For example: a heading of 1345 would be 134.5 degrees
  Wire.requestFrom(slaveAddress, 2);        // Request the 2 byte heading (MSB comes first)
  i = 0;
  while(Wire.available() && i < 2)
  { 
    headingData[i] = Wire.receive();
    i++;
  }
  headingValue = headingData[0]*256 + headingData[1];  // Put the MSB and LSB together
  //int_deg = int(headingValue/10);
  //frac_deg = 
  Serial.print("Current heading: ");
  Serial.print(headingValue/10);
  Serial.println(" degrees");
  delay(500);
}

When I change the baud rate to 28800, garbage is printed in the Serial monitor on that channel.

Does this module require a baud rate of 9600? Thanks.

I have no idea.

Is there a datasheet or manual for it? how does it know to communicate at 28800? have you told it so? I suspect you will need to reconfigure it to run at a different baud rate.

I changed:
Serial.begin(9600);

to:
Serial.begin(28800);

Whoops, I didn't read the code and I assumed you were talking about a serial device instead of an i2c device.

So you changed the code, upload it, fire up the serial monitor and tell it to use a different baud rate?

That is correct.

I'm having the same problem with 14400 and 28800, 57600 works though.

Ok, I found out that since I don't need to print the sda and scl data to the serial console, I just don't declare a baud rate to print the compass data to the console. I continue to use 9600 for the LED screen I am using and they work fine together.

Another problem I did run into was that whenever I hold the screen near the compass, the current from the screen messes up the heading given by the compass. Has anybody found a solution to shielding the compass from interference?