Zadatak za ispit iz kolegija Mikroupravljači
Dependencies: TextLCD
mikrovalna.cpp
- Committer:
- dsambolek
- Date:
- 2019-03-22
- Revision:
- 0:a584b83122e6
File content as of revision 0:a584b83122e6:
#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 }