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:   DISCO-F746NG_LCDTS_demo Srf08Test




Don't forget to add the pullup resistors from 5v to SDA and SCL!

Information on the SRF08 can be found here:

Example program

#include "mbed.h"
#include "SRF08.h"

Serial PC(USBTX, USBRX);       //Debug port to PC
SRF08 rangeMod1(p28, p27, 0xE4); //SRF08 ranging module 1
SRF08 rangeMod2(p28, p27, 0xE2); //SRF08 ranging module 2

int main() {
    PC.printf("Start ranging test \n");
    rangeMod1.setAddress(0xE4); //Factory default is 0xE0
    while(1) {
        while (!rangeMod1.rangingFinished() ) wait(0.01);
        int range1 = rangeMod1.getRange();
        int light1 = rangeMod1.getLightIntensity();
        while (!rangeMod2.rangingFinished() ) wait(0.01);
        int range2 = rangeMod2.getRange();
        PC.printf(" Range_1: %i", range1);
        PC.printf(" Range_2: %i", range2);
        PC.printf(" Light_1: %i", light1);


Import library

Public Member Functions

  SRF08 (PinName SDA, PinName SCL, int i2cAddress)
  Create a SRF08 object connected to the specified I2C pins and address.
void  startRanging ()
  Send the "Start ranging in cm" command via I2C.
bool  rangingFinished ()
  Checks if the module has finished ranging.
int  getRange ()
  Gets the measured range from the module.
int  getLightIntensity ()
  Gets the measured light intensity from the module.
void  setRangeRegister (unsigned char rangeVal)
  Sets the range register of the SRF08 for faster ranging.
void  setMaxGainRegister (unsigned char gainVal)
  Sets the max gain register of the SRF08 .
void  setAddress (int i2cAddress)
  Changes the I2C address of the SRF08 .
Download repository: zip gz

Files at revision 4:a11bd4ea3c18

Name Size Actions
SRF08.cpp 5319 Revisions Annotate
SRF08.h 3411 Revisions Annotate