|
|

楼主 |
发表于 2015-8-18 16:40:48
|
显示全部楼层
- #include <Wire.h> //I2C Arduino Library
- #define address 0x1E //0011110b, I2C 7bit address of HMC5883
- void setup(){
- //Initialize Serial and I2C communications
- Serial.begin(9600);
- Wire.begin();
-
- //Put the HMC5883 IC into the correct operating mode
- Wire.beginTransmission(address); //open communication with HMC5883
- Wire.write(0x02); //select mode register
- Wire.write(0x00); //continuous measurement mode
- Wire.endTransmission();
- }
- void loop(){
-
- long x,y,z; //triple axis data
- //Tell the HMC5883 where to begin reading data
- Wire.beginTransmission(address);
- Wire.write(0x03); //select register 3, X MSB register
- Wire.endTransmission();
-
-
- //Read data from each axis, 2 registers per axis
- Wire.requestFrom(address, 6);
- if(6<=Wire.available()){
- x = Wire.read()<<8; //X msb
- x |= Wire.read(); //X lsb
- z = Wire.read()<<8; //Z msb
- z |= Wire.read(); //Z lsb
- y = Wire.read()<<8; //Y msb
- y |= Wire.read(); //Y lsb
- }
-
- //Print out values of each axis
- // Serial.print("x: ");
- Serial.print(x);
- // Serial.print(" y: ");
- Serial.print(" ");
- Serial.print(y);
- Serial.print(" ");
- // Serial.print(" z: ");
- Serial.print(z);
- Serial.print(" ");
-
- // Serial.print(" x: ");
- x=abs(x);
- // Serial.print(x);
- // Serial.print(" y: ");
- y=abs(y);
- // Serial.print(y);
- // Serial.print("z: ");
- z=abs(z);
- // Serial.print(z);
-
- // Serial.print(" x*x: ");
- x=x*x;
- // Serial.print(x);
- // Serial.print("y*y: ");
- y=y*y;
- // Serial.print(y);
- // Serial.print("z*z: ");
- z=z*z;
- // Serial.print(z);
-
- unsigned long fx=sqrt(x+y+z);
- // Serial.print(" fx: ");
- Serial.println(fx);
- delay(500);
- }
复制代码 |
|