Improved eCompass with support for different sensor options and a new C++ wrapper
Dependents: KL46_eCompass KL46_eCompass_TiltCompensed_Acel-Mag Ragnarok_2ejes compass_acc ... more
Fork of Wi-Go_eCompass_Lib_V3 by
eCompass_Lib.cpp
- Committer:
- JimCarver
- Date:
- 2014-04-13
- Revision:
- 4:45d9f1e8277c
- Parent:
- 3:98d426530167
- Child:
- 6:a161cb3bd061
File content as of revision 4:45d9f1e8277c:
#include "eCompass_Lib.h" extern void run_eCompass(void); extern void init_eCompass(void); extern void calibrate_eCompass(void); extern void hal_map(int16_t * acc_raw, int16_t * mag_raw); axis6_t axis6; uint32_t seconds; uint32_t compass_type; int32_t tcount; uint8_t cdebug; eCompass::eCompass() { init_eCompass(); cdebug = 0; compass_type = NED_COMPASS; // default type is NED tcount = 0; seconds = 0; } //eCompass::~eCompass() { } void eCompass::run(int16_t * acc_raw, int16_t * mag_raw) { axis6.timestamp = tcount; hal_map(acc_raw, mag_raw); // // raw data axis6.acc_x = acc_raw[0]; axis6.acc_y = acc_raw[1]; axis6.acc_z = acc_raw[2]; axis6.mag_x = mag_raw[0]; axis6.mag_y = mag_raw[1]; axis6.mag_z = mag_raw[2]; // // raw data converted to floating ouing axis6.fax = (float) acc_raw[0]; axis6.fay = (float) acc_raw[1]; axis6.faz = (float) acc_raw[2]; axis6.fmx = (float) mag_raw[0]; axis6.fmy = (float) mag_raw[1]; axis6.fmz = (float) mag_raw[2]; // // Accelerometer data converted to Gs axis6.fGax = ((float) acc_raw[0]) / 4096.0; axis6.fGay = ((float) acc_raw[1]) / 4096.0; axis6.fGaz = ((float) acc_raw[2]) / 4096.0; // // Magnetometer data converted to microteslas axis6.fUTmx = ((float) mag_raw[0]) / 10.0; axis6.fUTmy = ((float) mag_raw[1]) / 10.0; axis6.fUTmz = ((float) mag_raw[2]) / 10.0; //printf("r"); if(!cdebug) run_eCompass(); } void eCompass::calibrate(void) { calibrate_eCompass(); } void eCompass::init(void) { init_eCompass(); }