PURS_ZI_010

Dependents:   PURS_ZI_010

Files at this revision

API Documentation at this revision

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