A library for the HCSR04 sensor. work with interrupt

Dependents:   AdrianLysShow AdrianLysShow

A small library for the HCSR04 sensor. works with interrupt on the egde of the echo

link to datasheet: http://www.micropik.com/PDF/HCSR04.pdf

Committer:
gert_lauritsen
Date:
Wed Apr 29 06:12:22 2015 +0000
Revision:
1:e3a37f4015da
Parent:
0:9f4365d41bf1
Corrected the calfaktor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gert_lauritsen 0:9f4365d41bf1 1 #include "HCSR04.h"
gert_lauritsen 0:9f4365d41bf1 2 #include "mbed.h"
gert_lauritsen 1:e3a37f4015da 3 #define DistanceOffset 0
gert_lauritsen 0:9f4365d41bf1 4 HCSR04::HCSR04(PinName t, PinName e,callback_type _callback) : trig(t), echo(e)
gert_lauritsen 0:9f4365d41bf1 5 {
gert_lauritsen 0:9f4365d41bf1 6 echo.rise(this, &HCSR04::StartTimer);
gert_lauritsen 0:9f4365d41bf1 7 echo.fall(this, &HCSR04::DistResult);
gert_lauritsen 0:9f4365d41bf1 8 pulsWidth=new Timeout;
gert_lauritsen 0:9f4365d41bf1 9 callback = _callback;
gert_lauritsen 0:9f4365d41bf1 10 }
gert_lauritsen 0:9f4365d41bf1 11
gert_lauritsen 0:9f4365d41bf1 12 void HCSR04::StartTimer() {
gert_lauritsen 0:9f4365d41bf1 13 timer.reset();
gert_lauritsen 0:9f4365d41bf1 14 timer.start();
gert_lauritsen 0:9f4365d41bf1 15 }
gert_lauritsen 0:9f4365d41bf1 16
gert_lauritsen 0:9f4365d41bf1 17 void HCSR04::DistResult() {
gert_lauritsen 0:9f4365d41bf1 18 //Getting the distance
gert_lauritsen 1:e3a37f4015da 19 dist_cm =((timer.read_us()-DistanceOffset)*0.034)/2;
gert_lauritsen 1:e3a37f4015da 20 callback(dist_cm); //time the speed of sound
gert_lauritsen 0:9f4365d41bf1 21 }
gert_lauritsen 0:9f4365d41bf1 22
gert_lauritsen 0:9f4365d41bf1 23 void HCSR04::Trigoff() {
gert_lauritsen 1:e3a37f4015da 24 //setting the trigger low
gert_lauritsen 0:9f4365d41bf1 25 trig = 0;
gert_lauritsen 0:9f4365d41bf1 26 }
gert_lauritsen 0:9f4365d41bf1 27
gert_lauritsen 0:9f4365d41bf1 28 void HCSR04::Trigger() {
gert_lauritsen 0:9f4365d41bf1 29 //Makes a trigger signal
gert_lauritsen 0:9f4365d41bf1 30 trig = 1;
gert_lauritsen 0:9f4365d41bf1 31 pulsWidth->attach_us(this,&HCSR04::Trigoff,10);
gert_lauritsen 0:9f4365d41bf1 32 //Give it 10 us puls
gert_lauritsen 0:9f4365d41bf1 33 }
gert_lauritsen 0:9f4365d41bf1 34