Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FXOS8700CQ SDFileSystem mbed
Fork of AVC_Robot_Controled_Navigation by
lib/magnometer.cpp@0:3a322aad8c88, 2014-10-16 (annotated)
- Committer:
- gerardo_carmona
- Date:
- Thu Oct 16 01:59:21 2014 +0000
- Revision:
- 0:3a322aad8c88
- Child:
- 1:ab09b233da7b
First release.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gerardo_carmona | 0:3a322aad8c88 | 1 | // ----- Libraries ------------------------------------------------------------------ |
gerardo_carmona | 0:3a322aad8c88 | 2 | #include "mbed.h" |
gerardo_carmona | 0:3a322aad8c88 | 3 | #include "FXOS8700CQ.h" |
gerardo_carmona | 0:3a322aad8c88 | 4 | |
gerardo_carmona | 0:3a322aad8c88 | 5 | // ----- I/O Pins ------------------------------------------------------------------- |
gerardo_carmona | 0:3a322aad8c88 | 6 | FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1) |
gerardo_carmona | 0:3a322aad8c88 | 7 | |
gerardo_carmona | 0:3a322aad8c88 | 8 | // ----- Others --------------------------------------------------------------------- |
gerardo_carmona | 0:3a322aad8c88 | 9 | SRAWDATA accel_data; |
gerardo_carmona | 0:3a322aad8c88 | 10 | SRAWDATA magn_data; |
gerardo_carmona | 0:3a322aad8c88 | 11 | |
gerardo_carmona | 0:3a322aad8c88 | 12 | // ----- Variables ------------------------------------------------------------------ |
gerardo_carmona | 0:3a322aad8c88 | 13 | double mag_x, mag_y; |
gerardo_carmona | 0:3a322aad8c88 | 14 | double average; |
gerardo_carmona | 0:3a322aad8c88 | 15 | |
gerardo_carmona | 0:3a322aad8c88 | 16 | // ----- Functions ------------------------------------------------------------------ |
gerardo_carmona | 0:3a322aad8c88 | 17 | double get_mag_x(){ |
gerardo_carmona | 0:3a322aad8c88 | 18 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 19 | return magn_data.x; |
gerardo_carmona | 0:3a322aad8c88 | 20 | } |
gerardo_carmona | 0:3a322aad8c88 | 21 | |
gerardo_carmona | 0:3a322aad8c88 | 22 | double get_mag_y(){ |
gerardo_carmona | 0:3a322aad8c88 | 23 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 24 | return magn_data.y; |
gerardo_carmona | 0:3a322aad8c88 | 25 | } |
gerardo_carmona | 0:3a322aad8c88 | 26 | |
gerardo_carmona | 0:3a322aad8c88 | 27 | double get_mag_angle(){ |
gerardo_carmona | 0:3a322aad8c88 | 28 | double _angle; |
gerardo_carmona | 0:3a322aad8c88 | 29 | int16_t _x=0; |
gerardo_carmona | 0:3a322aad8c88 | 30 | int16_t _y=0; |
gerardo_carmona | 0:3a322aad8c88 | 31 | |
gerardo_carmona | 0:3a322aad8c88 | 32 | for (int i = 0; i < 10; i++){ |
gerardo_carmona | 0:3a322aad8c88 | 33 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 34 | avg_x += magn_data.x; |
gerardo_carmona | 0:3a322aad8c88 | 35 | avg_y += magn_data.y; |
gerardo_carmona | 0:3a322aad8c88 | 36 | //pc.printf("X: %d \tY: %d\r\n", magn_data.x, magn_data.y); |
gerardo_carmona | 0:3a322aad8c88 | 37 | //pc.printf("%d\n", magn_data.x); |
gerardo_carmona | 0:3a322aad8c88 | 38 | } |
gerardo_carmona | 0:3a322aad8c88 | 39 | |
gerardo_carmona | 0:3a322aad8c88 | 40 | avg_x = avg_x / 10; |
gerardo_carmona | 0:3a322aad8c88 | 41 | avg_y = avg_y / 10; |
gerardo_carmona | 0:3a322aad8c88 | 42 | |
gerardo_carmona | 0:3a322aad8c88 | 43 | pc.printf("%d\n", avg_x); |
gerardo_carmona | 0:3a322aad8c88 | 44 | _angle = atan2((double)_x, (double)_y) * 180.0 / 3.14159; |
gerardo_carmona | 0:3a322aad8c88 | 45 | return _angle; |
gerardo_carmona | 0:3a322aad8c88 | 46 | } |