Zadatak za ispit iz kolegija Mikroupravljači

Dependencies:   TextLCD

Files at this revision

API Documentation at this revision

Comitter:
dsambolek
Date:
Fri Mar 22 17:01:34 2019 +0000
Commit message:
fgff

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
mikrovalna.cpp Show annotated file Show diff for this revision Revisions of this file
mikrovalna.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r a584b83122e6 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri Mar 22 17:01:34 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
diff -r 000000000000 -r a584b83122e6 mikrovalna.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mikrovalna.cpp	Fri Mar 22 17:01:34 2019 +0000
@@ -0,0 +1,97 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "mikrovalna.h"
+
+                                                                                //inicijalizacija klase
+Mikrovalna::Mikrovalna(PinName startstopPin, PinName sekundePin, PinName snagaPin): startstop(startstopPin), sekunde(sekundePin), snaga(snagaPin), lcd(p19, p20, p21, p22, p23, p24){ 
+startstop.rise(this, &Mikrovalna::pali_gasi);                                   //poziv funkcije za paljenje/gašenje mikrovalne pećnice
+sekunde.rise(this, &Mikrovalna::namjesti_vrijeme);                              //poziv funkcije povećvanje vremena aktivnosti mikrovalne
+snaga.rise(this, &Mikrovalna::namjesti_snagu);                                  //poziv funkcije za paljenje vaskih lampica pritiskom na tipku, palu se više lampica ako je potrebna veća snaga
+
+debounce_startstop.start();                                                     //start timera za debounce
+debounce_sekunde.start();                                                       //start timera za debounce
+debounce_snaga.start();                                                         //start timera za debounce
+
+timer.start();                                                                  //start timera brojača
+
+uklj_isklj=0;                                                                   //inicijalizacija pomoćnih varijabli
+vrijeme=0;                                                                      //inicijalizacija pomoćnih varijabli
+snaga_mod=0;                                                                    //inicijalizacija pomoćnih varijabli
+i=0;                                                                            //inicijalizacija pomoćnih varijabli
+
+lcd.cls();                                                                      //čišćenje displeja
+lcd.locate(0,3);                                                                //pozicioniranje na displeju
+lcd.printf("\nNamjesti snagu/vrijeme i pokreni");                               //ispis na displeju
+}
+
+
+void Mikrovalna::namjesti_snagu(){                                              //funkcija za računanje snage na pritisak tipkala
+    if(debounce_snaga.read_ms()>200){
+        if(snaga_mod<4){
+        snaga_mod=snaga_mod+1;
+        }else{
+            snaga_mod=0;
+        }
+        debounce_snaga.reset();                                                 //reset debounce timera
+        lcd.cls();                                                              //čišćenje displeja
+        lcd.locate(0,3);                                                        //pozicioniranje na displeju
+        lcd.printf("\nSnaga: %d posto",snaga_mod*25);                           //ispis na displeju
+    }
+}
+
+
+void Mikrovalna::namjesti_vrijeme(){                                            //funkcija za računanje vremena na pritisak tipkala
+    if(debounce_sekunde.read_ms()>200){
+        if(vrijeme<120){
+        vrijeme=vrijeme+10;
+        }else{
+            vrijeme=0;
+        }
+        debounce_sekunde.reset();                                               //reset debounce timera
+        lcd.cls();                                                              //čišćenje displeja
+        lcd.locate(0,3);                                                        //pozicioniranje na displeju
+        lcd.printf("\nVrijeme: %d",vrijeme);                                    //ispis na displeju
+    }
+}
+
+
+void Mikrovalna::pali_gasi(){                                                   //funkcija za paljenje/gašenje mikrovalne pećnice na pritisak tipkala
+        if(debounce_startstop.read_ms() > 200){
+            if(uklj_isklj==0){
+                uklj_isklj=1;
+                timer.reset();                                                  //reset timera brojača
+            }else if(uklj_isklj==1){
+                uklj_isklj=0; 
+            }
+            debounce_startstop.reset();                                         //reset debounce timera
+        }
+            if(uklj_isklj==1 && vrijeme > 0 && snaga_mod > 0){                  //ako mikrovalna radi i ima vrijeme i snagu
+                iskljuci.attach(this, &Mikrovalna::iskljucivanje, vrijeme);     //inicijlizacija timeout timera tj. nakon vremena t pozovi funkciju iskljucivanje
+                lcd.cls();                                                      //čišćenje displeja
+                lcd.locate(0,3);                                                //pozicioniranje na displeju
+                lcd.printf("\nUkljucena na %d sekundi", vrijeme);               //ispis na displeju
+                
+            }else if(uklj_isklj==0 && vrijeme > 0 && snaga_mod > 0){            //ako mikrovalna je mikrovalna ugašena i ima vrijeme i snagu
+                iskljuci.detach();                                              //gašešenje timout timera
+                vrijeme=vrijeme - timer.read();                                 //oduzimanje od ukupno vremena vrijeme koje je odbrojio brojač
+                lcd.cls();                                                      //čišćenje displeja
+                lcd.locate(0,3);                                                //pozicioniranje na displeju
+                lcd.printf("\nIskljucena");                                     //ispis na displeju
+                timer.reset();                                                  //reset timera brojača
+                
+            }else{                                                              //u bilo kojem drugo slučaju
+                iskljuci.attach(this, &Mikrovalna::iskljucivanje, 0);           //inicijlizacija timeout timera tj. odmah poziva funkciju iskljucivanje
+            }
+                         
+}
+
+
+void Mikrovalna::iskljucivanje(){                                               //funkcija za resetiranje pomoćnih varijabli i vraćanje na početak odabira
+                    snaga_mod=0;                                                //resetiranje vrijednosti pomoćnih varijabi
+                    vrijeme=0;                                                  //resetiranje vrijednosti pomoćnih varijabi
+                    uklj_isklj=0;                                               //resetiranje vrijednosti pomoćnih varijabi
+                    lcd.cls();                                                  //čišćenje displeja
+                    lcd.locate(0,3);                                            //pozicioniranje na displeju
+                    lcd.printf("\nNamjesti snagu/vrijeme i pokreni");           //ispis na displeju
+                
+}             
\ No newline at end of file
diff -r 000000000000 -r a584b83122e6 mikrovalna.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mikrovalna.h	Fri Mar 22 17:01:34 2019 +0000
@@ -0,0 +1,22 @@
+#ifndef MIKROVALNA_H
+#define MIKROVALNA_H
+
+#include "mbed.h"
+#include "TextLCD.h"
+
+class Mikrovalna {                                                          //klasa 
+    public:
+    Mikrovalna(PinName startstopPin, PinName sekundePin, PinName snagaPin); //ime klase
+    private:                                                                //u klasi se nalazi
+    TextLCD lcd;                                                            //dislpej
+    InterruptIn startstop, sekunde, snaga;                                  //interrupti preko tipkala
+    Timer debounce_startstop,debounce_sekunde, debounce_snaga, timer;       //timeri za debounce tipkala i brojač za proteklo vrijeme
+    Timeout iskljuci;                                                       //obrnuti timer za odbrojavanje unaprid poznato vrijeme
+    int vrijeme, snaga_mod, uklj_isklj, i;                                  //pomoćne varijable tipa integer  
+    
+    void iskljucivanje();                                                   //prototip funkcije za isključivanje mikrovalne pečnice
+    void pali_gasi();                                                       //prototip funkcije za paljenje/gašenje mikrovane pečnice
+    void namjesti_vrijeme();                                                //prototip funkcije za namještanje vremena
+    void namjesti_snagu();                                                  //prototip funkcije za namještanje snage
+};
+#endif
\ No newline at end of file