Simple library for reading distance from SRF02 Ultrasonic Sensor in I2C mode.

Fork of SRF02 by Craig Evans

Committer:
el14rirr
Date:
Thu May 05 01:55:58 2016 +0000
Revision:
2:43910fab41ca
Parent:
1:8e6587d88773
no changes!

Who changed what in which revision?

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