![](/media/cache/group/tvz-logo.png.50x50_q85.png)
Projektni zadatak iz Mikroupravljača - Mladenko Jurković
Dependencies: mbed SeeedShieldBot BluetoothSerial
main.cpp@0:b530fb5242f7, 2020-11-24 (annotated)
- Committer:
- mjurkovic
- Date:
- Tue Nov 24 17:02:29 2020 +0000
- Revision:
- 0:b530fb5242f7
ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mjurkovic | 0:b530fb5242f7 | 1 | #include"mbed.h" |
mjurkovic | 0:b530fb5242f7 | 2 | DigitalOut LEDcrvena(D7); //LED svjetlo za vozila |
mjurkovic | 0:b530fb5242f7 | 3 | DigitalOut LEDzuta(D6); //LED svjetlo za vozila |
mjurkovic | 0:b530fb5242f7 | 4 | DigitalOut LEDzelena(D5); //LED svjetlo za vozila |
mjurkovic | 0:b530fb5242f7 | 5 | |
mjurkovic | 0:b530fb5242f7 | 6 | DigitalOut LEDzelenapjesaci(D2); //LED svjetlo za pješake |
mjurkovic | 0:b530fb5242f7 | 7 | DigitalOut LEDcrvenapjesaci(D3); //LED svjetlo za pješake |
mjurkovic | 0:b530fb5242f7 | 8 | |
mjurkovic | 0:b530fb5242f7 | 9 | PwmOut z(D9); //PWM izlaz za zvučnik |
mjurkovic | 0:b530fb5242f7 | 10 | InterruptIn tipkalo(D4); //Tipkalo za pješake |
mjurkovic | 0:b530fb5242f7 | 11 | |
mjurkovic | 0:b530fb5242f7 | 12 | Ticker zv; //Ticker za pozivanje zvuka |
mjurkovic | 0:b530fb5242f7 | 13 | Timer debounce; //Timer za debounce |
mjurkovic | 0:b530fb5242f7 | 14 | void pjesaci(void); //definiranje funkcije pjesaci |
mjurkovic | 0:b530fb5242f7 | 15 | void zvuk(void); //definiranje funkcije zvuk |
mjurkovic | 0:b530fb5242f7 | 16 | |
mjurkovic | 0:b530fb5242f7 | 17 | int main() |
mjurkovic | 0:b530fb5242f7 | 18 | { |
mjurkovic | 0:b530fb5242f7 | 19 | debounce.start(); |
mjurkovic | 0:b530fb5242f7 | 20 | tipkalo.rise(&pjesaci); //pozivanje funkcije "pjesaci" koja odmah pali zeleno svjetlo za pješake, ukoliko je uključeno zeleno za vozila |
mjurkovic | 0:b530fb5242f7 | 21 | |
mjurkovic | 0:b530fb5242f7 | 22 | while(1) { |
mjurkovic | 0:b530fb5242f7 | 23 | zv.attach(&zvuk, 0.5); |
mjurkovic | 0:b530fb5242f7 | 24 | |
mjurkovic | 0:b530fb5242f7 | 25 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 26 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 27 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 28 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 29 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 30 | wait(1); //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake |
mjurkovic | 0:b530fb5242f7 | 31 | |
mjurkovic | 0:b530fb5242f7 | 32 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 33 | LEDcrvenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 34 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 35 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 36 | LEDzelenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 37 | wait(12); //zeleno za pješake |
mjurkovic | 0:b530fb5242f7 | 38 | |
mjurkovic | 0:b530fb5242f7 | 39 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 40 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 41 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 42 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 43 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 44 | wait(1); //pali se crvena za pješake, priprema za žuto odnosno zeleno svjetlo vozilima |
mjurkovic | 0:b530fb5242f7 | 45 | |
mjurkovic | 0:b530fb5242f7 | 46 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 47 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 48 | LEDzuta=1; |
mjurkovic | 0:b530fb5242f7 | 49 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 50 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 51 | wait(3); //pali se žuto svjetlo - priprema za kretanje vozila |
mjurkovic | 0:b530fb5242f7 | 52 | |
mjurkovic | 0:b530fb5242f7 | 53 | LEDcrvena=0; |
mjurkovic | 0:b530fb5242f7 | 54 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 55 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 56 | LEDzelena=1; |
mjurkovic | 0:b530fb5242f7 | 57 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 58 | wait(15); //zeleno svjetlo vozilima |
mjurkovic | 0:b530fb5242f7 | 59 | |
mjurkovic | 0:b530fb5242f7 | 60 | LEDcrvena=0; |
mjurkovic | 0:b530fb5242f7 | 61 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 62 | LEDzuta=1; |
mjurkovic | 0:b530fb5242f7 | 63 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 64 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 65 | wait(4); //pali se žuto svjetlo, upozorenje da slijedi crveno svjetlo |
mjurkovic | 0:b530fb5242f7 | 66 | } |
mjurkovic | 0:b530fb5242f7 | 67 | } |
mjurkovic | 0:b530fb5242f7 | 68 | void pjesaci() |
mjurkovic | 0:b530fb5242f7 | 69 | { |
mjurkovic | 0:b530fb5242f7 | 70 | if(debounce.read_ms()>200) { |
mjurkovic | 0:b530fb5242f7 | 71 | if(LEDzelena==1) { //ako je zeleno svjetlo za vozila uključeno |
mjurkovic | 0:b530fb5242f7 | 72 | |
mjurkovic | 0:b530fb5242f7 | 73 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 74 | z=0.5; |
mjurkovic | 0:b530fb5242f7 | 75 | wait(2); //nakon pritiska tipke, zeleno svjetlo svjetli još 2 sekunde |
mjurkovic | 0:b530fb5242f7 | 76 | |
mjurkovic | 0:b530fb5242f7 | 77 | LEDcrvena=0; |
mjurkovic | 0:b530fb5242f7 | 78 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 79 | LEDzuta=1; |
mjurkovic | 0:b530fb5242f7 | 80 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 81 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 82 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 83 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 84 | wait(4); //pali se žuto svjetlo, priprema za crveno |
mjurkovic | 0:b530fb5242f7 | 85 | |
mjurkovic | 0:b530fb5242f7 | 86 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 87 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 88 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 89 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 90 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 91 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 92 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 93 | wait(1); //crveno svjetlo vozilima, sigurnosni prijelaz između svjetla za vozila i pješake |
mjurkovic | 0:b530fb5242f7 | 94 | |
mjurkovic | 0:b530fb5242f7 | 95 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 96 | LEDcrvenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 97 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 98 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 99 | LEDzelenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 100 | z.period(0.1); |
mjurkovic | 0:b530fb5242f7 | 101 | z=0.5; //zvuk za zeleno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 102 | wait(6); //upalilo se crveno svjetlo vozilima, zeleno je pješacima |
mjurkovic | 0:b530fb5242f7 | 103 | |
mjurkovic | 0:b530fb5242f7 | 104 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 105 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 106 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 107 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 108 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 109 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 110 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 111 | wait(1); //pali se crveno pješacima |
mjurkovic | 0:b530fb5242f7 | 112 | |
mjurkovic | 0:b530fb5242f7 | 113 | LEDcrvena=1; |
mjurkovic | 0:b530fb5242f7 | 114 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 115 | LEDzuta=1; |
mjurkovic | 0:b530fb5242f7 | 116 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 117 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 118 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 119 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 120 | wait(4); //uz crveno pješacima, pali se žuto svjetlo, priprema za zeleno za vozila |
mjurkovic | 0:b530fb5242f7 | 121 | |
mjurkovic | 0:b530fb5242f7 | 122 | LEDcrvena=0; |
mjurkovic | 0:b530fb5242f7 | 123 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 124 | LEDzuta=0; |
mjurkovic | 0:b530fb5242f7 | 125 | LEDzelena=1; |
mjurkovic | 0:b530fb5242f7 | 126 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 127 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 128 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 129 | wait(15); //pali se zeleno svjetlo za vozila |
mjurkovic | 0:b530fb5242f7 | 130 | |
mjurkovic | 0:b530fb5242f7 | 131 | LEDcrvena=0; |
mjurkovic | 0:b530fb5242f7 | 132 | LEDcrvenapjesaci=1; |
mjurkovic | 0:b530fb5242f7 | 133 | LEDzuta=1; |
mjurkovic | 0:b530fb5242f7 | 134 | LEDzelena=0; |
mjurkovic | 0:b530fb5242f7 | 135 | LEDzelenapjesaci=0; |
mjurkovic | 0:b530fb5242f7 | 136 | z.period(0.5); |
mjurkovic | 0:b530fb5242f7 | 137 | z=0.5; //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 138 | wait(4); //pali se žuto svjetlo, priprema za crveno svjetlo vozilima |
mjurkovic | 0:b530fb5242f7 | 139 | |
mjurkovic | 0:b530fb5242f7 | 140 | } |
mjurkovic | 0:b530fb5242f7 | 141 | debounce.reset(); |
mjurkovic | 0:b530fb5242f7 | 142 | } |
mjurkovic | 0:b530fb5242f7 | 143 | } |
mjurkovic | 0:b530fb5242f7 | 144 | void zvuk() |
mjurkovic | 0:b530fb5242f7 | 145 | { |
mjurkovic | 0:b530fb5242f7 | 146 | if(LEDzelenapjesaci==1) { |
mjurkovic | 0:b530fb5242f7 | 147 | z.period(0.1); // definiranje PWM perioda za zvučnik --> zvuk za zeleno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 148 | z=0.5; //aktivni ciklus na 50%, PWM frekvencija definira visinu reproduciranog zvuka |
mjurkovic | 0:b530fb5242f7 | 149 | } else if(LEDzelenapjesaci==0) { |
mjurkovic | 0:b530fb5242f7 | 150 | z.period(0.5); //zvuk za crveno svjetlo pjesacima |
mjurkovic | 0:b530fb5242f7 | 151 | z=0.5; |
mjurkovic | 0:b530fb5242f7 | 152 | } |
mjurkovic | 0:b530fb5242f7 | 153 | } |