Na semaforu 1 koji se nalazi na „glavnoj“ cesti upaljeno je zeleno svjetlo za automobile te crveno za pješake. Na semaforu 2 koji se nalazi na „sporednoj“ cesti upaljeno je crveno svjetlo za automobile te zeleno za pješake. Zamišljeno je da je na „glavnoj“ cesti konstantno upaljeno zeleno svjetlo kako bi bio brži „protok“ vozila, a na „sporednoj“ cesti crveno svjetlo sve dok ne naiđe automobil ili pješak koji želi prijeći cestu.

Dependencies:   mbed

Committer:
tbogdan
Date:
Thu Nov 28 09:52:12 2019 +0000
Revision:
4:88f5dd4e476d
Parent:
3:7d80fb2473cc
.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tbogdan 0:a30d2e391254 1 #include "mbed.h"
tbogdan 0:a30d2e391254 2 BusOut semafor1(D7,D6,D5,D4,D3,D2);
tbogdan 0:a30d2e391254 3 BusOut semafor2(D12,D11,D10,D9,D8);
tbogdan 0:a30d2e391254 4 Timer t;
tbogdan 4:88f5dd4e476d 5 Timer t_2;
tbogdan 0:a30d2e391254 6 Ticker pj;
tbogdan 4:88f5dd4e476d 7 InterruptIn button(D13);
tbogdan 0:a30d2e391254 8 InterruptIn echo(PB_15);
tbogdan 0:a30d2e391254 9 DigitalOut trigger(PB_13);
tbogdan 4:88f5dd4e476d 10 InterruptIn echo_2(D14);
tbogdan 4:88f5dd4e476d 11 DigitalOut trigger_2(D15);
tbogdan 0:a30d2e391254 12 bool gotovo=false;
tbogdan 0:a30d2e391254 13 bool pritisnuto=false;
tbogdan 0:a30d2e391254 14 void startTimer()
tbogdan 0:a30d2e391254 15 {
tbogdan 0:a30d2e391254 16 t.start();
tbogdan 0:a30d2e391254 17 }
tbogdan 0:a30d2e391254 18
tbogdan 0:a30d2e391254 19 void stopTimer()
tbogdan 0:a30d2e391254 20 {
tbogdan 0:a30d2e391254 21 t.stop();
tbogdan 0:a30d2e391254 22 }
tbogdan 0:a30d2e391254 23
tbogdan 4:88f5dd4e476d 24 void startTimer_2()
tbogdan 4:88f5dd4e476d 25 {
tbogdan 4:88f5dd4e476d 26 t_2.start();
tbogdan 4:88f5dd4e476d 27 }
tbogdan 4:88f5dd4e476d 28
tbogdan 4:88f5dd4e476d 29 void stopTimer_2()
tbogdan 4:88f5dd4e476d 30 {
tbogdan 4:88f5dd4e476d 31 t_2.stop();
tbogdan 4:88f5dd4e476d 32 }
tbogdan 0:a30d2e391254 33 void gumb()
tbogdan 0:a30d2e391254 34 {
tbogdan 0:a30d2e391254 35 pritisnuto=true;
tbogdan 0:a30d2e391254 36 }
tbogdan 0:a30d2e391254 37
tbogdan 0:a30d2e391254 38 void pjesaci()
tbogdan 0:a30d2e391254 39 {
tbogdan 0:a30d2e391254 40 if(pritisnuto==true && gotovo==true) {
tbogdan 2:7897e64de2f3 41 semafor2 = 0b10010; //Semafor 2 pali se crveno svijetlo za pješake
tbogdan 0:a30d2e391254 42 wait(1);
tbogdan 0:a30d2e391254 43 semafor2 = 0b11010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 4:88f5dd4e476d 44 wait(3);
tbogdan 0:a30d2e391254 45 semafor1 = 0b100010; //Semafor 1 pali se zeleno svjetlo za pješake
tbogdan 0:a30d2e391254 46 semafor2 = 0b00110; //Semafor 2 pali se zeleno svjetlo za aute
tbogdan 0:a30d2e391254 47 wait(10);
tbogdan 0:a30d2e391254 48 semafor1 = 0b100100; //Semafor 1 pali crveno svjetlo za pješake
tbogdan 4:88f5dd4e476d 49 wait(3);
tbogdan 0:a30d2e391254 50 semafor2 = 0b01010; //Semafor 2 pali se žuto svjetlo za aute
tbogdan 4:88f5dd4e476d 51 wait(3);
tbogdan 0:a30d2e391254 52 semafor2 = 0b10010; //Semafor 2 pali se crveno svjetlo za aute
tbogdan 4:88f5dd4e476d 53 wait(3);
tbogdan 0:a30d2e391254 54 semafor1 = 0b110100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 4:88f5dd4e476d 55 wait(1);
tbogdan 0:a30d2e391254 56 pritisnuto=false;
tbogdan 0:a30d2e391254 57 gotovo=false;
tbogdan 0:a30d2e391254 58 }
tbogdan 0:a30d2e391254 59 }
tbogdan 0:a30d2e391254 60 int main()
tbogdan 0:a30d2e391254 61 {
tbogdan 4:88f5dd4e476d 62 button.mode(PullUp);
tbogdan 0:a30d2e391254 63 button.fall(&gumb);
tbogdan 0:a30d2e391254 64 echo.rise(&startTimer);
tbogdan 0:a30d2e391254 65 echo.fall(&stopTimer);
tbogdan 4:88f5dd4e476d 66 echo_2.rise(&startTimer_2);
tbogdan 4:88f5dd4e476d 67 echo_2.fall(&stopTimer_2);
tbogdan 0:a30d2e391254 68
tbogdan 3:7d80fb2473cc 69 pj.attach(&pjesaci,0.5);
tbogdan 0:a30d2e391254 70
tbogdan 0:a30d2e391254 71 while(1) {
tbogdan 4:88f5dd4e476d 72
tbogdan 0:a30d2e391254 73 semafor1 = 0b001100; //Semafor 1 upaljeno zeleno za aute, a crveno za pješake
tbogdan 0:a30d2e391254 74 semafor2 = 0b10001; //Semafor 2 upaljeno crveno za aute, a zeleno za pješake
tbogdan 4:88f5dd4e476d 75 wait (15);
tbogdan 3:7d80fb2473cc 76 semafor2 = 0b10010; //Semafor 2 pali se crveno svijetlo za pješake
tbogdan 4:88f5dd4e476d 77 wait(3);
tbogdan 3:7d80fb2473cc 78 semafor1 = 0b010100; //Semafor 1 pali se žuto svjetlo za aute
tbogdan 4:88f5dd4e476d 79 wait(3);
tbogdan 4:88f5dd4e476d 80 semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute
tbogdan 4:88f5dd4e476d 81 wait(3);
tbogdan 4:88f5dd4e476d 82 semafor1 = 0b100101; //Semafor 1 pali se strelica za skretanje u lijevo
tbogdan 3:7d80fb2473cc 83 wait(5);
tbogdan 4:88f5dd4e476d 84 semafor1 = 0b100100; //Semafor 1 gasi se strelica za skretanje u lijevo
tbogdan 0:a30d2e391254 85 trigger = 1;
tbogdan 0:a30d2e391254 86 wait_us(10);
tbogdan 0:a30d2e391254 87 trigger = 0;
tbogdan 0:a30d2e391254 88 wait(1);
tbogdan 0:a30d2e391254 89 float distance = t.read() * 1e6 / 58;
tbogdan 0:a30d2e391254 90 t.reset();
tbogdan 4:88f5dd4e476d 91 if (distance <= 5) {
tbogdan 0:a30d2e391254 92 pritisnuto=true;
tbogdan 3:7d80fb2473cc 93 gotovo=true;
tbogdan 0:a30d2e391254 94 }
tbogdan 4:88f5dd4e476d 95 trigger_2 = 1;
tbogdan 4:88f5dd4e476d 96 wait_us(10);
tbogdan 4:88f5dd4e476d 97 trigger_2 = 0;
tbogdan 4:88f5dd4e476d 98 wait(1);
tbogdan 4:88f5dd4e476d 99 float distance_2 = t_2.read() * 1e6 / 58;
tbogdan 4:88f5dd4e476d 100 t_2.reset();
tbogdan 4:88f5dd4e476d 101 if (distance_2 <= 5) {
tbogdan 4:88f5dd4e476d 102 pritisnuto=true;
tbogdan 4:88f5dd4e476d 103 gotovo=true;
tbogdan 4:88f5dd4e476d 104 }
tbogdan 4:88f5dd4e476d 105 if(pritisnuto==true) {
tbogdan 4:88f5dd4e476d 106 gotovo=true;
tbogdan 4:88f5dd4e476d 107 }
tbogdan 4:88f5dd4e476d 108 semafor1 = 0b100100; //Semafor 1 pali se crveno svjetlo za aute služi da se pričeka još par sekundi da prođu auti koji skreću na strelicu.
tbogdan 4:88f5dd4e476d 109 wait(1);
tbogdan 4:88f5dd4e476d 110 semafor1 = 0b110100;
tbogdan 4:88f5dd4e476d 111 wait(3);
tbogdan 0:a30d2e391254 112 }
tbogdan 0:a30d2e391254 113 }