PURS_ZI_010

Dependents:   PURS_ZI_010

Temperatura.cpp

Committer:
tbjazic
Date:
2017-02-02
Revision:
0:c1c396a29e74

File content as of revision 0:c1c396a29e74:

#include "mbed.h"
#include "Temperatura.h"
#include "C12832.h"

Temperatura::Temperatura(PinName tipkaloPin, PinName senzorPin, PinName zvucnikPin) : tipkalo(tipkaloPin), senzor(senzorPin), zvucnik(zvucnikPin), lcd(p5, p7, p6, p8, p11) {
    debounce.start();
    lcd.cls();
    lcd.locate(0,3);
    lcd.printf("Mjerenje se moze pokrenuti...");
    mjerenjePokrenuto = ukljucenZvucnik = false;
    zvucnik.period(1.0f / 500);
    tipkalo.rise(this, &Temperatura::startStopMjerenja);
}

void Temperatura::startStopMjerenja() {
    if(debounce.read_ms() > 20) {
        if(!mjerenjePokrenuto) {
            mjerenjePokrenuto = true;
            ticker.attach(this, &Temperatura::mjeriIPrikazi, 0.5);
        } else {
            mjerenjePokrenuto = false;
            ticker.detach();
            lcd.cls();
            lcd.locate(0,3);
            lcd.printf("Mjerenje se moze pokrenuti...");
        }
        debounce.reset();
    }
}


void Temperatura::mjeriIPrikazi() {
    float temperatura = -25 + (75 - (-25)) / ((3-0.5f)/3.3f) * (senzor.read() - (0.5f/3.3f));
    lcd.cls();
    lcd.locate(0,3);
    if (temperatura >= -25 && temperatura <= 75) {
        lcd.printf("Temperatura: %5.1f °C", temperatura);
    } else {
        lcd.printf("Temperatura izvan mjernog opsega!");
        if (!ukljucenZvucnik) {
            zvucnik = 0.5;
            ukljucenZvucnik = true;
            timeout.attach(this, &Temperatura::iskljuciZvucnik, 0.5);
        }
    }
}
void Temperatura::iskljuciZvucnik() {
    zvucnik = 0;
    ukljucenZvucnik = false;
    /* tko se jos zeli igrati s trajanjem pauze izmedju zvucnih signala
     * moze dodati jos jedan timeout objekt vezan na bool varijablu
     * ukljucenZvucnik 
     */
}