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
HCSR04.cpp@1:e3a37f4015da, 2015-04-29 (annotated)
- 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?
User | Revision | Line number | New 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 |