Pjesackiprijelaz1

Dependencies:   mbed

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

main.cpp

Committer:
mkusec
Date:
2021-09-21
Revision:
0:ff18e31de8bf

File content as of revision 0:ff18e31de8bf:

#include "mbed.h" // pozivanje  biblioteke
DigitalOut Cesta_Crveno(p5); //Postavljanje pinova p5-p10 kao izlaz za signalizaciju diodama
DigitalOut Cesta_Zuto(p6);
DigitalOut Cesta_Zeleno(p7);
DigitalOut Zebra_Crveno(p8);
DigitalOut Zebra_Zeleno(p9);
InterruptIn Tipka(p20, PullUp); //Deklaracija pina p20 kao interuput
Timeout Response;   // timeout timer

bool Tipkalo = false;   //postavljanje početne vrijednosti
                                
void kliknutoTipkalo() {  //potprogram za detekciju interupta
    Tipkalo = true;
}

void gasi() {           //funkcija koja se poziva na kraj timeout timera kako bi ugasila semafor za pjesake
  Zebra_Zeleno = 0; 
    Zebra_Crveno = 1;
    Tipkalo = false;    //postavljanje vrijednosti na početno stanje

}


void autoSemafor() {    //funkcija koja kontinuirano pali i gasi semafor za automobile
    Zebra_Crveno = 1;
    Cesta_Crveno = 1;
    wait(3);
    
    Cesta_Crveno = 1;
    Cesta_Zuto = 1;
    wait(2);
    
    Cesta_Zuto = 0;
    Cesta_Crveno = 0;
    Cesta_Zeleno = 1;
    wait(3);
    
     Cesta_Zeleno = 1;
    Cesta_Zuto = 1;
    wait(2);
    
    Cesta_Zeleno = 0;
    Cesta_Crveno = 1;
     Cesta_Zuto = 0;
     wait(1);
}

void pjesackisemafor() { //funkcija koja pali semafor za pjesake nakon detektiranog vanjskog interupta
    Zebra_Crveno = 0;
        wait(0.1);
    Zebra_Zeleno = 1;
    wait(3);
        Response.attach(&gasi,2.0);  // naredba kojom se pokreče timeout timer
   
}
        
int main() { //Glavna funkcija
    
    
    Tipka.fall(&kliknutoTipkalo);  // naredba koja detektira interupt promjenom stanja na pinu p20
    
    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

        if(!Tipkalo) {  
            autoSemafor(); 
        } else {
            pjesackisemafor();
        }
    }
}