Michele Lupo
/
PM2_Example_PES_board
Workshop 2
Diff: main.cpp
- Revision:
- 0:f44522e28559
- Child:
- 1:93d997d6b232
diff -r 000000000000 -r f44522e28559 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Mar 30 12:50:43 2021 +0000 @@ -0,0 +1,65 @@ +#include "mbed.h" +#include "platform/mbed_thread.h" + +using namespace std::chrono; + +InterruptIn user_button(USER_BUTTON); +DigitalOut led(LED1); + +bool executeMainTask = false; +Timer user_button_timer, loop_timer; +int Ts_ms = 50; + +void button_fall(); +void button_rise(); + +/* input your stuff here */ +AnalogIn analogIn(PA_0); +float dist = 0.0f; + +int main() +{ + user_button.fall(&button_fall); + user_button.rise(&button_rise); + loop_timer.start(); + + while (true) { + + loop_timer.reset(); + + /* ------------- start hacking ------------- -------------*/ + + if(executeMainTask) { + + dist = analogIn.read()*3.3f; + + /* do only output what's really necessary, outputting "Measured value in mV: "" within the loop is no good solution */ + printf("Measured value in mV: %d\r\n", (static_cast<int>(dist * 1e3))); + + /* visual feedback that the main task is executed */ + led = !led; + + } else { + led = 0; + } + + /* ------------- stop hacking ------------- -------------*/ + + int T_loop_ms = duration_cast<milliseconds>(loop_timer.elapsed_time()).count(); + int dT_loop_ms = Ts_ms - T_loop_ms; + thread_sleep_for(dT_loop_ms); + } +} + +void button_fall() +{ + user_button_timer.reset(); + user_button_timer.start(); +} + +void button_rise() +{ + int t_button = duration_cast<milliseconds>(user_button_timer.elapsed_time()).count(); + user_button_timer.stop(); + if(t_button > 200) executeMainTask = !executeMainTask; +} \ No newline at end of file