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.h@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 | //--------------------------------------------------------- |
gert_lauritsen | 0:9f4365d41bf1 | 2 | //Class for measure distance with the HCSR04 sensor |
gert_lauritsen | 0:9f4365d41bf1 | 3 | /* |
gert_lauritsen | 0:9f4365d41bf1 | 4 | Eksemple |
gert_lauritsen | 1:e3a37f4015da | 5 | void distance(long Distance) { |
gert_lauritsen | 1:e3a37f4015da | 6 | printf("Distance: %d \r",Distance); |
gert_lauritsen | 0:9f4365d41bf1 | 7 | } |
gert_lauritsen | 0:9f4365d41bf1 | 8 | |
gert_lauritsen | 0:9f4365d41bf1 | 9 | int main() |
gert_lauritsen | 0:9f4365d41bf1 | 10 | { |
gert_lauritsen | 0:9f4365d41bf1 | 11 | sensor= new HCSR04(p5,p6,distance); |
gert_lauritsen | 0:9f4365d41bf1 | 12 | printf("Test af sensor\r\n"); |
gert_lauritsen | 0:9f4365d41bf1 | 13 | while(1) { |
gert_lauritsen | 0:9f4365d41bf1 | 14 | sensor->Trigger(); |
gert_lauritsen | 0:9f4365d41bf1 | 15 | wait(0.1); |
gert_lauritsen | 0:9f4365d41bf1 | 16 | |
gert_lauritsen | 0:9f4365d41bf1 | 17 | } |
gert_lauritsen | 0:9f4365d41bf1 | 18 | } |
gert_lauritsen | 1:e3a37f4015da | 19 | Datasheet: http://www.micropik.com/PDF/HCSR04.pdf |
gert_lauritsen | 0:9f4365d41bf1 | 20 | */ |
gert_lauritsen | 0:9f4365d41bf1 | 21 | #include "mbed.h" |
gert_lauritsen | 0:9f4365d41bf1 | 22 | typedef void (*callback_type)(long); |
gert_lauritsen | 0:9f4365d41bf1 | 23 | |
gert_lauritsen | 0:9f4365d41bf1 | 24 | class HCSR04 { |
gert_lauritsen | 0:9f4365d41bf1 | 25 | public: |
gert_lauritsen | 0:9f4365d41bf1 | 26 | HCSR04(PinName t, PinName e,callback_type _callback); |
gert_lauritsen | 0:9f4365d41bf1 | 27 | void Trigger(); //starts the trigger |
gert_lauritsen | 0:9f4365d41bf1 | 28 | |
gert_lauritsen | 0:9f4365d41bf1 | 29 | private: |
gert_lauritsen | 0:9f4365d41bf1 | 30 | DigitalOut trig; |
gert_lauritsen | 0:9f4365d41bf1 | 31 | InterruptIn echo; |
gert_lauritsen | 0:9f4365d41bf1 | 32 | Timer timer; |
gert_lauritsen | 0:9f4365d41bf1 | 33 | Timeout *pulsWidth; |
gert_lauritsen | 0:9f4365d41bf1 | 34 | callback_type callback; |
gert_lauritsen | 0:9f4365d41bf1 | 35 | long dist_cm; |
gert_lauritsen | 0:9f4365d41bf1 | 36 | |
gert_lauritsen | 0:9f4365d41bf1 | 37 | void Trigoff(); //Turnoff the trigger |
gert_lauritsen | 0:9f4365d41bf1 | 38 | void DistResult(); |
gert_lauritsen | 0:9f4365d41bf1 | 39 | void StartTimer(); |
gert_lauritsen | 0:9f4365d41bf1 | 40 | }; |