Loading...
Pages: [1]   Go Down
Author Topic: HMC6352 compass converting degrees to direction problem?  (Read 342 times)
0 Members and 1 Guest are viewing this topic.
Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
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
Offline Offline
Edison Member
*
Karma: 29
Posts: 1586
"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

UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino

Arduino Tutorials, coming soon.

"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
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
Offline Offline
Edison Member
*
Karma: 29
Posts: 1586
"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

UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino

Arduino Tutorials, coming soon.

"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
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
Offline Offline
Edison Member
*
Karma: 29
Posts: 1586
"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

UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino

Arduino Tutorials, coming soon.

"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
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
Offline Offline
Edison Member
*
Karma: 29
Posts: 1586
"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

UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino

Arduino Tutorials, coming soon.

"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Queens, New York
Offline Offline
Edison Member
*
Karma: 29
Posts: 1586
"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

UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino

Arduino Tutorials, coming soon.

"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown

Sulaymaniyah-Kurdistan
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Netherlands
Offline Offline
Tesla Member
***
Karma: 91
Posts: 9442
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 -

Pages: [1]   Go Up
Print
 
Jump to: