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_display.cpp

Committer:
Jan Tetour
Date:
2015-12-18
Revision:
18:be0130c42925
Parent:
17:94c385ff2641

File content as of revision 18:be0130c42925:

/*
 * TSK_DISPLAY.CPP
 */
#include "mbed.h"
#include "rtos.h"

#include "TextLCD.h"

#include "tsk_main.h"
#include "tsk_display.h"
#include "tsk_temp.h"
#include "tsk_inttemp.h"
#include "tsk_dist.h"

static TextLCD *lcd;

uint32_t initDisplay(void const *args) {

    lcd = new TextLCD(PA_8, PA_7, PA_9, PA_1, PB_5, PA_10, TextLCD::LCD16x2);

    wait_ms(250);
    lcd->cls();
       
    return 1;
}

uint32_t disposeDisplay(void const *args) {

    delete lcd;
    lcd = NULL;
       
    return 1;
}


void disp_thread(void const *args) {
    float dist;
    float temp;
    float intTemp;
    uint32_t dist_raw;
    uint32_t temp_raw;
    
    while (true) {
        mutexDist.lock();
        dist = dist_data.distance;
        dist_raw = dist_data.timerTicks;
        mutexDist.unlock();

        mutexTemp.lock();
        temp = temp_data.temperature;
        temp_raw = temp_data.temp_raw;
        mutexTemp.unlock();

        mutexIntTemp.lock();
        intTemp = int_temp_data.temperature;
        mutexIntTemp.unlock();

        uiCnt += 2;

        lcd->cls();
//        lcd->printf("%4.2fmm (%4u)", dist, dist_raw);
        lcd->printf("%4.2fmm (%4u)", dist, uiCnt);
        lcd->locate(0, 1);    
//        lcd->printf("%3.2f%cC (%3u)", temp, 0xdf, temp_raw);
        lcd->printf("%3.1f%cC (%2.1f)", temp, 0xdf, intTemp);

        Thread::wait(2000);
    }
}