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@1:ab09b233da7b, 2014-10-16 (annotated)
- Committer:
- gerardo_carmona
- Date:
- Thu Oct 16 15:48:57 2014 +0000
- Revision:
- 1:ab09b233da7b
- Parent:
- 0:3a322aad8c88
v1.1
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 | 1:ab09b233da7b | 4 | #include "magnometer.h" |
gerardo_carmona | 0:3a322aad8c88 | 5 | |
gerardo_carmona | 0:3a322aad8c88 | 6 | // ----- I/O Pins ------------------------------------------------------------------- |
gerardo_carmona | 0:3a322aad8c88 | 7 | FXOS8700CQ fxos(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // SDA, SCL, (addr << 1) |
gerardo_carmona | 0:3a322aad8c88 | 8 | |
gerardo_carmona | 0:3a322aad8c88 | 9 | // ----- Others --------------------------------------------------------------------- |
gerardo_carmona | 0:3a322aad8c88 | 10 | SRAWDATA accel_data; |
gerardo_carmona | 0:3a322aad8c88 | 11 | SRAWDATA magn_data; |
gerardo_carmona | 0:3a322aad8c88 | 12 | |
gerardo_carmona | 0:3a322aad8c88 | 13 | // ----- Variables ------------------------------------------------------------------ |
gerardo_carmona | 0:3a322aad8c88 | 14 | double mag_x, mag_y; |
gerardo_carmona | 1:ab09b233da7b | 15 | double avg_x, avg_y; |
gerardo_carmona | 1:ab09b233da7b | 16 | //double average; |
gerardo_carmona | 0:3a322aad8c88 | 17 | |
gerardo_carmona | 0:3a322aad8c88 | 18 | // ----- Functions ------------------------------------------------------------------ |
gerardo_carmona | 0:3a322aad8c88 | 19 | double get_mag_x(){ |
gerardo_carmona | 0:3a322aad8c88 | 20 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 21 | return magn_data.x; |
gerardo_carmona | 0:3a322aad8c88 | 22 | } |
gerardo_carmona | 0:3a322aad8c88 | 23 | |
gerardo_carmona | 0:3a322aad8c88 | 24 | double get_mag_y(){ |
gerardo_carmona | 0:3a322aad8c88 | 25 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 26 | return magn_data.y; |
gerardo_carmona | 0:3a322aad8c88 | 27 | } |
gerardo_carmona | 0:3a322aad8c88 | 28 | |
gerardo_carmona | 0:3a322aad8c88 | 29 | double get_mag_angle(){ |
gerardo_carmona | 0:3a322aad8c88 | 30 | double _angle; |
gerardo_carmona | 0:3a322aad8c88 | 31 | int16_t _x=0; |
gerardo_carmona | 0:3a322aad8c88 | 32 | int16_t _y=0; |
gerardo_carmona | 0:3a322aad8c88 | 33 | |
gerardo_carmona | 0:3a322aad8c88 | 34 | for (int i = 0; i < 10; i++){ |
gerardo_carmona | 0:3a322aad8c88 | 35 | fxos.get_data(&accel_data, &magn_data); |
gerardo_carmona | 0:3a322aad8c88 | 36 | avg_x += magn_data.x; |
gerardo_carmona | 0:3a322aad8c88 | 37 | avg_y += magn_data.y; |
gerardo_carmona | 0:3a322aad8c88 | 38 | //pc.printf("X: %d \tY: %d\r\n", magn_data.x, magn_data.y); |
gerardo_carmona | 0:3a322aad8c88 | 39 | //pc.printf("%d\n", magn_data.x); |
gerardo_carmona | 0:3a322aad8c88 | 40 | } |
gerardo_carmona | 0:3a322aad8c88 | 41 | |
gerardo_carmona | 0:3a322aad8c88 | 42 | avg_x = avg_x / 10; |
gerardo_carmona | 0:3a322aad8c88 | 43 | avg_y = avg_y / 10; |
gerardo_carmona | 0:3a322aad8c88 | 44 | |
gerardo_carmona | 1:ab09b233da7b | 45 | //pc.printf("%d\n", avg_x); |
gerardo_carmona | 0:3a322aad8c88 | 46 | _angle = atan2((double)_x, (double)_y) * 180.0 / 3.14159; |
gerardo_carmona | 0:3a322aad8c88 | 47 | return _angle; |
gerardo_carmona | 0:3a322aad8c88 | 48 | } |