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

tsk_dist.cpp

Committer:
dzoni
Date:
2015-12-14
Revision:
13:f62b10a6e1c5
Parent:
9:645f0e517017
Child:
15:a627638edd9c

File content as of revision 13:f62b10a6e1c5:

#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(1000);
    }
}