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:
Mon May 21 16:13:10 2018 +0000
Revision:
1:2507a3379f17
Parent:
0:41ff46c0f65a
Child:
2:e09ad9c1f751
Cosmetic modification still untested;

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 0:41ff46c0f65a 39 * Includes
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 0:41ff46c0f65a 56 */
haarkon 0:41ff46c0f65a 57 class CMPS03 {
haarkon 0:41ff46c0f65a 58
haarkon 0:41ff46c0f65a 59 protected :
haarkon 0:41ff46c0f65a 60
haarkon 0:41ff46c0f65a 61 I2C* _i2c;
haarkon 0:41ff46c0f65a 62 InterruptIn _boussole;
haarkon 0:41ff46c0f65a 63 Timer _tim;
haarkon 0:41ff46c0f65a 64
haarkon 0:41ff46c0f65a 65 void rise();
haarkon 0:41ff46c0f65a 66 void fall();
haarkon 0:41ff46c0f65a 67
haarkon 0:41ff46c0f65a 68 int _i2cAddress;
haarkon 0:41ff46c0f65a 69 long _startTime, _stopTime, _pwmBearing;
haarkon 0:41ff46c0f65a 70
haarkon 0:41ff46c0f65a 71 public :
haarkon 0:41ff46c0f65a 72
haarkon 0:41ff46c0f65a 73 /**
haarkon 0:41ff46c0f65a 74 * Constructor.
haarkon 1:2507a3379f17 75 * If not used, the two I2C pins should be pulled up.
haarkon 0:41ff46c0f65a 76 *
haarkon 0:41ff46c0f65a 77 * @param pwm mbed pin to use to get the bearing Pulse
haarkon 0:41ff46c0f65a 78 * @param sda mbed pin to use as the I2C serial data
haarkon 0:41ff46c0f65a 79 * @param scl mbed pin to use as the I2C serial clock
haarkon 0:41ff46c0f65a 80 * @param address is the I2C adress of the compass
haarkon 0:41ff46c0f65a 81 */
haarkon 0:41ff46c0f65a 82 CMPS03(PinName pwm, PinName sda, PinName scl, int address = 0xC0);
haarkon 0:41ff46c0f65a 83
haarkon 0:41ff46c0f65a 84 /**
haarkon 0:41ff46c0f65a 85 * Reads the software revision register [register 0] on the device.
haarkon 0:41ff46c0f65a 86 *
haarkon 0:41ff46c0f65a 87 * @return The contents of the software revision register as a byte.
haarkon 0:41ff46c0f65a 88 */
haarkon 0:41ff46c0f65a 89 char readSoftwareRevision(void);
haarkon 0:41ff46c0f65a 90
haarkon 0:41ff46c0f65a 91 /**
haarkon 0:41ff46c0f65a 92 * Reads the current bearing of the compass.
haarkon 0:41ff46c0f65a 93 *
haarkon 0:41ff46c0f65a 94 * @return The current bearing of the compass as a value between 0.0 and 359.9,
haarkon 0:41ff46c0f65a 95 * representing 0 - 359.9 degrees.
haarkon 0:41ff46c0f65a 96 */
haarkon 1:2507a3379f17 97 double readBearing(void);
haarkon 0:41ff46c0f65a 98
haarkon 0:41ff46c0f65a 99 /**
haarkon 0:41ff46c0f65a 100 * Reads the last bearing of the compass thru PWM signal (1 bearing each 100ms approx.).
haarkon 0:41ff46c0f65a 101 *
haarkon 0:41ff46c0f65a 102 * @return The current bearing of the compass as a value between 0.00 and 359.99,
haarkon 0:41ff46c0f65a 103 * representing 0 - 359.99 degrees.
haarkon 0:41ff46c0f65a 104 */
haarkon 1:2507a3379f17 105 double getBearing(void);
haarkon 1:2507a3379f17 106
haarkon 1:2507a3379f17 107 /**
haarkon 1:2507a3379f17 108 * A short hand for getBearing
haarkon 1:2507a3379f17 109 */
haarkon 1:2507a3379f17 110 operator double();
haarkon 0:41ff46c0f65a 111
haarkon 0:41ff46c0f65a 112 };
haarkon 0:41ff46c0f65a 113
haarkon 0:41ff46c0f65a 114 #endif /* CMPS03_H */