APS de Sistemas Operacionais / Controle 2
Dependencies: mbed-rtos mbed HC_SR04_Ultrasonic_Library
main.cpp@1:c07ed2436cd8, 2017-10-30 (annotated)
- Committer:
- feupos
- Date:
- Mon Oct 30 23:34:06 2017 +0000
- Revision:
- 1:c07ed2436cd8
- Parent:
- 0:8d53c4c11953
teste
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
feupos | 0:8d53c4c11953 | 1 | #include "mbed.h" |
feupos | 0:8d53c4c11953 | 2 | #include "rtos.h" |
feupos | 1:c07ed2436cd8 | 3 | #include "ultrasonic.h" |
feupos | 0:8d53c4c11953 | 4 | |
feupos | 0:8d53c4c11953 | 5 | DigitalOut led1(LED1); |
feupos | 0:8d53c4c11953 | 6 | InterruptIn sw2(SW2); |
feupos | 0:8d53c4c11953 | 7 | uint32_t button_pressed; |
feupos | 0:8d53c4c11953 | 8 | Thread *thread2; |
feupos | 1:c07ed2436cd8 | 9 | ultrasonic us = ultrasonic(PTC2, PTC3, 100, 1000); |
feupos | 0:8d53c4c11953 | 10 | |
feupos | 0:8d53c4c11953 | 11 | void sw2_press(void) |
feupos | 0:8d53c4c11953 | 12 | { |
feupos | 0:8d53c4c11953 | 13 | thread2->signal_set(0x1); |
feupos | 1:c07ed2436cd8 | 14 | |
feupos | 0:8d53c4c11953 | 15 | } |
feupos | 0:8d53c4c11953 | 16 | |
feupos | 0:8d53c4c11953 | 17 | void led_thread(void const *argument) |
feupos | 0:8d53c4c11953 | 18 | { |
feupos | 0:8d53c4c11953 | 19 | while (true) { |
feupos | 0:8d53c4c11953 | 20 | led1 = !led1; |
feupos | 0:8d53c4c11953 | 21 | Thread::wait(1000); |
feupos | 0:8d53c4c11953 | 22 | } |
feupos | 0:8d53c4c11953 | 23 | } |
feupos | 0:8d53c4c11953 | 24 | |
feupos | 0:8d53c4c11953 | 25 | void button_thread(void const *argument) |
feupos | 0:8d53c4c11953 | 26 | { |
feupos | 0:8d53c4c11953 | 27 | while (true) { |
feupos | 0:8d53c4c11953 | 28 | Thread::signal_wait(0x1); |
feupos | 1:c07ed2436cd8 | 29 | float x = us.getCurrentDistance(); |
feupos | 1:c07ed2436cd8 | 30 | printf("distance = %f\n", x); |
feupos | 0:8d53c4c11953 | 31 | button_pressed++; |
feupos | 0:8d53c4c11953 | 32 | } |
feupos | 0:8d53c4c11953 | 33 | } |
feupos | 0:8d53c4c11953 | 34 | |
feupos | 0:8d53c4c11953 | 35 | int main() |
feupos | 0:8d53c4c11953 | 36 | { |
feupos | 0:8d53c4c11953 | 37 | Thread thread(led_thread); |
feupos | 0:8d53c4c11953 | 38 | thread2 = new Thread(button_thread); |
feupos | 1:c07ed2436cd8 | 39 | //teste |
feupos | 0:8d53c4c11953 | 40 | |
feupos | 0:8d53c4c11953 | 41 | button_pressed = 0; |
feupos | 0:8d53c4c11953 | 42 | sw2.fall(&sw2_press); |
feupos | 0:8d53c4c11953 | 43 | while (true) { |
feupos | 0:8d53c4c11953 | 44 | Thread::wait(5000); |
feupos | 0:8d53c4c11953 | 45 | printf("SW2 was pressed (last 5 seconds): %d \n", button_pressed); |
feupos | 0:8d53c4c11953 | 46 | fflush(stdout); |
feupos | 0:8d53c4c11953 | 47 | button_pressed = 0; |
feupos | 0:8d53c4c11953 | 48 | } |
feupos | 0:8d53c4c11953 | 49 | } |