Antonio Karanović
/
Semafor
asd
main.cpp@1:f40a898ee10e, 2020-11-29 (annotated)
- Committer:
- akaranovi
- Date:
- Sun Nov 29 12:12:23 2020 +0000
- Revision:
- 1:f40a898ee10e
- Parent:
- 0:c3966e70a28e
OK
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
akaranovi | 0:c3966e70a28e | 1 | #include "mbed.h" |
akaranovi | 0:c3966e70a28e | 2 | #include "led.h" |
akaranovi | 0:c3966e70a28e | 3 | Serial pc(USBTX, USBRX); |
akaranovi | 0:c3966e70a28e | 4 | LED led1(A0); |
akaranovi | 0:c3966e70a28e | 5 | LED led2(D2); |
akaranovi | 0:c3966e70a28e | 6 | LED led3(D3); |
akaranovi | 0:c3966e70a28e | 7 | LED led4(D4); |
akaranovi | 0:c3966e70a28e | 8 | LED led5(D5); |
akaranovi | 0:c3966e70a28e | 9 | InterruptIn button(USER_BUTTON); |
akaranovi | 0:c3966e70a28e | 10 | Timer automobil; |
akaranovi | 0:c3966e70a28e | 11 | Timer pjesak; |
akaranovi | 0:c3966e70a28e | 12 | Timer flipper; |
akaranovi | 0:c3966e70a28e | 13 | Timer zuta; |
akaranovi | 0:c3966e70a28e | 14 | Timer debounce; |
akaranovi | 0:c3966e70a28e | 15 | //Funkcija hardverskog interrupta |
akaranovi | 0:c3966e70a28e | 16 | void flip() |
akaranovi | 0:c3966e70a28e | 17 | { |
akaranovi | 0:c3966e70a28e | 18 | if(debounce.read_ms()>200) { |
akaranovi | 0:c3966e70a28e | 19 | led1.status(0); |
akaranovi | 0:c3966e70a28e | 20 | led3.status(0); |
akaranovi | 0:c3966e70a28e | 21 | led4.status(0); |
akaranovi | 0:c3966e70a28e | 22 | led5.status(0); |
akaranovi | 0:c3966e70a28e | 23 | int i; |
akaranovi | 0:c3966e70a28e | 24 | for(i=0; i<20; i++) { |
akaranovi | 0:c3966e70a28e | 25 | led2.flip(); |
akaranovi | 0:c3966e70a28e | 26 | wait(0.5); |
akaranovi | 0:c3966e70a28e | 27 | } |
akaranovi | 0:c3966e70a28e | 28 | } |
akaranovi | 0:c3966e70a28e | 29 | debounce.reset(); |
akaranovi | 0:c3966e70a28e | 30 | } |
akaranovi | 0:c3966e70a28e | 31 | |
akaranovi | 0:c3966e70a28e | 32 | int main() |
akaranovi | 0:c3966e70a28e | 33 | { |
akaranovi | 0:c3966e70a28e | 34 | pjesak.reset(); |
akaranovi | 0:c3966e70a28e | 35 | automobil.reset(); |
akaranovi | 0:c3966e70a28e | 36 | debounce.start(); |
akaranovi | 0:c3966e70a28e | 37 | button.rise(&flip); |
akaranovi | 0:c3966e70a28e | 38 | |
akaranovi | 0:c3966e70a28e | 39 | while(1) { |
akaranovi | 0:c3966e70a28e | 40 | |
akaranovi | 0:c3966e70a28e | 41 | //Početno stanje LED-ica |
akaranovi | 0:c3966e70a28e | 42 | led1.status(0); |
akaranovi | 0:c3966e70a28e | 43 | led2.status(0); |
akaranovi | 0:c3966e70a28e | 44 | led3.status(1); |
akaranovi | 0:c3966e70a28e | 45 | led4.status(1); |
akaranovi | 0:c3966e70a28e | 46 | led5.status(0); |
akaranovi | 0:c3966e70a28e | 47 | |
akaranovi | 0:c3966e70a28e | 48 | //Nakon 12.5 sekundi ugasi zeleno svijetlo za automobile |
akaranovi | 0:c3966e70a28e | 49 | automobil.start(); |
akaranovi | 0:c3966e70a28e | 50 | if (automobil.read() > 12.5) { |
akaranovi | 0:c3966e70a28e | 51 | led3.flip(); |
akaranovi | 0:c3966e70a28e | 52 | |
akaranovi | 0:c3966e70a28e | 53 | //Nakon 13 sekundi upali žuto svijetlo za automobile |
akaranovi | 0:c3966e70a28e | 54 | } |
akaranovi | 0:c3966e70a28e | 55 | if (automobil.read() > 13) { |
akaranovi | 0:c3966e70a28e | 56 | led2.flip(); |
akaranovi | 0:c3966e70a28e | 57 | //Nakon 15 sekundi upali crveno za automobile i zeleno za pješake |
akaranovi | 0:c3966e70a28e | 58 | } |
akaranovi | 0:c3966e70a28e | 59 | if(automobil.read()>15) { |
akaranovi | 0:c3966e70a28e | 60 | automobil.stop(); |
akaranovi | 0:c3966e70a28e | 61 | led1.flip(); |
akaranovi | 0:c3966e70a28e | 62 | led2.flip(); |
akaranovi | 0:c3966e70a28e | 63 | led4.flip(); |
akaranovi | 0:c3966e70a28e | 64 | led5.flip(); |
akaranovi | 0:c3966e70a28e | 65 | pjesak.reset(); |
akaranovi | 0:c3966e70a28e | 66 | pjesak.start(); |
akaranovi | 0:c3966e70a28e | 67 | while(pjesak.read()<7) { |
akaranovi | 0:c3966e70a28e | 68 | if (pjesak.read() > 5) |
akaranovi | 0:c3966e70a28e | 69 | led2.flip(); |
akaranovi | 0:c3966e70a28e | 70 | } |
akaranovi | 0:c3966e70a28e | 71 | automobil.reset(); |
akaranovi | 0:c3966e70a28e | 72 | pjesak.stop(); |
akaranovi | 0:c3966e70a28e | 73 | } |
akaranovi | 0:c3966e70a28e | 74 | |
akaranovi | 0:c3966e70a28e | 75 | led1.flip(); |
akaranovi | 0:c3966e70a28e | 76 | led2.flip(); |
akaranovi | 0:c3966e70a28e | 77 | } |
akaranovi | 0:c3966e70a28e | 78 | |
akaranovi | 0:c3966e70a28e | 79 | return 0; |
akaranovi | 0:c3966e70a28e | 80 | } |