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:
haarkon
Date:
Thu May 31 17:26:29 2018 +0000
Revision:
3:3e9586433ce5
Parent:
2:e09ad9c1f751
Child:
4:ab9eadf7537a
Tested CMPS03 library

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
haarkon 0:41ff46c0f65a 54 protected :
haarkon 0:41ff46c0f65a 55
haarkon 3:3e9586433ce5 56 //I2C* _i2c;
haarkon 0:41ff46c0f65a 57 InterruptIn _boussole;
haarkon 0:41ff46c0f65a 58 Timer _tim;
haarkon 0:41ff46c0f65a 59
haarkon 0:41ff46c0f65a 60 void rise();
haarkon 0:41ff46c0f65a 61 void fall();
haarkon 0:41ff46c0f65a 62
haarkon 3:3e9586433ce5 63 //int _i2cAddress;
haarkon 0:41ff46c0f65a 64
haarkon 0:41ff46c0f65a 65 public :
haarkon 0:41ff46c0f65a 66
haarkon 0:41ff46c0f65a 67 /**
haarkon 2:e09ad9c1f751 68 * Constructor of a CMPS03 Compass object.
haarkon 0:41ff46c0f65a 69 *
haarkon 3:3e9586433ce5 70 * @param pwm (PinName) : mbed pin used to get the bearing Pulse
haarkon 0:41ff46c0f65a 71 */
haarkon 3:3e9586433ce5 72 CMPS03(PinName pwm);
haarkon 0:41ff46c0f65a 73
haarkon 0:41ff46c0f65a 74 /**
haarkon 2:e09ad9c1f751 75 * Reads the last bearing of the compass from PWM signal (1 bearing each 100ms approx.).
haarkon 0:41ff46c0f65a 76 *
haarkon 2:e09ad9c1f751 77 * @return Current bearing of the compass in degree (0.00 and 359.99)
haarkon 3:3e9586433ce5 78 * @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 79 * @note Neither bearing goes from 0 to 359.99. You may considere bearing as something very relative.
haarkon 0:41ff46c0f65a 80 */
haarkon 1:2507a3379f17 81 double getBearing(void);
haarkon 1:2507a3379f17 82
haarkon 1:2507a3379f17 83 /**
haarkon 1:2507a3379f17 84 * A short hand for getBearing
haarkon 3:3e9586433ce5 85 * @return Current bearing of the compass in degree (0.00 and 359.99)
haarkon 3:3e9586433ce5 86 * @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 87 * @note Neither bearing goes from 0 to 359.99. You may considere bearing as something very relative.
haarkon 1:2507a3379f17 88 */
haarkon 1:2507a3379f17 89 operator double();
haarkon 0:41ff46c0f65a 90
haarkon 0:41ff46c0f65a 91 };
haarkon 0:41ff46c0f65a 92
haarkon 0:41ff46c0f65a 93 #endif /* CMPS03_H */