Semafor za pjesake.

Dependencies:   mbed SeeedShieldBot BluetoothSerial buzzer

Fork of SABLJIC_SEMAFORPROJEKT by Stella Sabljic

Committer:
ssabljic
Date:
Thu Dec 02 21:10:42 2021 +0000
Revision:
1:232c3adbe1ae
Parent:
0:9d0f8e1955b1
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ssabljic 0:9d0f8e1955b1 1 #include "mbed.h" // pozivanje biblioteke
ssabljic 0:9d0f8e1955b1 2 #include "buzzer.h"
ssabljic 0:9d0f8e1955b1 3
ssabljic 0:9d0f8e1955b1 4 DigitalOut Crveno(D4); //Postavljanje pinova D4 i D5 kao izlaz za signalizaciju diodama
ssabljic 0:9d0f8e1955b1 5 DigitalOut Zeleno(D5);
ssabljic 0:9d0f8e1955b1 6
ssabljic 0:9d0f8e1955b1 7 InterruptIn Tipka(USER_BUTTON);//Deklaracija pina USER kao interupt
ssabljic 0:9d0f8e1955b1 8 Timeout Response;
ssabljic 0:9d0f8e1955b1 9 Beep buzzer(D2);
ssabljic 0:9d0f8e1955b1 10 Ticker ticker;
ssabljic 0:9d0f8e1955b1 11
ssabljic 0:9d0f8e1955b1 12 void sound() {
ssabljic 0:9d0f8e1955b1 13 if(Zeleno == 1) {
ssabljic 0:9d0f8e1955b1 14 buzzer.beep(400, 1.5);
ssabljic 0:9d0f8e1955b1 15 } else if(Crveno == 1) {
ssabljic 0:9d0f8e1955b1 16 buzzer.beep(200, 0.5);
ssabljic 0:9d0f8e1955b1 17 }
ssabljic 0:9d0f8e1955b1 18 }
ssabljic 0:9d0f8e1955b1 19
ssabljic 0:9d0f8e1955b1 20
ssabljic 0:9d0f8e1955b1 21 bool Tipkalo = false; //postavljanje početne vrijednosti
ssabljic 0:9d0f8e1955b1 22
ssabljic 0:9d0f8e1955b1 23 void Tipkastisnuta() { //potprogram za detekciju interupta
ssabljic 0:9d0f8e1955b1 24 Tipkalo = true;
ssabljic 0:9d0f8e1955b1 25 }
ssabljic 0:9d0f8e1955b1 26
ssabljic 0:9d0f8e1955b1 27 void semaforcrveno(){ //glavna funkcija koja radi cijelo vrijeme dok se ne stisne gumb
ssabljic 0:9d0f8e1955b1 28 Zeleno = 0;
ssabljic 0:9d0f8e1955b1 29 Crveno=1;
ssabljic 0:9d0f8e1955b1 30 }
ssabljic 0:9d0f8e1955b1 31
ssabljic 0:9d0f8e1955b1 32 void pjesackisemafor() { //funkcija koja pali semafor za pjesake nakon detektiranog vanjskog interupta
ssabljic 0:9d0f8e1955b1 33
ssabljic 0:9d0f8e1955b1 34 if(Tipkalo == true){
ssabljic 0:9d0f8e1955b1 35 Crveno = 0;
ssabljic 0:9d0f8e1955b1 36 wait(0.1);
ssabljic 0:9d0f8e1955b1 37 Zeleno = 1;
ssabljic 0:9d0f8e1955b1 38 wait(3);
ssabljic 0:9d0f8e1955b1 39 Response.attach(&semaforcrveno,2.0); // naredba kojom se pokreče timeout timer
ssabljic 0:9d0f8e1955b1 40 Tipkalo=false; //vraća na pocetnu vrijednost
ssabljic 0:9d0f8e1955b1 41 }
ssabljic 0:9d0f8e1955b1 42
ssabljic 0:9d0f8e1955b1 43 }
ssabljic 0:9d0f8e1955b1 44 int main() {
ssabljic 0:9d0f8e1955b1 45
ssabljic 0:9d0f8e1955b1 46 ticker.attach(&sound, 1.0);
ssabljic 0:9d0f8e1955b1 47 Tipka.fall(&Tipkastisnuta); // naredba koja detektira interupt promjenom stanja
ssabljic 0:9d0f8e1955b1 48
ssabljic 0:9d0f8e1955b1 49
ssabljic 0:9d0f8e1955b1 50 while(true){ //beskonačna petlja koja pokreče funkciju sve dok se ne promjeni stanje u podprogramu tipkalo čime se pokreće fnkcija za pjesacki semafor
ssabljic 0:9d0f8e1955b1 51 if(!Tipka) {
ssabljic 0:9d0f8e1955b1 52 semaforcrveno();
ssabljic 0:9d0f8e1955b1 53 } else {
ssabljic 0:9d0f8e1955b1 54 pjesackisemafor();
ssabljic 0:9d0f8e1955b1 55 }
ssabljic 0:9d0f8e1955b1 56 }
ssabljic 0:9d0f8e1955b1 57
ssabljic 0:9d0f8e1955b1 58 }