Zadatak za ispit iz kolegija Mikroupravljači
Dependencies: TextLCD
Revision 0:a584b83122e6, committed 2019-03-22
- Comitter:
- dsambolek
- Date:
- Fri Mar 22 17:01:34 2019 +0000
- Commit message:
- fgff
Changed in this revision
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