Notifications
Clear all

Sketch problem  

  RSS

Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-17 7:15 pm  

Hi all I am trying to right a sketch for a HMC5883L.H  compass but when i "include" it, it does not turn orange.

I have seen samples of sketches where it has so i think it should.

Plus I have other problems with it that when i try and run the examples program for it I get a message saying basically its not connected so i think the unit is not good.

Can anyone help please.

Thanks 

Kevin


Quote
DroneBot Workshop
(@dronebot-workshop)
Workshop Guru Admin
Joined: 1 year ago
Posts: 627
2020-10-17 7:53 pm  

Hi Kevin

It would be helpful if you could show us the sketch you're using.

In order to do that use the CODE button in the editing window when you create your post. That's the button that is shaped like "<>".  Otherwise, the code will be almost impossible to read.

BTW, Adafruit has a great article on using the HMC5583L, you might want to check it out. And if you are using their library for it remember that the library is dependent upon already having the Adafruit Unified Sensor library installed (a lot of Adafruit libraries are based upon that library).  It won't work without it.

So post your code and we'll see if we can help you!

😎

Bill

"Never trust a computer you can’t throw out a window." — Steve Wozniak


ReplyQuote
Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-17 11:49 pm  

Thanks Bill I will sort it tomorrow

Kevin


ReplyQuote
Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-18 10:51 am  

 

Morning Bill and everyone.

This was the code i was trying to us to calibrate my HMC5883L.h with but the serial monitor said "HMC5883L connection failed"

I changed all wires and breadboards and even used 2 different nanos and a Uno but still got the same message.

I suspect the module is faulty.

My other issue was just typing  #include  <HMC5883L.h> would not turn orange.

#include <I2Cdev.h> does turn orange.

I just do not understand this issue.

best regards

Kevin

 

 

 

[code]
// I2C device class (I2Cdev) demonstration Arduino sketch for HMC5883L class
// 10/7/2011 by Jeff Rowberg <jeff@rowberg.net>
// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib
//
// Changelog:
// 2013-05-04 - Added Heading Calculation in degrees
// 2011-10-07 - initial release

/* ============================================
I2Cdev device library code is placed under the MIT license
Copyright (c) 2011 Jeff Rowberg

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
===============================================
*/

// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#include "Wire.h"

// I2Cdev and HMC5883L must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"
#include "HMC5883L.h"

// class default I2C address is 0x1E
// specific I2C addresses may be passed as a parameter here
// this device only supports one I2C address (0x1E)
HMC5883L mag;

int16_t mx, my, mz;

#define LED_PIN 13
bool blinkState = false;

void setup() {
// join I2C bus (I2Cdev library doesn't do this automatically)
Wire.begin();

// initialize serial communication
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
// it's really up to you depending on your project)
Serial.begin(38400);

// initialize device
Serial.println("Initializing I2C devices...");
mag.initialize();

// verify connection
Serial.println("Testing device connections...");
Serial.println(mag.testConnection() ? "HMC5883L connection successful" : "HMC5883L connection failed");

// configure Arduino LED pin for output
pinMode(LED_PIN, OUTPUT);
}

void loop() {
// read raw heading measurements from device
mag.getHeading(&mx, &my, &mz);

// display tab-separated gyro x/y/z values
Serial.print("mag:\t");
Serial.print(mx); Serial.print("\t");
Serial.print(my); Serial.print("\t");
Serial.print(mz); Serial.print("\t");

// To calculate heading in degrees. 0 degree indicates North
float heading = atan2(my, mx);
if(heading < 0)
heading += 2 * M_PI;
Serial.print("heading:\t");
Serial.println(heading * 180/M_PI);

// blink LED to indicate activity
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
}
[/code]


ReplyQuote
Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-18 12:24 pm  

Hi all

I have now tried the Adafruit library and all i get is the sensor info and no directional readings at all.

So I think its time to buy a new sensor.

Thanks Bill for the Adafruit info very useful and that's helped me a lot.

I think i`ll be using there library's a lot more

Regards

Kevin


ReplyQuote
DroneBot Workshop
(@dronebot-workshop)
Workshop Guru Admin
Joined: 1 year ago
Posts: 627
2020-10-18 2:05 pm  

@kevin333

Happy to assist!

For future reference please use the code button "<>" to post code samples, it makes them a lot easier to read

// I2C device class (I2Cdev) demonstration Arduino sketch for HMC5883L class
// 10/7/2011 by Jeff Rowberg <jeff@rowberg.net>
// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib
//
// Changelog:
// 2013-05-04 - Added Heading Calculation in degrees
// 2011-10-07 - initial release

/* ============================================
I2Cdev device library code is placed under the MIT license
Copyright (c) 2011 Jeff Rowberg

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
===============================================
*/

// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#include "Wire.h"

// I2Cdev and HMC5883L must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"
#include "HMC5883L.h"

// class default I2C address is 0x1E
// specific I2C addresses may be passed as a parameter here
// this device only supports one I2C address (0x1E)
HMC5883L mag;

int16_t mx, my, mz;

#define LED_PIN 13
bool blinkState = false;

void setup() {
// join I2C bus (I2Cdev library doesn't do this automatically)
Wire.begin();

// initialize serial communication
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
// it's really up to you depending on your project)
Serial.begin(38400);

// initialize device
Serial.println("Initializing I2C devices...");
mag.initialize();

// verify connection
Serial.println("Testing device connections...");
Serial.println(mag.testConnection() ? "HMC5883L connection successful" : "HMC5883L connection failed");

// configure Arduino LED pin for output
pinMode(LED_PIN, OUTPUT);
}

void loop() {
// read raw heading measurements from device
mag.getHeading(&mx, &my, &mz);

// display tab-separated gyro x/y/z values
Serial.print("mag:\t");
Serial.print(mx); Serial.print("\t");
Serial.print(my); Serial.print("\t");
Serial.print(mz); Serial.print("\t");

// To calculate heading in degrees. 0 degree indicates North
float heading = atan2(my, mx);
if(heading < 0)
heading += 2 * M_PI;
Serial.print("heading:\t");
Serial.println(heading * 180/M_PI);

// blink LED to indicate activity
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
}

😎

Bill

"Never trust a computer you can’t throw out a window." — Steve Wozniak


ReplyQuote
Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-18 2:20 pm  

Hi Bill 

I honestly did use the <> button so i do not know what happened there.

I was just watching yesterdays live chat with Paul Mcwhorter and he was doing his top five channels he follows and you was  number 1 

So congratulations for that 

He said he did not know your name but he would like to get in touch and perhaps interview you some time.

he just ask people who follow you to pass this on hope you don`t mind me doing that.

kevin 😊 


ReplyQuote
DroneBot Workshop
(@dronebot-workshop)
Workshop Guru Admin
Joined: 1 year ago
Posts: 627
2020-10-18 3:30 pm  

@kevin333

No problem, the code button can be a bit tricky - I have some updates I need to apply to the forum that may make it easier to use. Right no I find it easier to paste the code, highlight it, and then press the Code button.

Also, you can use the "Preview" link when you make a post, to be sure it works.

Posted by: @kevin333

I was just watching yesterdays live chat with Paul Mcwhorter and he was doing his top five channels he follows and you was  number 1 

So congratulations for that 

He said he did not know your name but he would like to get in touch and perhaps interview you some time.

he just ask people who follow you to pass this on hope you don`t mind me doing that.

Paul contacted me yesterday and I am thrilled to announce that I will be doing the interview with him next Saturday! And now he knows my name LOL.

😎

Bill

"Never trust a computer you can’t throw out a window." — Steve Wozniak


ReplyQuote
Kevin333
(@kevin333)
Active Member
Joined: 1 week ago
Posts: 9
2020-10-18 3:49 pm  

Thanks for the advice Bill i`ll keep that in mind.

I shall look forward to next Saturday and tune in to it.

Have a good rest of your day.

Thank you 

Kevin


ReplyQuote