APS de Sistemas Operacionais / Controle 2

Dependencies:   mbed-rtos mbed HC_SR04_Ultrasonic_Library

Committer:
feupos
Date:
Mon Oct 30 23:34:06 2017 +0000
Revision:
1:c07ed2436cd8
Parent:
0:8d53c4c11953
teste

Who changed what in which revision?

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