diff options
author | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
---|---|---|
committer | Cristian Maglie <c.maglie@bug.st> | 2013-06-01 23:16:02 +0200 |
commit | 177ad96f866714a4962be57f69cd3d5a6334cde1 (patch) | |
tree | 1072239986340d6a239adac924eddf2e1d1ca566 /libraries/Robot_Control/Compass.cpp | |
parent | 6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff) | |
parent | d90fcca5839d13d57ed527d4009b78d22dafbde7 (diff) |
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
Diffstat (limited to 'libraries/Robot_Control/Compass.cpp')
-rw-r--r-- | libraries/Robot_Control/Compass.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libraries/Robot_Control/Compass.cpp b/libraries/Robot_Control/Compass.cpp new file mode 100644 index 0000000..1b1ef31 --- /dev/null +++ b/libraries/Robot_Control/Compass.cpp @@ -0,0 +1,34 @@ +#include "Compass.h" +#include <Wire.h> + +void Compass::begin(){ + Wire.begin(); +} +float Compass::getReading(){ + _beginTransmission(); + _endTransmission(); + + //time delays required by HMC6352 upon receipt of the command + //Get Data. Compensate and Calculate New Heading : 6ms + delay(6); + + Wire.requestFrom(HMC6352SlaveAddress, 2); //get the two data bytes, MSB and LSB + + //"The heading output data will be the value in tenths of degrees + //from zero to 3599 and provided in binary format over the two bytes." + byte MSB = Wire.read(); + byte LSB = Wire.read(); + + float headingSum = (MSB << 8) + LSB; //(MSB / LSB sum) + float headingInt = headingSum / 10; + + return headingInt; +} + +void Compass::_beginTransmission(){ + Wire.beginTransmission(HMC6352SlaveAddress); + Wire.write(HMC6352ReadAddress); +} +void Compass::_endTransmission(){ + Wire.endTransmission(); +}
\ No newline at end of file |