![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
PARALLAX sonar threaded
Dependencies: C12832_lcd Pulse RangeFinder mbed-rtos mbed
Fork of rtos_basic by
Revision 7:cb446dbb54d9, committed 2015-03-23
- Comitter:
- hervel90
- Date:
- Mon Mar 23 14:58:40 2015 +0000
- Parent:
- 6:209f4db62daf
- Commit message:
- PARALLAX sonar threaded
Changed in this revision
diff -r 209f4db62daf -r cb446dbb54d9 C12832_lcd.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832_lcd.lib Mon Mar 23 14:58:40 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
diff -r 209f4db62daf -r cb446dbb54d9 Pulse.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pulse.lib Mon Mar 23 14:58:40 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/NickRyder/code/Pulse/#fb79a4637a64
diff -r 209f4db62daf -r cb446dbb54d9 RangeFinder.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RangeFinder.lib Mon Mar 23 14:58:40 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/NickRyder/code/RangeFinder/#05c9036328ee
diff -r 209f4db62daf -r cb446dbb54d9 main.cpp --- a/main.cpp Tue Jun 04 16:01:32 2013 +0100 +++ b/main.cpp Mon Mar 23 14:58:40 2015 +0000 @@ -1,21 +1,78 @@ +#include "rtos.h" #include "mbed.h" -#include "rtos.h" - -DigitalOut led1(LED1); -DigitalOut led2(LED2); - -void led2_thread(void const *args) { +#include "C12832_lcd.h" +#include "RangeFinder.h" + +// Seeed ultrasound range finder +RangeFinder rf(p21, 10, 5800.0, 100000); +BusOut myleds(LED1, LED2, LED3, LED4); +C12832_LCD lcd; + +float sonar_data; + + +void lcd_display(void const *args) { while (true) { - led2 = !led2; - Thread::wait(1000); + lcd.locate(0,0); + if (sonar_data == -1.0) { + lcd.printf("Timeout Error.\n"); + } else if (sonar_data > 5.0) { + lcd.printf("No object within detection range.\n"); + } else { + lcd.printf("Distance = %f m.\n", sonar_data); + } + Thread::wait(250); } } - -int main() { - Thread thread(led2_thread); + +void led_display(void const *args) { + while (true) { + float led_m = 0.790474; + if (sonar_data <= led_m) + { + myleds = 15; + } + else if (sonar_data > led_m && sonar_data <= 2*led_m ) + { + myleds = 7; + } + else if (sonar_data > 2*led_m && sonar_data <= 3*led_m ) + { + myleds = 3; + } + else + { + myleds = 1; + } - while (true) { - led1 = !led1; - Thread::wait(500); + Thread::wait(250); } } + +void serial_display(void const *args) { + while (true) { + lcd.locate(0,0); + if (sonar_data == -1.0) { + printf("Timeout Error.\n"); + } else if (sonar_data > 5.0) { + printf("No object within detection range.\n"); + } else { + printf("Distance = %f m.\n", sonar_data); + } + Thread::wait(250); + } +} + + +int main() { + lcd.cls(); + + Thread thread1(led_display); + Thread thread2(lcd_display); + Thread thread3(serial_display); + + while (1) { + sonar_data = rf.read_m(); + Thread::wait(250); + } +} \ No newline at end of file
diff -r 209f4db62daf -r cb446dbb54d9 mbed-rtos.lib --- a/mbed-rtos.lib Tue Jun 04 16:01:32 2013 +0100 +++ b/mbed-rtos.lib Mon Mar 23 14:58:40 2015 +0000 @@ -1,1 +1,1 @@ -https://mbed.org/users/mbed_official/code/mbed-rtos/ \ No newline at end of file +https://mbed.org/users/mbed_official/code/mbed-rtos/#d3d0e710b443
diff -r 209f4db62daf -r cb446dbb54d9 mbed.bld --- a/mbed.bld Tue Jun 04 16:01:32 2013 +0100 +++ b/mbed.bld Mon Mar 23 14:58:40 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/ \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/487b796308b0 \ No newline at end of file