PURS_ZI_010
Revision 0:c1c396a29e74, committed 2017-02-02
- Comitter:
- tbjazic
- Date:
- Thu Feb 02 14:11:44 2017 +0000
- Commit message:
- Initial.
Changed in this revision
Temperatura.cpp | Show annotated file Show diff for this revision Revisions of this file |
Temperatura.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r c1c396a29e74 Temperatura.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Temperatura.cpp Thu Feb 02 14:11:44 2017 +0000 @@ -0,0 +1,54 @@ +#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 + */ +} \ No newline at end of file
diff -r 000000000000 -r c1c396a29e74 Temperatura.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Temperatura.h Thu Feb 02 14:11:44 2017 +0000 @@ -0,0 +1,30 @@ +#ifndef TEMPERATURA_H +#define TEMPERATURA_H + +#include "mbed.h" +#include "C12832.h" + +/** Rješenje ispita PURS_ZI_010 */ +class Temperatura { +public: + /** Konstruktor prima pinove tipkala, senzora i zvučnika. + * @param tipkaloPin Pin tipkala. + * @param senzorPin Pin analognog temperaturnog senzora. + * @param zvucnikPin Pin na koji je spojen zvučnik. + */ + Temperatura(PinName tipkaloPin, PinName senzorPin, PinName zvucnikPin); +private: + C12832 lcd; + InterruptIn tipkalo; + AnalogIn senzor; + PwmOut zvucnik; + Timer debounce; + bool mjerenjePokrenuto, ukljucenZvucnik; + Ticker ticker; + Timeout timeout; + void startStopMjerenja(); + void mjeriIPrikazi(); + void iskljuciZvucnik(); +}; + +#endif \ No newline at end of file