zadatak iz koegija Mikroupravljači
Dependencies: mbed Mikrovalna
main.cpp
00001 #include "mbed.h" 00002 #include "mikrovalna.h" 00003 #include "TextLCD.h" 00004 00005 00006 PwmOut PWM1(p25); // zvučnik 00007 InterruptIn start(p12), vrijeme_time(p11), power(p10); //interrupti preko tipkala 00008 DigitalOut led_1(LED1), led_2(LED2), led_3(LED3), led_4(LED4); //led-ice na mbed-u 00009 DigitalOut bled_1(p5), bled_2(p6), bled_3(p7), bled_4(p8); //plave ledice 00010 Timer debounce_start, debounce_vrijeme_time, debounce_power, brojac; //timeri za debounce tipkala i brojač za proteklo vrijeme 00011 00012 00013 Mikrovalna Mikrovalna(p14, p15, p16); //poziv klase 00014 00015 00016 int i=0; //globalna varijalbla 00017 int j=0; //globalna varijalbla 00018 int t=0; //globalna varijalbla 00019 int t1=0; //globalna varijalbla 00020 00021 00022 void fsnaga(){ //funkcija za aktivaciju vanjskih lampica na pritisak tipkala 00023 if(debounce_power.read_ms()>200){ 00024 if(i<4){ 00025 i++; 00026 }else{ 00027 i=0; 00028 } 00029 debounce_power.reset(); // reset debounce timera 00030 00031 } 00032 if (i==1){ // paljenje vanjskih lampica 00033 bled_1=1; 00034 bled_2=0; 00035 bled_3=0; 00036 bled_4=0; 00037 00038 } else if(i==2){ // paljenje vanjskih lampica 00039 bled_1=1; 00040 bled_2=1; 00041 bled_3=0; 00042 bled_4=0; 00043 00044 } else if(i==3){ // paljenje vanjskih lampica 00045 bled_1=1; 00046 bled_2=1; 00047 bled_3=1; 00048 bled_4=0; 00049 00050 } else if(i==4){ // paljenje vanjskih lampica 00051 bled_1=1; 00052 bled_2=1; 00053 bled_3=1; 00054 bled_4=1; 00055 00056 } else if(i==0){ // paljenje vanjskih lampica 00057 bled_1=0; 00058 bled_2=0; 00059 bled_3=0; 00060 bled_4=0; 00061 } 00062 } 00063 00064 00065 void fvrijeme(){ //funkcija za dodavanje vremenskog intervala od 10 sekundi u ukupnu sumu - pomoću tipkala 00066 if(debounce_vrijeme_time.read_ms()>200){ 00067 if(t<120){ 00068 t=t+10; 00069 }else{ 00070 t=0; 00071 } 00072 debounce_vrijeme_time.reset(); // reset debounce timera 00073 } 00074 } 00075 00076 00077 void fstart(){ //funkcija za pokretanje/gašenje mikrovalne pećnice 00078 if(debounce_start.read_ms()>200){ 00079 if(j==0 && t>0 && i>0){ 00080 j=1; 00081 brojac.reset(); 00082 }else if(j==1){ 00083 j=0; 00084 } 00085 debounce_vrijeme_time.reset(); // reset debounce timera 00086 } 00087 if(j==0 && t>0 && i>0){ // kada se izvršava program i prekine se (pauzira) izvršavanje onda se zapamti vrijdnost brojača i on se resetira 00088 t=t - brojac.read(); // vrijednost se oduzima od ukupnog vremena t 00089 brojac.reset(); // reset timera brojača 00090 } 00091 00092 00093 } 00094 00095 00096 int main() { // glavna funkcija program 00097 00098 power.rise(&fsnaga); //poziv funkcije za paljenje vaskih lampica pritiskom na tipku, palu se više lampica ako je potrebna veća snaga 00099 vrijeme_time.rise(&fvrijeme); //poziv funkcije povećvanje vremena aktivnosti mikrovalne 00100 start.rise(&fstart); //poziv funkcije za paljenje/gašenje mikrovalne pećnice 00101 00102 debounce_power.start(); //start timera za debounce 00103 debounce_vrijeme_time.start(); //start timera za debounce 00104 debounce_start.start(); //start timera za debounce 00105 00106 t1=0; //resetiranje varijable 00107 i=0; //resetiranje varijable 00108 j=0; //resetiranje varijable 00109 t=0; //resetiranje varijable 00110 00111 while(1){ //beskonačna petlja 00112 if(j==0 || i==0 || t==0){ //'idle' tj. mikrovalna pečnica ne radi i spremna je prihvatiti nove vrijednosti 00113 t1=t; //korištenje pomoćne varijable 00114 PWM1.period(0.0); //reset zvučnika 00115 PWM1=0.5; 00116 wait(0); 00117 if(i==0){ //reset lampica za indikaciju željene snage 00118 bled_1=0; 00119 bled_2=0; 00120 bled_3=0; 00121 bled_4=0; 00122 } 00123 led_1=!led_1; //lampice na mbed-u trepere u trakanju od 1 sekunde 00124 led_2=!led_2; 00125 led_3=!led_3; 00126 led_4=!led_4; 00127 wait(1); 00128 00129 }else if (j==1 && i>0 && t>0){ //mikrovalna je upaljena i izabrani su vrijeme i snaga 00130 led_1=1; //lampice na mbed-u konstantno svijetle 00131 led_2=1; 00132 led_3=1; 00133 led_4=1; 00134 00135 PWM1.period(0.001); //zvučnik je aktiviran 00136 PWM1=0.5; 00137 wait(0.5); 00138 brojac.start(); //akrivacija timera brojača 00139 if(brojac.read()>t1){ //uvijet za završetak tj. za resetiranje 00140 t=0; //resetiranje vrijednosti globalnih varijabi 00141 j=0; //resetiranje vrijednosti globalnih varijabi 00142 i=0; //resetiranje vrijednosti globalnih varijabi 00143 t1=0; //resetiranje vrijednosti globalnih varijabi 00144 brojac.reset(); //resetiranje vrijednosti timera brojač 00145 } 00146 } 00147 } 00148 }
Generated on Sun Jul 24 2022 14:37:20 by 1.7.2