1 sensor using RTOS Timer, another 2 over RTOS Semaphore
Dependents: Autonomous_quadcopter
Fork of HCSR04 by
Diff: front_sensor.h
- Revision:
- 13:e9b99635aa2d
- Parent:
- 12:6f6469b2f016
diff -r 6f6469b2f016 -r e9b99635aa2d front_sensor.h --- a/front_sensor.h Tue May 15 10:32:08 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -#include "mbed.h" -#include "rtos.h" -#include "hardware.h" - - -void front_sensor(void); -void left_sensor(void); -void right_sensor(void); -void back_sensor(void); - -void semaphore_thread(void const *name){ - pc.printf("Starting semaphore thread\n\r"); - while (true) { - _semaphore.wait(); - //pc.printf("%s\n\r", (const char*)name); - - if(strstr((const char*)name, "leftSensor") != NULL) - left_sensor(); - if(strstr((const char*)name, "frontSensor") != NULL) - front_sensor(); - if(strstr((const char*)name, "rightSensor") != NULL) - right_sensor(); - if(strstr((const char*)name, "backSensor") != NULL) - back_sensor(); - - - Thread::wait(100); - _semaphore.release(); - } - -} - -void front_sensor(){ - DigitalOut trig(p7); - DigitalIn echo(p8); - - Timer timer; - //printf("front sensor started \n\r"); - timer.start(); - //while(1){ - trig=1; // trigger high - //printf("trig\n\r"); - wait_us(10); - //printf("wait\n\r"); - trig=0; // trigger low - // start pulseIN - while(!echo); - timer.reset(); - while(echo); - _frontDistance = timer.read_us() / 58; - //printf("front distance %d \n\n\r", _frontDistance); - - //Thread::wait(100); - //} - - -} - -void left_sensor(){ - DigitalOut trig(p19); - DigitalIn echo(p20); - - Timer timer; - //printf("left sensor started \n\r"); - timer.start(); - //while(1){ - trig=1; // trigger high - //printf("trig\n\r"); - wait_us(10); - //printf("wait\n\r"); - trig=0; // trigger low - // start pulseIN - while(!echo); - timer.reset(); - while(echo); - _leftDistance = timer.read_us() / 58; - //pc.printf("left distance %d \n\n\r", _leftDistance); - - //Thread::wait(100); - //} - -} - -void right_sensor(){ - DigitalOut trig(p17); - DigitalIn echo(p18); - - Timer timer; - //printf("left sensor started \n\r"); - timer.start(); - //while(1){ - trig=1; // trigger high - //printf("trig\n\r"); - wait_us(10); - //printf("wait\n\r"); - trig=0; // trigger low - // start pulseIN - while(!echo); - timer.reset(); - while(echo); - _rightDistance = timer.read_us() / 58; - //pc.printf("left distance %d \n\n\r", _leftDistance); - - //Thread::wait(100); - //} - -} - -void back_sensor(){ - DigitalOut trig(p15); - DigitalIn echo(p16); - - Timer timer; - //printf("left sensor started \n\r"); - timer.start(); - //while(1){ - trig=1; // trigger high - //printf("trig\n\r"); - wait_us(10); - //printf("wait\n\r"); - trig=0; // trigger low - // start pulseIN - while(!echo); - timer.reset(); - while(echo); - _backDistance = timer.read_us() / 58; - //pc.printf("left distance %d \n\n\r", _leftDistance); - - //Thread::wait(100); - //} - -} \ No newline at end of file