APS de Sistemas Operacionais / Controle 2

Dependencies:   mbed-rtos mbed HC_SR04_Ultrasonic_Library

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003  #include "ultrasonic.h"
00004 
00005 DigitalOut led1(LED1);
00006 InterruptIn sw2(SW2);
00007 uint32_t button_pressed;
00008 Thread *thread2;
00009 ultrasonic us = ultrasonic(PTC2, PTC3, 100, 1000);
00010 
00011 void sw2_press(void)
00012 {
00013     thread2->signal_set(0x1);
00014     
00015 }
00016 
00017 void led_thread(void const *argument)
00018 {
00019     while (true) {
00020         led1 = !led1;
00021         Thread::wait(1000);
00022     }
00023 }
00024 
00025 void button_thread(void const *argument)
00026 {
00027     while (true) {
00028         Thread::signal_wait(0x1);
00029         float x = us.getCurrentDistance();
00030         printf("distance = %f\n", x);
00031         button_pressed++;
00032     }
00033 }
00034 
00035 int main()
00036 {
00037     Thread thread(led_thread);
00038     thread2 = new Thread(button_thread);
00039     //teste
00040 
00041     button_pressed = 0;
00042     sw2.fall(&sw2_press);
00043     while (true) {
00044         Thread::wait(5000);
00045         printf("SW2 was pressed (last 5 seconds): %d \n", button_pressed);
00046         fflush(stdout);
00047         button_pressed = 0;
00048     }
00049 }