Pages: [1]   Go Down
Author Topic: HMC6352 compass converting degrees to direction problem?  (Read 1119 times)
0 Members and 1 Guest are viewing this topic.
Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hello everyone
i want to covert to the value of the degree to direction
Code:
//All this does is read the heading from HMC6352 and spit it out via serial

#include <Wire.h>
int HMC6352SlaveAddress = 0x42;
int HMC6352ReadAddress = 0x41; //"A" in hex, A command is:

int headingValue;

void setup(){
  // "The Wire library uses 7 bit addresses throughout.
  //If you have a datasheet or sample code that uses 8 bit address,
  //you'll want to drop the low bit (i.e. shift the value one bit to the right),
  //yielding an address between 0 and 127."
  HMC6352SlaveAddress = HMC6352SlaveAddress >> 1; // I know 0x42 is less than 127, but this is still required

  Serial.begin(9600);
  Wire.begin();
}

void loop(){
  //"Get Data. Compensate and Calculate New Heading"
  Wire.beginTransmission(HMC6352SlaveAddress);
  Wire.write(HMC6352ReadAddress);              // The "Get Data" command
  Wire.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();

  int headingSum = (MSB << 8) + LSB; //(MSB / LSB sum)
  headingSum = headingSum / 10;
int value = headingSum ;
Serial.print(headingSum);

  if (value > 68 || value < 112) {
    Serial.println("E");
  }
   

  delay(500);
}
but the result are wrong  the if statement doesn't work
any one can help me?
thanks for replaying
Logged

Queens, New York
Online Online
Faraday Member
**
Karma: 84
Posts: 3423
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

What does Serial.print(headingSum); put out?
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
101E
101E
102E
98E
Logged

Finland
Offline Offline
Jr. Member
**
Karma: 1
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

if (value > 68 || value < 112)
looks like a statement that is always true to me..
how about
if (value > 68 && value < 112)
Logged

Queens, New York
Online Online
Faraday Member
**
Karma: 84
Posts: 3423
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, what should it say?
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

&& can't be if one if them true it will be true
Logged

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks it is workings smiley
Code:
107E
107E
106E
106E
106E
100E
86E
69E
62503726208103336506377E
88E
94E
101E
103E
104E
112124135134134133134132133133132133132132134132132132132132132132132132132135
Logged

Queens, New York
Online Online
Faraday Member
**
Karma: 84
Posts: 3423
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Working?
Quote
107E
107E
106E
106E
106E
100E
86E
69E
62503726208103336506377E   
88E
94E
101E
103E
104E
112124135134134133134132133133132133132132134132132132132132132132132132132135
What changed, the &&?
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
if (value > 68 && value < 112) {
    Serial.println("E");
  }
    if (value > 23 && value < 67) {
    Serial.println("NE");
  }
   if (value > 338 && value < 22) {
    Serial.println("N");
  }
   if (value > 293 && value < 337) {
    Serial.println("NW");
  }
   if (value > 248 && value < 292) {
    Serial.println("W");
  }
   if (value > 202 && value < 247) {
    Serial.println("SW");
  }
   if (value > 158 && value < 201) {
    Serial.println("S");
  }
   if (value > 113 && value < 157) {
    Serial.println("SE");
  }
And i get
Code:
SE
SE
SE
SE
E
E
E
E
E
E
NE
NE
NE
NE
NW
Logged

Queens, New York
Online Online
Faraday Member
**
Karma: 84
Posts: 3423
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok Great.

How about a challenge, make it so that it only shows one direction at a time, until the direction is changed. Think you can do it?
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

li didn't understand . can u make it clearly?
Logged

Queens, New York
Online Online
Faraday Member
**
Karma: 84
Posts: 3423
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

You get this
Quote
SE
SE
SE
SE
E
E
E
E
E
E
NE
NE
NE
NE
NW
make it so that you only get
Quote
SE
E
NE
NW
You don't have to, its your code, you can do whatever you want. Its just a suggestion to try.
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Sulaymaniyah-Kurdistan-Iraq
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
stay foolish - stay hungry
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks for the idea but i can't do it?
Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 212
Posts: 13531
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

you might like this thread - http://arduino.cc/forum/index.php/topic,94507.0.html - to convert degrees to direction
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Pages: [1]   Go Up
Jump to: