srf04 ultra sonic range finder

Device driver for the srf04 ultra sonic range finder.

enum @159
SRF04_OK =  0
exit without error
SRF04_ERR_INVALID = -1
error no valid measurement available
SRF04_ERR_MEASURING = -2
error sensor is measuring
SRF04_ERR_GPIO = -3
error initializing gpio
int srf04_init(srf04_t * dev, const srf04_params_t * params)

Initialize gpio and interrupt.

Parameters

dev:device descriptor of sensor to initialize
params:init param struct holding gpio trigger and echo pins

Return values

  • SRF04_OK on success
  • SRF04_GPIO on gpio init failure
void srf04_trigger(const srf04_t * dev)

Triggers measurement.

Parameters

dev:device descriptor of sensor

int srf04_read(const srf04_t * dev)

Returns time of flight in ms.

Note

should not be invoked within 50 ms after triggering

Parameters

dev:device descriptor of sensor

Return values

  • time of flight in ms
  • SRF04_MEASURING if measurement is in progress
  • SRF04_INVALID if no valid measurement is available
int srf04_get_distance(const srf04_t * dev)

Convenience function triggers a measurement and returns distance.

Note

This function will return after 50 ms once new data is available

Parameters

dev:device descriptor of sensor

Return values

  • time of flight in mm
  • SRF04_MEASURING if measurement is in progress
  • SRF04_INVALID if no valid measurement is available
struct srf04_params_t

GPIO pins for srf04 device.

gpio.h::gpio_t trigger

GPIO Port the trigger pin is connected to.

gpio.h::gpio_t echo

GPIO Port the echo pin is connected to.

struct srf04_t

Device descriptor for srf04 sensor.

srf04_params_t p

GPIO Ports of device.

int distance

raw time of flight distance

uint32_t time

timestamp of trigger or echo