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:
Tue May 22 17:15:22 2018 +0000
Revision:
2:e09ad9c1f751
Parent:
1:2507a3379f17
Child:
3:3e9586433ce5
added callback treatment of interrupt

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 * Defines
haarkon 0:41ff46c0f65a 45 */
haarkon 0:41ff46c0f65a 46 #define CMPS03_DEFAULT_I2C_ADDRESS 0xC0
haarkon 0:41ff46c0f65a 47
haarkon 0:41ff46c0f65a 48 //-----------
haarkon 0:41ff46c0f65a 49 // Registers
haarkon 0:41ff46c0f65a 50 //-----------
haarkon 0:41ff46c0f65a 51 #define SOFTWARE_REVISION_REG 0x0
haarkon 0:41ff46c0f65a 52 #define COMPASS_BEARING_WORD_REG 0x2
haarkon 0:41ff46c0f65a 53
haarkon 0:41ff46c0f65a 54 /**
haarkon 0:41ff46c0f65a 55 * CMPS03 digital compass module.
haarkon 2:e09ad9c1f751 56 * more information : http://www.robot-electronics.co.uk/htm/cmps3tech.htm
haarkon 0:41ff46c0f65a 57 */
haarkon 0:41ff46c0f65a 58 class CMPS03 {
haarkon 0:41ff46c0f65a 59
haarkon 0:41ff46c0f65a 60 protected :
haarkon 0:41ff46c0f65a 61
haarkon 0:41ff46c0f65a 62 I2C* _i2c;
haarkon 0:41ff46c0f65a 63 InterruptIn _boussole;
haarkon 0:41ff46c0f65a 64 Timer _tim;
haarkon 0:41ff46c0f65a 65
haarkon 0:41ff46c0f65a 66 void rise();
haarkon 0:41ff46c0f65a 67 void fall();
haarkon 0:41ff46c0f65a 68
haarkon 0:41ff46c0f65a 69 int _i2cAddress;
haarkon 0:41ff46c0f65a 70 long _startTime, _stopTime, _pwmBearing;
haarkon 0:41ff46c0f65a 71
haarkon 0:41ff46c0f65a 72 public :
haarkon 0:41ff46c0f65a 73
haarkon 0:41ff46c0f65a 74 /**
haarkon 2:e09ad9c1f751 75 * Constructor of a CMPS03 Compass object.
haarkon 2:e09ad9c1f751 76 * @note If not used, the two I2C pins should be pulled up.
haarkon 0:41ff46c0f65a 77 *
haarkon 2:e09ad9c1f751 78 * @param pwm : mbed pin to use to get the bearing Pulse
haarkon 2:e09ad9c1f751 79 * @param sda : mbed pin to use as the I2C serial data
haarkon 2:e09ad9c1f751 80 * @param scl : mbed pin to use as the I2C serial clock
haarkon 2:e09ad9c1f751 81 * @param address : I2C adress of the compass
haarkon 0:41ff46c0f65a 82 */
haarkon 0:41ff46c0f65a 83 CMPS03(PinName pwm, PinName sda, PinName scl, int address = 0xC0);
haarkon 0:41ff46c0f65a 84
haarkon 0:41ff46c0f65a 85 /**
haarkon 2:e09ad9c1f751 86 * Reads the software revision register of the compass (I2C register 0).
haarkon 0:41ff46c0f65a 87 *
haarkon 2:e09ad9c1f751 88 * @return Software revision register (as a byte).
haarkon 0:41ff46c0f65a 89 */
haarkon 0:41ff46c0f65a 90 char readSoftwareRevision(void);
haarkon 0:41ff46c0f65a 91
haarkon 0:41ff46c0f65a 92 /**
haarkon 2:e09ad9c1f751 93 * Reads the current bearing of the compass (I2C registers 2 and 3).
haarkon 0:41ff46c0f65a 94 *
haarkon 2:e09ad9c1f751 95 * @return Current bearing of the compass in degree (value between 0.0 and 359.9).
haarkon 0:41ff46c0f65a 96 */
haarkon 1:2507a3379f17 97 double readBearing(void);
haarkon 0:41ff46c0f65a 98
haarkon 0:41ff46c0f65a 99 /**
haarkon 2:e09ad9c1f751 100 * Reads the last bearing of the compass from PWM signal (1 bearing each 100ms approx.).
haarkon 0:41ff46c0f65a 101 *
haarkon 2:e09ad9c1f751 102 * @return Current bearing of the compass in degree (0.00 and 359.99)
haarkon 0:41ff46c0f65a 103 */
haarkon 1:2507a3379f17 104 double getBearing(void);
haarkon 1:2507a3379f17 105
haarkon 1:2507a3379f17 106 /**
haarkon 1:2507a3379f17 107 * A short hand for getBearing
haarkon 1:2507a3379f17 108 */
haarkon 1:2507a3379f17 109 operator double();
haarkon 0:41ff46c0f65a 110
haarkon 0:41ff46c0f65a 111 };
haarkon 0:41ff46c0f65a 112
haarkon 0:41ff46c0f65a 113 #endif /* CMPS03_H */