A class and a demo program to use with the DC-SS504 board from SureElectronics which uses MMC2120MG magnetometer from Memsic. The program glows leds depending on the direction it is turned to.
main.cpp
- Committer:
- igorsk
- Date:
- 2009-12-02
- Revision:
- 0:a44429321af8
File content as of revision 0:a44429321af8:
#include "mbed.h" #include "MMCx12xM.h" I2C i2c(p9, p10); // sda, scl DigitalOut memsic_power(p8); MMCx12xM memsic(i2c); PwmOut led1(LED1); PwmOut led2(LED2); PwmOut led3(LED3); PwmOut led4(LED4); int main() { printf("MMC2120M demo\n"); memsic_power = 1; bool ok = memsic.coil_set(); printf("Set: %d\n", ok); /*int values[2]; for (;;) { ok = memsic.read_raw_values(values); printf("ok: %d, x: %d, y: %d\n", ok, values[0], values[1]); wait(2); }*/ printf("Starting calibration. Turn the sensor in all possible directions for 10 seconds.\n"); memsic.calibrate_begin(); int cal_count = 0; while (1) { memsic.calibrate_step(); cal_count++; wait_ms(100); if ( cal_count > 100 ) break; } memsic.calibrate_end(); //printf("%d samples were used for calibration\n", cal_count); float fvalues[2]; for (;;) { ok = memsic.read_values(fvalues); printf("ok: %d, x: %f, y: %f\n", ok, fvalues[0], fvalues[1]); led1 = fvalues[0] > 0 ? fvalues[0] : 0; led2 = fvalues[1] > 0 ? fvalues[1] : 0; led3 = fvalues[0] < 0 ? -fvalues[0] : 0; led4 = fvalues[1] < 0 ? -fvalues[1] : 0; wait_ms(100); } }