Pjesackiprijelaz1
Dependencies: mbed
https://os.mbed.com/media/uploads/mkusec/shema01.pdf
main.cpp@0:ff18e31de8bf, 2021-09-21 (annotated)
- Committer:
- mkusec
- Date:
- Tue Sep 21 10:28:30 2021 +0000
- Revision:
- 0:ff18e31de8bf
pjesacki prijelaz
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mkusec | 0:ff18e31de8bf | 1 | #include "mbed.h" // pozivanje biblioteke |
mkusec | 0:ff18e31de8bf | 2 | DigitalOut Cesta_Crveno(p5); //Postavljanje pinova p5-p10 kao izlaz za signalizaciju diodama |
mkusec | 0:ff18e31de8bf | 3 | DigitalOut Cesta_Zuto(p6); |
mkusec | 0:ff18e31de8bf | 4 | DigitalOut Cesta_Zeleno(p7); |
mkusec | 0:ff18e31de8bf | 5 | DigitalOut Zebra_Crveno(p8); |
mkusec | 0:ff18e31de8bf | 6 | DigitalOut Zebra_Zeleno(p9); |
mkusec | 0:ff18e31de8bf | 7 | InterruptIn Tipka(p20, PullUp); //Deklaracija pina p20 kao interuput |
mkusec | 0:ff18e31de8bf | 8 | Timeout Response; // timeout timer |
mkusec | 0:ff18e31de8bf | 9 | |
mkusec | 0:ff18e31de8bf | 10 | bool Tipkalo = false; //postavljanje početne vrijednosti |
mkusec | 0:ff18e31de8bf | 11 | |
mkusec | 0:ff18e31de8bf | 12 | void kliknutoTipkalo() { //potprogram za detekciju interupta |
mkusec | 0:ff18e31de8bf | 13 | Tipkalo = true; |
mkusec | 0:ff18e31de8bf | 14 | } |
mkusec | 0:ff18e31de8bf | 15 | |
mkusec | 0:ff18e31de8bf | 16 | void gasi() { //funkcija koja se poziva na kraj timeout timera kako bi ugasila semafor za pjesake |
mkusec | 0:ff18e31de8bf | 17 | Zebra_Zeleno = 0; |
mkusec | 0:ff18e31de8bf | 18 | Zebra_Crveno = 1; |
mkusec | 0:ff18e31de8bf | 19 | Tipkalo = false; //postavljanje vrijednosti na početno stanje |
mkusec | 0:ff18e31de8bf | 20 | |
mkusec | 0:ff18e31de8bf | 21 | } |
mkusec | 0:ff18e31de8bf | 22 | |
mkusec | 0:ff18e31de8bf | 23 | |
mkusec | 0:ff18e31de8bf | 24 | void autoSemafor() { //funkcija koja kontinuirano pali i gasi semafor za automobile |
mkusec | 0:ff18e31de8bf | 25 | Zebra_Crveno = 1; |
mkusec | 0:ff18e31de8bf | 26 | Cesta_Crveno = 1; |
mkusec | 0:ff18e31de8bf | 27 | wait(3); |
mkusec | 0:ff18e31de8bf | 28 | |
mkusec | 0:ff18e31de8bf | 29 | Cesta_Crveno = 1; |
mkusec | 0:ff18e31de8bf | 30 | Cesta_Zuto = 1; |
mkusec | 0:ff18e31de8bf | 31 | wait(2); |
mkusec | 0:ff18e31de8bf | 32 | |
mkusec | 0:ff18e31de8bf | 33 | Cesta_Zuto = 0; |
mkusec | 0:ff18e31de8bf | 34 | Cesta_Crveno = 0; |
mkusec | 0:ff18e31de8bf | 35 | Cesta_Zeleno = 1; |
mkusec | 0:ff18e31de8bf | 36 | wait(3); |
mkusec | 0:ff18e31de8bf | 37 | |
mkusec | 0:ff18e31de8bf | 38 | Cesta_Zeleno = 1; |
mkusec | 0:ff18e31de8bf | 39 | Cesta_Zuto = 1; |
mkusec | 0:ff18e31de8bf | 40 | wait(2); |
mkusec | 0:ff18e31de8bf | 41 | |
mkusec | 0:ff18e31de8bf | 42 | Cesta_Zeleno = 0; |
mkusec | 0:ff18e31de8bf | 43 | Cesta_Crveno = 1; |
mkusec | 0:ff18e31de8bf | 44 | Cesta_Zuto = 0; |
mkusec | 0:ff18e31de8bf | 45 | wait(1); |
mkusec | 0:ff18e31de8bf | 46 | } |
mkusec | 0:ff18e31de8bf | 47 | |
mkusec | 0:ff18e31de8bf | 48 | void pjesackisemafor() { //funkcija koja pali semafor za pjesake nakon detektiranog vanjskog interupta |
mkusec | 0:ff18e31de8bf | 49 | Zebra_Crveno = 0; |
mkusec | 0:ff18e31de8bf | 50 | wait(0.1); |
mkusec | 0:ff18e31de8bf | 51 | Zebra_Zeleno = 1; |
mkusec | 0:ff18e31de8bf | 52 | wait(3); |
mkusec | 0:ff18e31de8bf | 53 | Response.attach(&gasi,2.0); // naredba kojom se pokreče timeout timer |
mkusec | 0:ff18e31de8bf | 54 | |
mkusec | 0:ff18e31de8bf | 55 | } |
mkusec | 0:ff18e31de8bf | 56 | |
mkusec | 0:ff18e31de8bf | 57 | int main() { //Glavna funkcija |
mkusec | 0:ff18e31de8bf | 58 | |
mkusec | 0:ff18e31de8bf | 59 | |
mkusec | 0:ff18e31de8bf | 60 | Tipka.fall(&kliknutoTipkalo); // naredba koja detektira interupt promjenom stanja na pinu p20 |
mkusec | 0:ff18e31de8bf | 61 | |
mkusec | 0:ff18e31de8bf | 62 | while(true) { //beskonačna petlja koja pokreče funkciju autosemafor sve dok se ne promjeni stanje u u podprogramu tipkalo čime se pokreće fnkcija za pjesacki semafor |
mkusec | 0:ff18e31de8bf | 63 | |
mkusec | 0:ff18e31de8bf | 64 | if(!Tipkalo) { |
mkusec | 0:ff18e31de8bf | 65 | autoSemafor(); |
mkusec | 0:ff18e31de8bf | 66 | } else { |
mkusec | 0:ff18e31de8bf | 67 | pjesackisemafor(); |
mkusec | 0:ff18e31de8bf | 68 | } |
mkusec | 0:ff18e31de8bf | 69 | } |
mkusec | 0:ff18e31de8bf | 70 | } |