PARALLAX sonar threaded
Dependencies: C12832_lcd Pulse RangeFinder mbed-rtos mbed
Fork of rtos_basic by
main.cpp@7:cb446dbb54d9, 2015-03-23 (annotated)
- Committer:
- hervel90
- Date:
- Mon Mar 23 14:58:40 2015 +0000
- Revision:
- 7:cb446dbb54d9
- Parent:
- 3:c92e21f305d8
PARALLAX sonar threaded
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hervel90 | 7:cb446dbb54d9 | 1 | #include "rtos.h" |
emilmont | 1:491820ee784d | 2 | #include "mbed.h" |
hervel90 | 7:cb446dbb54d9 | 3 | #include "C12832_lcd.h" |
hervel90 | 7:cb446dbb54d9 | 4 | #include "RangeFinder.h" |
hervel90 | 7:cb446dbb54d9 | 5 | |
hervel90 | 7:cb446dbb54d9 | 6 | // Seeed ultrasound range finder |
hervel90 | 7:cb446dbb54d9 | 7 | RangeFinder rf(p21, 10, 5800.0, 100000); |
hervel90 | 7:cb446dbb54d9 | 8 | BusOut myleds(LED1, LED2, LED3, LED4); |
hervel90 | 7:cb446dbb54d9 | 9 | C12832_LCD lcd; |
hervel90 | 7:cb446dbb54d9 | 10 | |
hervel90 | 7:cb446dbb54d9 | 11 | float sonar_data; |
hervel90 | 7:cb446dbb54d9 | 12 | |
hervel90 | 7:cb446dbb54d9 | 13 | |
hervel90 | 7:cb446dbb54d9 | 14 | void lcd_display(void const *args) { |
emilmont | 1:491820ee784d | 15 | while (true) { |
hervel90 | 7:cb446dbb54d9 | 16 | lcd.locate(0,0); |
hervel90 | 7:cb446dbb54d9 | 17 | if (sonar_data == -1.0) { |
hervel90 | 7:cb446dbb54d9 | 18 | lcd.printf("Timeout Error.\n"); |
hervel90 | 7:cb446dbb54d9 | 19 | } else if (sonar_data > 5.0) { |
hervel90 | 7:cb446dbb54d9 | 20 | lcd.printf("No object within detection range.\n"); |
hervel90 | 7:cb446dbb54d9 | 21 | } else { |
hervel90 | 7:cb446dbb54d9 | 22 | lcd.printf("Distance = %f m.\n", sonar_data); |
hervel90 | 7:cb446dbb54d9 | 23 | } |
hervel90 | 7:cb446dbb54d9 | 24 | Thread::wait(250); |
emilmont | 1:491820ee784d | 25 | } |
emilmont | 1:491820ee784d | 26 | } |
hervel90 | 7:cb446dbb54d9 | 27 | |
hervel90 | 7:cb446dbb54d9 | 28 | void led_display(void const *args) { |
hervel90 | 7:cb446dbb54d9 | 29 | while (true) { |
hervel90 | 7:cb446dbb54d9 | 30 | float led_m = 0.790474; |
hervel90 | 7:cb446dbb54d9 | 31 | if (sonar_data <= led_m) |
hervel90 | 7:cb446dbb54d9 | 32 | { |
hervel90 | 7:cb446dbb54d9 | 33 | myleds = 15; |
hervel90 | 7:cb446dbb54d9 | 34 | } |
hervel90 | 7:cb446dbb54d9 | 35 | else if (sonar_data > led_m && sonar_data <= 2*led_m ) |
hervel90 | 7:cb446dbb54d9 | 36 | { |
hervel90 | 7:cb446dbb54d9 | 37 | myleds = 7; |
hervel90 | 7:cb446dbb54d9 | 38 | } |
hervel90 | 7:cb446dbb54d9 | 39 | else if (sonar_data > 2*led_m && sonar_data <= 3*led_m ) |
hervel90 | 7:cb446dbb54d9 | 40 | { |
hervel90 | 7:cb446dbb54d9 | 41 | myleds = 3; |
hervel90 | 7:cb446dbb54d9 | 42 | } |
hervel90 | 7:cb446dbb54d9 | 43 | else |
hervel90 | 7:cb446dbb54d9 | 44 | { |
hervel90 | 7:cb446dbb54d9 | 45 | myleds = 1; |
hervel90 | 7:cb446dbb54d9 | 46 | } |
emilmont | 1:491820ee784d | 47 | |
hervel90 | 7:cb446dbb54d9 | 48 | Thread::wait(250); |
emilmont | 1:491820ee784d | 49 | } |
emilmont | 1:491820ee784d | 50 | } |
hervel90 | 7:cb446dbb54d9 | 51 | |
hervel90 | 7:cb446dbb54d9 | 52 | void serial_display(void const *args) { |
hervel90 | 7:cb446dbb54d9 | 53 | while (true) { |
hervel90 | 7:cb446dbb54d9 | 54 | lcd.locate(0,0); |
hervel90 | 7:cb446dbb54d9 | 55 | if (sonar_data == -1.0) { |
hervel90 | 7:cb446dbb54d9 | 56 | printf("Timeout Error.\n"); |
hervel90 | 7:cb446dbb54d9 | 57 | } else if (sonar_data > 5.0) { |
hervel90 | 7:cb446dbb54d9 | 58 | printf("No object within detection range.\n"); |
hervel90 | 7:cb446dbb54d9 | 59 | } else { |
hervel90 | 7:cb446dbb54d9 | 60 | printf("Distance = %f m.\n", sonar_data); |
hervel90 | 7:cb446dbb54d9 | 61 | } |
hervel90 | 7:cb446dbb54d9 | 62 | Thread::wait(250); |
hervel90 | 7:cb446dbb54d9 | 63 | } |
hervel90 | 7:cb446dbb54d9 | 64 | } |
hervel90 | 7:cb446dbb54d9 | 65 | |
hervel90 | 7:cb446dbb54d9 | 66 | |
hervel90 | 7:cb446dbb54d9 | 67 | int main() { |
hervel90 | 7:cb446dbb54d9 | 68 | lcd.cls(); |
hervel90 | 7:cb446dbb54d9 | 69 | |
hervel90 | 7:cb446dbb54d9 | 70 | Thread thread1(led_display); |
hervel90 | 7:cb446dbb54d9 | 71 | Thread thread2(lcd_display); |
hervel90 | 7:cb446dbb54d9 | 72 | Thread thread3(serial_display); |
hervel90 | 7:cb446dbb54d9 | 73 | |
hervel90 | 7:cb446dbb54d9 | 74 | while (1) { |
hervel90 | 7:cb446dbb54d9 | 75 | sonar_data = rf.read_m(); |
hervel90 | 7:cb446dbb54d9 | 76 | Thread::wait(250); |
hervel90 | 7:cb446dbb54d9 | 77 | } |
hervel90 | 7:cb446dbb54d9 | 78 | } |