zadatak iz koegija Mikroupravljači

Dependencies:   mbed Mikrovalna

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }