Slightly revised version of the SRF02 library created by Craig A. Evans

Fork of SRF02 by Craig Evans

Committer:
andreykotov91
Date:
Sun May 08 17:37:30 2016 +0000
Revision:
4:5e3954a62b23
Parent:
2:d2f687283735
Library edited for use with project (reformatted to including Doxygen sytle commenting)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:b729d2ce03bd 1 /**
eencae 0:b729d2ce03bd 2 @file SRF02.h
eencae 0:b729d2ce03bd 3
eencae 0:b729d2ce03bd 4 @brief Header file containing member functions and variables
eencae 0:b729d2ce03bd 5
eencae 0:b729d2ce03bd 6 */
eencae 0:b729d2ce03bd 7
andreykotov91 4:5e3954a62b23 8 //header guard
eencae 0:b729d2ce03bd 9 #ifndef SRF02_H
eencae 0:b729d2ce03bd 10 #define SRF02_H
eencae 0:b729d2ce03bd 11
eencae 0:b729d2ce03bd 12 // addresses
eencae 0:b729d2ce03bd 13 #define SRF02_R_ADD 0xE1
eencae 0:b729d2ce03bd 14 #define SRF02_W_ADD 0xE0
eencae 0:b729d2ce03bd 15
eencae 0:b729d2ce03bd 16 // registers
eencae 0:b729d2ce03bd 17 #define CMD_REG 0x00
eencae 0:b729d2ce03bd 18 #define RANGE_H_REG 0x02
eencae 0:b729d2ce03bd 19 #define RANGE_L_REG 0x03
eencae 0:b729d2ce03bd 20
eencae 0:b729d2ce03bd 21 // commands
eencae 0:b729d2ce03bd 22 #define INCH_CMD 0x50
eencae 0:b729d2ce03bd 23 #define CM_CMD 0x51
eencae 0:b729d2ce03bd 24 #define US_CMD 0x52
eencae 0:b729d2ce03bd 25
eencae 0:b729d2ce03bd 26 #include "mbed.h"
eencae 0:b729d2ce03bd 27
eencae 0:b729d2ce03bd 28 /**
eencae 0:b729d2ce03bd 29 @brief Library for interfacing with SRF02 Ultrasonic Sensor in I2C
eencae 0:b729d2ce03bd 30 @see http://www.robot-electronics.co.uk/htm/srf02tech.htm
eencae 0:b729d2ce03bd 31
eencae 0:b729d2ce03bd 32 @brief Revision 1.0
eencae 0:b729d2ce03bd 33
eencae 0:b729d2ce03bd 34 @author Craig A. Evans
eencae 0:b729d2ce03bd 35 @date March 2014
eencae 0:b729d2ce03bd 36 *
eencae 0:b729d2ce03bd 37 * Example:
eencae 0:b729d2ce03bd 38 * @code
eencae 0:b729d2ce03bd 39
eencae 0:b729d2ce03bd 40 #include "mbed.h"
eencae 0:b729d2ce03bd 41 #include "SRF02.h"
eencae 0:b729d2ce03bd 42
eencae 0:b729d2ce03bd 43 int main() {
eencae 0:b729d2ce03bd 44
eencae 0:b729d2ce03bd 45 while(1) {
eencae 0:b729d2ce03bd 46
eencae 0:b729d2ce03bd 47 // read sensor distance in cm and print over serial port
eencae 0:b729d2ce03bd 48 int distance = sensor.getDistanceCm();
eencae 0:b729d2ce03bd 49 serial.printf("Distance = %d cm\n",distance);
eencae 0:b729d2ce03bd 50 // short delay before next measurement
eencae 0:b729d2ce03bd 51 wait(0.5);
eencae 0:b729d2ce03bd 52
eencae 0:b729d2ce03bd 53 }
eencae 0:b729d2ce03bd 54 }
eencae 0:b729d2ce03bd 55 * @endcode
eencae 0:b729d2ce03bd 56 */
eencae 0:b729d2ce03bd 57
eencae 0:b729d2ce03bd 58 class SRF02
eencae 0:b729d2ce03bd 59 {
eencae 0:b729d2ce03bd 60 public:
eencae 0:b729d2ce03bd 61
eencae 1:8e6587d88773 62 /** Create a SRF02 object connected to the specified I2C pins
eencae 1:8e6587d88773 63 *
eencae 1:8e6587d88773 64 * @param sdaPin - mbed SDA pin
eencae 1:8e6587d88773 65 * @param sclPin - mbed SCL pin
eencae 1:8e6587d88773 66 *
eencae 1:8e6587d88773 67 */
eencae 0:b729d2ce03bd 68 SRF02(PinName sdaPin, PinName sclPin);
eencae 1:8e6587d88773 69 /** Read distance in centimetres
eencae 1:8e6587d88773 70 *
eencae 1:8e6587d88773 71 * @returns distance in centimetres (int)
eencae 1:8e6587d88773 72 *
eencae 1:8e6587d88773 73 */
eencae 0:b729d2ce03bd 74 int getDistanceCm();
eencae 0:b729d2ce03bd 75
eencae 0:b729d2ce03bd 76 private:
andreykotov91 4:5e3954a62b23 77 /** Called in event of error - flashes LED and hangs
andreykotov91 4:5e3954a62b23 78 */
eencae 0:b729d2ce03bd 79 void error();
eencae 0:b729d2ce03bd 80
eencae 0:b729d2ce03bd 81
andreykotov91 4:5e3954a62b23 82 private:
andreykotov91 4:5e3954a62b23 83 /**Class data member names often have a trailing underscore to make them easily identifiable
andreykotov91 4:5e3954a62b23 84 */
andreykotov91 4:5e3954a62b23 85 I2C* i2c_;
andreykotov91 4:5e3954a62b23 86 DigitalOut* led_;
eencae 0:b729d2ce03bd 87 };
eencae 0:b729d2ce03bd 88
eencae 0:b729d2ce03bd 89 #endif