1/* 2 * Author: Brendan Le Foll <brendan.le.foll@intel.com> 3 * Contributions: Mihai Tudor Panu <mihai.tudor.panu@intel.com> 4 * Copyright (c) 2014 Intel Corporation. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining 7 * a copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sublicense, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be 15 * included in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 21 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 */ 25 26#include <unistd.h> 27#include "hmc5883l.h" 28 29int 30main(int argc, char **argv) 31{ 32//! [Interesting] 33 // Instantiate on I2C 34 upm::Hmc5883l* compass = new upm::Hmc5883l(0); 35 int16_t *pos; 36 37 compass->set_declination(0.2749); // Set your declination from true north in radians 38 39 // Print out the coordinates, heading, and direction every second 40 while(true){ 41 compass->update(); // Update the coordinates 42 pos = compass->coordinates(); 43 fprintf(stdout, "coor: %5d %5d %5d ", pos[0], pos[1], pos[2]); 44 fprintf(stdout, "heading: %5.2f direction: %3.2f\n", compass->heading(), compass->direction()); 45 sleep(1); 46 } 47//! [Interesting] 48 49 return 0; 50} 51