set of sensor managers

Dependencies:   mbed

Committer:
iramusa
Date:
Sun Jul 27 20:42:24 2014 +0000
Revision:
0:d9d8c810ba83
Ultrasonic ranger class operational.

Who changed what in which revision?

UserRevisionLine numberNew 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 }