Pjesackiprijelaz1

Dependencies:   mbed

https://os.mbed.com/media/uploads/mkusec/shema01.pdf

Committer:
mkusec
Date:
Tue Sep 21 10:28:30 2021 +0000
Revision:
0:ff18e31de8bf
pjesacki prijelaz

Who changed what in which revision?

UserRevisionLine numberNew 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 }