Marian Andrecki
/
nihao_helper
set of sensor managers
HCSR04.cpp@0:d9d8c810ba83, 2014-07-27 (annotated)
- Committer:
- iramusa
- Date:
- Sun Jul 27 20:42:24 2014 +0000
- Revision:
- 0:d9d8c810ba83
Ultrasonic ranger class operational.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iramusa | 0:d9d8c810ba83 | 1 | #include "mbed.h" |
iramusa | 0:d9d8c810ba83 | 2 | #include "HCSR04.h" |
iramusa | 0:d9d8c810ba83 | 3 | |
iramusa | 0:d9d8c810ba83 | 4 | HCSR04::HCSR04(PinName pin_trigger, PinName pin_echo, float &container_var): |
iramusa | 0:d9d8c810ba83 | 5 | caller(pin_trigger), |
iramusa | 0:d9d8c810ba83 | 6 | listener(pin_echo){ |
iramusa | 0:d9d8c810ba83 | 7 | range_storage = &container_var; //check how it's done |
iramusa | 0:d9d8c810ba83 | 8 | listener.rise(this, &HCSR04::start_counting); |
iramusa | 0:d9d8c810ba83 | 9 | listener.fall(this, &HCSR04::stop_counting); |
iramusa | 0:d9d8c810ba83 | 10 | time_keeper.start(); |
iramusa | 0:d9d8c810ba83 | 11 | } |
iramusa | 0:d9d8c810ba83 | 12 | |
iramusa | 0:d9d8c810ba83 | 13 | void HCSR04::start_measurement(void){ |
iramusa | 0:d9d8c810ba83 | 14 | caller = 1; |
iramusa | 0:d9d8c810ba83 | 15 | controller.attach_us(this, &HCSR04::stop_calling, TRIGGER_TIME); |
iramusa | 0:d9d8c810ba83 | 16 | } |
iramusa | 0:d9d8c810ba83 | 17 | |
iramusa | 0:d9d8c810ba83 | 18 | void HCSR04::stop_calling(void){ |
iramusa | 0:d9d8c810ba83 | 19 | caller = 0; |
iramusa | 0:d9d8c810ba83 | 20 | controller.detach(); |
iramusa | 0:d9d8c810ba83 | 21 | } |
iramusa | 0:d9d8c810ba83 | 22 | |
iramusa | 0:d9d8c810ba83 | 23 | void HCSR04::start_counting(void){ |
iramusa | 0:d9d8c810ba83 | 24 | time_keeper.reset(); |
iramusa | 0:d9d8c810ba83 | 25 | } |
iramusa | 0:d9d8c810ba83 | 26 | |
iramusa | 0:d9d8c810ba83 | 27 | void HCSR04::stop_counting(void){ |
iramusa | 0:d9d8c810ba83 | 28 | float temp_range = (float)time_keeper.read_us()/58.0f; //convert to centimeters |
iramusa | 0:d9d8c810ba83 | 29 | if (temp_range < MAX_RANGE) |
iramusa | 0:d9d8c810ba83 | 30 | *range_storage = temp_range; |
iramusa | 0:d9d8c810ba83 | 31 | else |
iramusa | 0:d9d8c810ba83 | 32 | *range_storage = -1.0; |
iramusa | 0:d9d8c810ba83 | 33 | } |