Library for interfacing the SRF08 ultrasonic range sensor. Most functions of the SRF08 are covered, including interrupt-based waiting for the ranging process to finish

Dependents:   Project6

Fork of SRF08 by Brent Dekker

Committer:
brentdekker
Date:
Thu Jul 05 09:53:18 2012 +0000
Revision:
0:4e0a8193b92e
Child:
1:76fb116fa28d
Version in which all functions of SRF08 are covered;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brentdekker 0:4e0a8193b92e 1
brentdekker 0:4e0a8193b92e 2 /*
brentdekker 0:4e0a8193b92e 3 Copyright (c) 2010 Chris Styles (chris dot styles at mbed dot org)
brentdekker 0:4e0a8193b92e 4
brentdekker 0:4e0a8193b92e 5 Permission is hereby granted, free of charge, to any person obtaining a copy
brentdekker 0:4e0a8193b92e 6 of this software and associated documentation files (the "Software"), to deal
brentdekker 0:4e0a8193b92e 7 in the Software without restriction, including without limitation the rights
brentdekker 0:4e0a8193b92e 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
brentdekker 0:4e0a8193b92e 9 copies of the Software, and to permit persons to whom the Software is
brentdekker 0:4e0a8193b92e 10 furnished to do so, subject to the following conditions:
brentdekker 0:4e0a8193b92e 11
brentdekker 0:4e0a8193b92e 12 The above copyright notice and this permission notice shall be included in
brentdekker 0:4e0a8193b92e 13 all copies or substantial portions of the Software.
brentdekker 0:4e0a8193b92e 14
brentdekker 0:4e0a8193b92e 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
brentdekker 0:4e0a8193b92e 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
brentdekker 0:4e0a8193b92e 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
brentdekker 0:4e0a8193b92e 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
brentdekker 0:4e0a8193b92e 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
brentdekker 0:4e0a8193b92e 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
brentdekker 0:4e0a8193b92e 21 THE SOFTWARE.
brentdekker 0:4e0a8193b92e 22 */
brentdekker 0:4e0a8193b92e 23
brentdekker 0:4e0a8193b92e 24 #ifndef SRF08_H
brentdekker 0:4e0a8193b92e 25 #define SRF08_H
brentdekker 0:4e0a8193b92e 26
brentdekker 0:4e0a8193b92e 27 #include "mbed.h"
brentdekker 0:4e0a8193b92e 28
brentdekker 0:4e0a8193b92e 29 /*
brentdekker 0:4e0a8193b92e 30 * The SRF08 is an Ultrasonic range finder, with an I2C interface that allows the measurement to be read directly in centimetres
brentdekker 0:4e0a8193b92e 31 */
brentdekker 0:4e0a8193b92e 32 class SRF08 {
brentdekker 0:4e0a8193b92e 33
brentdekker 0:4e0a8193b92e 34 public:
brentdekker 0:4e0a8193b92e 35
brentdekker 0:4e0a8193b92e 36 /*
brentdekker 0:4e0a8193b92e 37 * Constructor: SRF08
brentdekker 0:4e0a8193b92e 38 * Args: PinName sda: Data pin of I2C bus to which module is connected
brentdekker 0:4e0a8193b92e 39 * PinName scl: Clock pin of I2C bus to which module is connected
brentdekker 0:4e0a8193b92e 40 * int addr: address of module on the I2C bus
brentdekker 0:4e0a8193b92e 41 * Returns: void
brentdekker 0:4e0a8193b92e 42 * Description: Creates an instance of the SRF08 to communicate with a sRF08 module
brentdekker 0:4e0a8193b92e 43 */
brentdekker 0:4e0a8193b92e 44 SRF08(PinName sda, PinName scl, int addr);
brentdekker 0:4e0a8193b92e 45
brentdekker 0:4e0a8193b92e 46 /*
brentdekker 0:4e0a8193b92e 47 * Destructor: ~SRF08
brentdekker 0:4e0a8193b92e 48 * Args: void
brentdekker 0:4e0a8193b92e 49 * Returns: void
brentdekker 0:4e0a8193b92e 50 * Description: Destroys instance of SRF08 class
brentdekker 0:4e0a8193b92e 51 */
brentdekker 0:4e0a8193b92e 52 ~SRF08();
brentdekker 0:4e0a8193b92e 53
brentdekker 0:4e0a8193b92e 54 /*
brentdekker 0:4e0a8193b92e 55 * Function: readRange
brentdekker 0:4e0a8193b92e 56 * Args: void
brentdekker 0:4e0a8193b92e 57 * Returns: int range
brentdekker 0:4e0a8193b92e 58 * Description: Reads the range register and converts it to a usable value
brentdekker 0:4e0a8193b92e 59 */
brentdekker 0:4e0a8193b92e 60 int read();
brentdekker 0:4e0a8193b92e 61
brentdekker 0:4e0a8193b92e 62 /*
brentdekker 0:4e0a8193b92e 63 * Function: readLightIntensity
brentdekker 0:4e0a8193b92e 64 * Args: void
brentdekker 0:4e0a8193b92e 65 * Returns: int lightIntensity
brentdekker 0:4e0a8193b92e 66 * Description: Reads the lightIntensity from the module
brentdekker 0:4e0a8193b92e 67 */
brentdekker 0:4e0a8193b92e 68 int readLightIntensity();
brentdekker 0:4e0a8193b92e 69
brentdekker 0:4e0a8193b92e 70 /*
brentdekker 0:4e0a8193b92e 71 * Function: setRangeRegister
brentdekker 0:4e0a8193b92e 72 * Args: rangeVal
brentdekker 0:4e0a8193b92e 73 * Returns: void
brentdekker 0:4e0a8193b92e 74 * Description: Sets the maximum range for which the module waits for an echo
brentdekker 0:4e0a8193b92e 75 * The range is ((rangeVal x 43mm) + 43mm)
brentdekker 0:4e0a8193b92e 76 * The max range is about six meters
brentdekker 0:4e0a8193b92e 77 */
brentdekker 0:4e0a8193b92e 78 void setRangeRegister(char rangeVal);
brentdekker 0:4e0a8193b92e 79
brentdekker 0:4e0a8193b92e 80 /*
brentdekker 0:4e0a8193b92e 81 * Function: setAddress
brentdekker 0:4e0a8193b92e 82 * Args: address
brentdekker 0:4e0a8193b92e 83 * Returns: void
brentdekker 0:4e0a8193b92e 84 * Description: Sets the address of the module on the I2C bus. The factory default address is 0x0E (224)
brentdekker 0:4e0a8193b92e 85 * The address can have the following values:
brentdekker 0:4e0a8193b92e 86 * E0 | E2 | E4 | E6 ... FC | FE
brentdekker 0:4e0a8193b92e 87 */
brentdekker 0:4e0a8193b92e 88 void setAddress(char address);
brentdekker 0:4e0a8193b92e 89
brentdekker 0:4e0a8193b92e 90 private:
brentdekker 0:4e0a8193b92e 91 I2C m_i2c;
brentdekker 0:4e0a8193b92e 92 int m_addr;
brentdekker 0:4e0a8193b92e 93
brentdekker 0:4e0a8193b92e 94 };
brentdekker 0:4e0a8193b92e 95
brentdekker 0:4e0a8193b92e 96 #endif