Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: AdrianLysShow AdrianLysShow
HCSR04.cpp@0:9f4365d41bf1, 2015-04-28 (annotated)
- Committer:
- gert_lauritsen
- Date:
- Tue Apr 28 14:46:20 2015 +0000
- Revision:
- 0:9f4365d41bf1
- Child:
- 1:e3a37f4015da
Working version of distance sensor; works with interrupt measuring the time of fligth
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 | 0:9f4365d41bf1 | 3 | #define DistanceOffset 180 |
| 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 | 0:9f4365d41bf1 | 19 | dist_cm =timer.read_us()-DistanceOffset; |
| gert_lauritsen | 0:9f4365d41bf1 | 20 | callback(dist_cm*0.034); //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 | 0:9f4365d41bf1 | 24 | trig = 0; |
| gert_lauritsen | 0:9f4365d41bf1 | 25 | } |
| gert_lauritsen | 0:9f4365d41bf1 | 26 | |
| gert_lauritsen | 0:9f4365d41bf1 | 27 | void HCSR04::Trigger() { |
| gert_lauritsen | 0:9f4365d41bf1 | 28 | //Makes a trigger signal |
| gert_lauritsen | 0:9f4365d41bf1 | 29 | trig = 1; |
| gert_lauritsen | 0:9f4365d41bf1 | 30 | pulsWidth->attach_us(this,&HCSR04::Trigoff,10); |
| gert_lauritsen | 0:9f4365d41bf1 | 31 | //Give it 10 us puls |
| gert_lauritsen | 0:9f4365d41bf1 | 32 | } |
| gert_lauritsen | 0:9f4365d41bf1 | 33 |