Zadatak za ispit iz kolegija Mikroupravljači
Dependencies: TextLCD
mikrovalna.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 #include "mikrovalna.h" 00004 00005 //inicijalizacija klase 00006 Mikrovalna::Mikrovalna(PinName startstopPin, PinName sekundePin, PinName snagaPin): startstop(startstopPin), sekunde(sekundePin), snaga(snagaPin), lcd(p19, p20, p21, p22, p23, p24){ 00007 startstop.rise(this, &Mikrovalna::pali_gasi); //poziv funkcije za paljenje/gašenje mikrovalne pećnice 00008 sekunde.rise(this, &Mikrovalna::namjesti_vrijeme); //poziv funkcije povećvanje vremena aktivnosti mikrovalne 00009 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 00010 00011 debounce_startstop.start(); //start timera za debounce 00012 debounce_sekunde.start(); //start timera za debounce 00013 debounce_snaga.start(); //start timera za debounce 00014 00015 timer.start(); //start timera brojača 00016 00017 uklj_isklj=0; //inicijalizacija pomoćnih varijabli 00018 vrijeme=0; //inicijalizacija pomoćnih varijabli 00019 snaga_mod=0; //inicijalizacija pomoćnih varijabli 00020 i=0; //inicijalizacija pomoćnih varijabli 00021 00022 lcd.cls(); //čišćenje displeja 00023 lcd.locate(0,3); //pozicioniranje na displeju 00024 lcd.printf("\nNamjesti snagu/vrijeme i pokreni"); //ispis na displeju 00025 } 00026 00027 00028 void Mikrovalna::namjesti_snagu(){ //funkcija za računanje snage na pritisak tipkala 00029 if(debounce_snaga.read_ms()>200){ 00030 if(snaga_mod<4){ 00031 snaga_mod=snaga_mod+1; 00032 }else{ 00033 snaga_mod=0; 00034 } 00035 debounce_snaga.reset(); //reset debounce timera 00036 lcd.cls(); //čišćenje displeja 00037 lcd.locate(0,3); //pozicioniranje na displeju 00038 lcd.printf("\nSnaga: %d posto",snaga_mod*25); //ispis na displeju 00039 } 00040 } 00041 00042 00043 void Mikrovalna::namjesti_vrijeme(){ //funkcija za računanje vremena na pritisak tipkala 00044 if(debounce_sekunde.read_ms()>200){ 00045 if(vrijeme<120){ 00046 vrijeme=vrijeme+10; 00047 }else{ 00048 vrijeme=0; 00049 } 00050 debounce_sekunde.reset(); //reset debounce timera 00051 lcd.cls(); //čišćenje displeja 00052 lcd.locate(0,3); //pozicioniranje na displeju 00053 lcd.printf("\nVrijeme: %d",vrijeme); //ispis na displeju 00054 } 00055 } 00056 00057 00058 void Mikrovalna::pali_gasi(){ //funkcija za paljenje/gašenje mikrovalne pećnice na pritisak tipkala 00059 if(debounce_startstop.read_ms() > 200){ 00060 if(uklj_isklj==0){ 00061 uklj_isklj=1; 00062 timer.reset(); //reset timera brojača 00063 }else if(uklj_isklj==1){ 00064 uklj_isklj=0; 00065 } 00066 debounce_startstop.reset(); //reset debounce timera 00067 } 00068 if(uklj_isklj==1 && vrijeme > 0 && snaga_mod > 0){ //ako mikrovalna radi i ima vrijeme i snagu 00069 iskljuci.attach(this, &Mikrovalna::iskljucivanje, vrijeme); //inicijlizacija timeout timera tj. nakon vremena t pozovi funkciju iskljucivanje 00070 lcd.cls(); //čišćenje displeja 00071 lcd.locate(0,3); //pozicioniranje na displeju 00072 lcd.printf("\nUkljucena na %d sekundi", vrijeme); //ispis na displeju 00073 00074 }else if(uklj_isklj==0 && vrijeme > 0 && snaga_mod > 0){ //ako mikrovalna je mikrovalna ugašena i ima vrijeme i snagu 00075 iskljuci.detach(); //gašešenje timout timera 00076 vrijeme=vrijeme - timer.read(); //oduzimanje od ukupno vremena vrijeme koje je odbrojio brojač 00077 lcd.cls(); //čišćenje displeja 00078 lcd.locate(0,3); //pozicioniranje na displeju 00079 lcd.printf("\nIskljucena"); //ispis na displeju 00080 timer.reset(); //reset timera brojača 00081 00082 }else{ //u bilo kojem drugo slučaju 00083 iskljuci.attach(this, &Mikrovalna::iskljucivanje, 0); //inicijlizacija timeout timera tj. odmah poziva funkciju iskljucivanje 00084 } 00085 00086 } 00087 00088 00089 void Mikrovalna::iskljucivanje(){ //funkcija za resetiranje pomoćnih varijabli i vraćanje na početak odabira 00090 snaga_mod=0; //resetiranje vrijednosti pomoćnih varijabi 00091 vrijeme=0; //resetiranje vrijednosti pomoćnih varijabi 00092 uklj_isklj=0; //resetiranje vrijednosti pomoćnih varijabi 00093 lcd.cls(); //čišćenje displeja 00094 lcd.locate(0,3); //pozicioniranje na displeju 00095 lcd.printf("\nNamjesti snagu/vrijeme i pokreni"); //ispis na displeju 00096 00097 }
Generated on Tue Jul 12 2022 23:01:50 by
1.7.2