Projektni zadatak iz Mikroupravljača - Mladenko Jurković

Dependencies:   mbed SeeedShieldBot BluetoothSerial

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include"mbed.h"
00002 DigitalOut LEDcrvena(D7); //LED svjetlo za vozila
00003 DigitalOut LEDzuta(D6);     //LED svjetlo za vozila
00004 DigitalOut LEDzelena(D5);   //LED svjetlo za vozila
00005 
00006 DigitalOut LEDzelenapjesaci(D2);    //LED svjetlo za pješake
00007 DigitalOut LEDcrvenapjesaci(D3);    //LED svjetlo za pješake
00008 
00009 PwmOut z(D9);               //PWM izlaz za zvučnik
00010 InterruptIn tipkalo(D4);    //Tipkalo za pješake
00011 
00012 Ticker zv;              //Ticker za pozivanje zvuka
00013 Timer debounce;         //Timer za debounce
00014 void pjesaci(void);     //definiranje funkcije pjesaci
00015 void zvuk(void);        //definiranje funkcije zvuk
00016 
00017 int main()
00018 {
00019     debounce.start();
00020     tipkalo.rise(&pjesaci);  //pozivanje funkcije "pjesaci" koja odmah pali zeleno svjetlo za pješake, ukoliko je uključeno zeleno za vozila
00021 
00022     while(1) {
00023         zv.attach(&zvuk, 0.5);
00024 
00025         LEDcrvena=1;
00026         LEDcrvenapjesaci=1;
00027         LEDzuta=0;
00028         LEDzelena=0;
00029         LEDzelenapjesaci=0;
00030         wait(1);              //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake
00031 
00032         LEDcrvena=1;
00033         LEDcrvenapjesaci=0;
00034         LEDzuta=0;
00035         LEDzelena=0;
00036         LEDzelenapjesaci=1;
00037         wait(12);       //zeleno za pješake
00038 
00039         LEDcrvena=1;
00040         LEDcrvenapjesaci=1;
00041         LEDzuta=0;
00042         LEDzelena=0;
00043         LEDzelenapjesaci=0;
00044         wait(1);        //pali se crvena za pješake, priprema za žuto odnosno zeleno svjetlo vozilima
00045 
00046         LEDcrvena=1;
00047         LEDcrvenapjesaci=1;
00048         LEDzuta=1;
00049         LEDzelena=0;
00050         LEDzelenapjesaci=0;
00051         wait(3);        //pali se žuto svjetlo - priprema za kretanje vozila
00052 
00053         LEDcrvena=0;
00054         LEDcrvenapjesaci=1;
00055         LEDzuta=0;
00056         LEDzelena=1;
00057         LEDzelenapjesaci=0;
00058         wait(15);       //zeleno svjetlo vozilima
00059 
00060         LEDcrvena=0;
00061         LEDcrvenapjesaci=1;
00062         LEDzuta=1;
00063         LEDzelena=0;
00064         LEDzelenapjesaci=0;
00065         wait(4);        //pali se žuto svjetlo, upozorenje da slijedi crveno svjetlo
00066     }
00067 }
00068 void pjesaci()
00069 {
00070     if(debounce.read_ms()>200) {
00071         if(LEDzelena==1) {      //ako je zeleno svjetlo za vozila uključeno
00072 
00073             z.period(0.5);
00074             z=0.5;
00075             wait(2);        //nakon pritiska tipke, zeleno svjetlo svjetli još 2 sekunde
00076 
00077             LEDcrvena=0;
00078             LEDcrvenapjesaci=1;
00079             LEDzuta=1;
00080             LEDzelena=0;
00081             LEDzelenapjesaci=0;
00082             z.period(0.5);
00083             z=0.5;                 //zvuk za crveno svjetlo pjesacima
00084             wait(4);            //pali se žuto svjetlo, priprema za crveno
00085 
00086             LEDcrvena=1;
00087             LEDcrvenapjesaci=1;
00088             LEDzuta=0;
00089             LEDzelena=0;
00090             LEDzelenapjesaci=0;
00091             z.period(0.5);
00092             z=0.5;          //zvuk za crveno svjetlo pjesacima
00093             wait(1);        //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake
00094 
00095             LEDcrvena=1;
00096             LEDcrvenapjesaci=0;
00097             LEDzuta=0;
00098             LEDzelena=0;
00099             LEDzelenapjesaci=1;
00100             z.period(0.1);
00101             z=0.5;              //zvuk za zeleno svjetlo pjesacima
00102             wait(6);            //upalilo se crveno svjetlo vozilima, zeleno je pješacima
00103 
00104             LEDcrvena=1;
00105             LEDcrvenapjesaci=1;
00106             LEDzuta=0;
00107             LEDzelena=0;
00108             LEDzelenapjesaci=0;
00109             z.period(0.5);
00110             z=0.5;              //zvuk za crveno svjetlo pjesacima
00111             wait(1);           //pali se crveno pješacima
00112 
00113             LEDcrvena=1;
00114             LEDcrvenapjesaci=1;
00115             LEDzuta=1;
00116             LEDzelena=0;
00117             LEDzelenapjesaci=0;
00118             z.period(0.5);
00119             z=0.5;              //zvuk za crveno svjetlo pjesacima
00120             wait(4);            //uz crveno pješacima, pali se žuto svjetlo, priprema za zeleno za vozila
00121 
00122             LEDcrvena=0;
00123             LEDcrvenapjesaci=1;
00124             LEDzuta=0;
00125             LEDzelena=1;
00126             LEDzelenapjesaci=0;
00127             z.period(0.5);
00128             z=0.5;              //zvuk za crveno svjetlo pjesacima
00129             wait(15);           //pali se zeleno svjetlo za vozila
00130 
00131             LEDcrvena=0;
00132             LEDcrvenapjesaci=1;
00133             LEDzuta=1;
00134             LEDzelena=0;
00135             LEDzelenapjesaci=0;
00136             z.period(0.5);
00137             z=0.5;              //zvuk za crveno svjetlo pjesacima
00138             wait(4);            //pali se žuto svjetlo, priprema za crveno svjetlo vozilima
00139 
00140         }
00141         debounce.reset();
00142     }
00143 }
00144 void zvuk()
00145 {
00146     if(LEDzelenapjesaci==1) {
00147         z.period(0.1); // definiranje PWM perioda za zvučnik --> zvuk za zeleno svjetlo pjesacima
00148         z=0.5;  //aktivni ciklus na 50%, PWM frekvencija definira visinu reproduciranog zvuka
00149     } else if(LEDzelenapjesaci==0) {
00150         z.period(0.5);      //zvuk za crveno svjetlo pjesacima
00151         z=0.5;          
00152     }
00153 }