![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Simple test program to get familiar with functionality of MBED RTOS on ST Nucleo-F411RE. Tasks for LED blinking, user button, temperature measurement with DS1620, temperature measurement with internal temperature sensor of ST32F411RE, ultrasonic distance measurement and displaying result on 16x2 TextLCD.
Dependencies: DS1620_improved TextLCD_improved mbed-rtos mbed
Diff: tsk_dist.cpp
- Revision:
- 9:645f0e517017
- Child:
- 13:f62b10a6e1c5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsk_dist.cpp Mon Dec 14 11:32:15 2015 +0000 @@ -0,0 +1,53 @@ +#include "mbed.h" +#include "rtos.h" + +#include "tsk_dist.h" + + +struct dist_data_struct dist_data = { 10000, 10.0f }; + + +static DigitalOut trigDist(PB_9); +static DigitalIn echoDist(PA_6); + +static Timer timer; + + +void dist_thread(void const *args) { + + while (true) { + // Dej puls na trig + trigDist = 1; + Thread::wait(1); + trigDist = 0; + + if (echoDist != 0) { + dist_data.timerTicks = 0; + dist_data.distance = 0.0f; + } else { + timer.stop(); + timer.reset(); + + // Cekej na hranu na Echo + while (echoDist != 1) + ; + + // Zacni merit cas + timer.start(); + + // Cekej na hranu na Echo + while (echoDist != 0) + ; + + // Zastav mereni + timer.stop(); + + dist_data.timerTicks = timer.read_us(); + + // 340 ms-1 + dist_data.distance = (timer.read()/2.0f - 0.0f)*340.0f*1000.0f; + } + + Thread::wait(500); + } +}