Projektni zadatak iz Mikroupravljača - Mladenko Jurković
Dependencies: mbed SeeedShieldBot BluetoothSerial
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 }
Generated on Wed Aug 17 2022 10:43:02 by 1.7.2