First draft HMC5883 magnetometer sensor using physical quantities, outputting via serial port using std::cout on mbed os 5
main.cpp
- Committer:
- skyscraper
- Date:
- 2020-03-26
- Revision:
- 10:75c8ce89aeb7
- Parent:
- 9:87a7169b4d5c
- Child:
- 11:de7c9ae7ef65
File content as of revision 10:75c8ce89aeb7:
#include "mbed.h" #include "magnetometer.h" namespace { // do something with magnetometer output void callback(quan::three_d::vect<quan::magnetic_flux_density::uT> const & v) { std::cout << "val = " << v << '\n'; } }// namespace void loop_forever(std::string const & str); int main() { DigitalOut led2(LED2,1); std::cout << "magnetometer test\n"; if ( !mag_init()){ loop_forever("failed to init magnetometer\n"); } uint64_t constexpr update_rate_ms = 20U; auto prev_led = Kernel::get_ms_count(); auto now = Kernel::get_ms_count(); for (;;){ mag_start_measurement(); do{ ThisThread::sleep_for(10U); } while ( ! mag_data_ready() ); quan::three_d::vect<quan::magnetic_flux_density::uT> v; if (mag_read(v)){ callback(v); } if ( (now - prev_led) >= 500U){ prev_led = now; led2 = (led2 == 0) ? 1: 0; } auto const next_wake = now + update_rate_ms; ThisThread::sleep_until(next_wake); now = next_wake; } }