CMPS03 Compass library with only PWM support. I2C support will be added shortly, while it will arrive, you may use MBED component library if you wish to use CMPS03 I2C interface

Dependents:   TestBoussole FRC_2018 0hackton_08_06_18 lib_FRC_2019 ... more

Committer:
gvaquette
Date:
Wed Oct 23 11:17:17 2019 +0000
Revision:
5:7bfdf8ff9c5e
Parent:
4:ab9eadf7537a
translation : CMPS03;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
haarkon 0:41ff46c0f65a 1 /**
haarkon 0:41ff46c0f65a 2 * @author Hugues Angelis, based on Aaron Berk
haarkon 0:41ff46c0f65a 3 *
haarkon 0:41ff46c0f65a 4 * @section LICENSE
haarkon 0:41ff46c0f65a 5 *
haarkon 0:41ff46c0f65a 6 * Copyright (c) 2010 ARM Limited
haarkon 0:41ff46c0f65a 7 *
haarkon 0:41ff46c0f65a 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
haarkon 0:41ff46c0f65a 9 * of this software and associated documentation files (the "Software"), to deal
haarkon 0:41ff46c0f65a 10 * in the Software without restriction, including without limitation the rights
haarkon 0:41ff46c0f65a 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
haarkon 0:41ff46c0f65a 12 * copies of the Software, and to permit persons to whom the Software is
haarkon 0:41ff46c0f65a 13 * furnished to do so, subject to the following conditions:
haarkon 0:41ff46c0f65a 14 *
haarkon 0:41ff46c0f65a 15 * The above copyright notice and this permission notice shall be included in
haarkon 0:41ff46c0f65a 16 * all copies or substantial portions of the Software.
haarkon 0:41ff46c0f65a 17 *
haarkon 0:41ff46c0f65a 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
haarkon 0:41ff46c0f65a 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
haarkon 0:41ff46c0f65a 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
haarkon 0:41ff46c0f65a 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
haarkon 0:41ff46c0f65a 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
haarkon 0:41ff46c0f65a 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
haarkon 0:41ff46c0f65a 24 * THE SOFTWARE.
haarkon 0:41ff46c0f65a 25 *
haarkon 0:41ff46c0f65a 26 * @section DESCRIPTION
haarkon 0:41ff46c0f65a 27 *
haarkon 0:41ff46c0f65a 28 * CMPS03 digital compass module I2C.
haarkon 0:41ff46c0f65a 29 *
haarkon 0:41ff46c0f65a 30 * Datasheet:
haarkon 0:41ff46c0f65a 31 *
haarkon 0:41ff46c0f65a 32 * http://www.robot-electronics.co.uk/htm/cmps3tech.htm
haarkon 0:41ff46c0f65a 33 */
haarkon 0:41ff46c0f65a 34
haarkon 0:41ff46c0f65a 35 #ifndef CMPS03_H
haarkon 0:41ff46c0f65a 36 #define CMPS03_H
haarkon 0:41ff46c0f65a 37
haarkon 0:41ff46c0f65a 38 /**
haarkon 2:e09ad9c1f751 39 * Includes : Mbed Library
haarkon 0:41ff46c0f65a 40 */
haarkon 0:41ff46c0f65a 41 #include "mbed.h"
haarkon 0:41ff46c0f65a 42
haarkon 0:41ff46c0f65a 43 /**
haarkon 0:41ff46c0f65a 44 * CMPS03 digital compass module.
haarkon 2:e09ad9c1f751 45 * more information : http://www.robot-electronics.co.uk/htm/cmps3tech.htm
haarkon 0:41ff46c0f65a 46 */
haarkon 0:41ff46c0f65a 47 class CMPS03 {
haarkon 0:41ff46c0f65a 48
haarkon 3:3e9586433ce5 49 private :
haarkon 3:3e9586433ce5 50
haarkon 3:3e9586433ce5 51 long _startTime, _stopTime;
haarkon 3:3e9586433ce5 52 double _pwmBearing;
haarkon 3:3e9586433ce5 53
gvaquette 5:7bfdf8ff9c5e 54 InterruptIn _compass;
haarkon 0:41ff46c0f65a 55 Timer _tim;
haarkon 0:41ff46c0f65a 56
haarkon 0:41ff46c0f65a 57 void rise();
haarkon 0:41ff46c0f65a 58 void fall();
haarkon 0:41ff46c0f65a 59
haarkon 0:41ff46c0f65a 60 public :
haarkon 0:41ff46c0f65a 61
haarkon 0:41ff46c0f65a 62 /**
haarkon 2:e09ad9c1f751 63 * Constructor of a CMPS03 Compass object.
haarkon 0:41ff46c0f65a 64 *
haarkon 3:3e9586433ce5 65 * @param pwm (PinName) : mbed pin used to get the bearing Pulse
haarkon 0:41ff46c0f65a 66 */
haarkon 3:3e9586433ce5 67 CMPS03(PinName pwm);
haarkon 0:41ff46c0f65a 68
haarkon 0:41ff46c0f65a 69 /**
haarkon 2:e09ad9c1f751 70 * Reads the last bearing of the compass from PWM signal (1 bearing each 100ms approx.).
haarkon 0:41ff46c0f65a 71 *
haarkon 2:e09ad9c1f751 72 * @return Current bearing of the compass in degree (0.00 and 359.99)
haarkon 3:3e9586433ce5 73 * @note The bearing is not quite accurate (only integer part is almost good) unless a full calibration is done (thus component is not configurated for calibration).
haarkon 3:3e9586433ce5 74 * @note Neither bearing goes from 0 to 359.99. You may considere bearing as something very relative.
haarkon 0:41ff46c0f65a 75 */
haarkon 1:2507a3379f17 76 double getBearing(void);
haarkon 1:2507a3379f17 77
haarkon 1:2507a3379f17 78 /**
haarkon 1:2507a3379f17 79 * A short hand for getBearing
haarkon 3:3e9586433ce5 80 * @return Current bearing of the compass in degree (0.00 and 359.99)
haarkon 3:3e9586433ce5 81 * @note The bearing is not quite accurate (only integer part is almost good) unless a full calibration is done (thus component is not configurated for calibration).
haarkon 3:3e9586433ce5 82 * @note Neither bearing goes from 0 to 359.99. You may considere bearing as something very relative.
haarkon 1:2507a3379f17 83 */
haarkon 1:2507a3379f17 84 operator double();
haarkon 0:41ff46c0f65a 85
haarkon 0:41ff46c0f65a 86 };
haarkon 0:41ff46c0f65a 87
haarkon 0:41ff46c0f65a 88 #endif /* CMPS03_H */