/elec/quadcopter

To get this branch, use:
bzr branch http://bzr.ed.am/elec/quadcopter

« back to all changes in this revision

Viewing changes to test/magnetometer/main.ino

  • Committer: Tim Marston
  • Date: 2014-04-16 20:22:13 UTC
  • Revision ID: tim@ed.am-20140416202213-44e23tntae11r94o
mega-shield project: fixed-up two more tracks

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <Wire.h> // I2C Arduino Library
 
2
 
 
3
#define address 0x1E // 0011110b, I2C 7bit address of HMC5883
 
4
 
 
5
void setup()
 
6
{
 
7
  // initialize Serial and I2C communications
 
8
  Serial.begin(9600);
 
9
  Wire.begin();
 
10
  
 
11
  // put the HMC5883 IC into the correct operating mode
 
12
  Wire.beginTransmission(address); // open communication with HMC5883
 
13
  Wire.write(0x02); // select mode register
 
14
  Wire.write(0x00); // continuous measurement mode
 
15
  Wire.endTransmission();
 
16
}
 
17
 
 
18
void loop()
 
19
 
20
  int x, y, z; // triple axis data
 
21
 
 
22
  // tell the HMC5883 where to begin reading data
 
23
  Wire.beginTransmission(address);
 
24
  Wire.write(0x03); // select register 3, X MSB register
 
25
  Wire.endTransmission();
 
26
  
 
27
 
 
28
  // read data from each axis, 2 registers per axis
 
29
  Wire.requestFrom(address, 6);
 
30
  if(6<=Wire.available()){
 
31
    x = Wire.read()<<8; // X msb
 
32
    x |= Wire.read();   // X lsb
 
33
    z = Wire.read()<<8; // Z msb
 
34
    z |= Wire.read();   // Z lsb
 
35
    y = Wire.read()<<8; // Y msb
 
36
    y |= Wire.read();   // Y lsb
 
37
  }
 
38
  
 
39
  // print out values of each axis
 
40
  Serial.print("x: ");
 
41
  Serial.print(x);
 
42
  Serial.print("  y: ");
 
43
  Serial.print(y);
 
44
  Serial.print("  z: ");
 
45
  Serial.println(z);
 
46
  
 
47
  delay(250);
 
48
}