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

Revision:
4:88f5dd4e476d
Parent:
3:7d80fb2473cc
--- a/main.cpp	Sun Aug 05 19:39:05 2018 +0000
+++ b/main.cpp	Thu Nov 28 09:52:12 2019 +0000
@@ -1,13 +1,14 @@
 #include "mbed.h"
-Serial pc(USBTX,USBRX);
 BusOut semafor1(D7,D6,D5,D4,D3,D2);
 BusOut semafor2(D12,D11,D10,D9,D8);
-DigitalOut led5(D7);
 Timer t;
+Timer t_2;
 Ticker pj;
-InterruptIn button(PC_13);
+InterruptIn button(D13);
 InterruptIn echo(PB_15);
 DigitalOut trigger(PB_13);
+InterruptIn echo_2(D14);
+DigitalOut trigger_2(D15);
 bool gotovo=false;
 bool pritisnuto=false;
 void startTimer()
@@ -20,6 +21,15 @@
     t.stop();
 }
 
+void startTimer_2()
+{
+    t_2.start();
+}
+
+void stopTimer_2()
+{
+    t_2.stop();
+}
 void gumb()
 {
     pritisnuto=true;
@@ -28,87 +38,76 @@
 void pjesaci()
 {
     if(pritisnuto==true && gotovo==true) {
-        wait(2);
-        /*semafor1 = 0b001100;
         semafor2 = 0b10010;         //Semafor 2 pali se crveno svijetlo za pješake
-        wait(5);
-        semafor1 = 0b010100;        //Semafor 1 pali se žuto svjetlo za aute
-        semafor2 = 0b10010;
-        wait(5);
-        semafor1 = 0b100100;        //Semafor 1 pali se crveno svjetlo za aute
-        semafor2 = 0b10010;
         wait(1);
-        semafor1 = 0b100101;        //Semafor 1 pali se strelica za skretanje u lijevo
-        semafor2 = 0b10010;
-        wait(5);*/
-        semafor1 = 0b100100;        //Semafor 1 gasi se strelica za skretanje u lijevo
-        semafor2 = 0b10010;
-        wait(2);
-        semafor1 = 0b100100;
         semafor2 = 0b11010;         //Semafor 2 pali se žuto svjetlo za aute
-        wait(5);
+        wait(3);
         semafor1 = 0b100010;        //Semafor 1 pali se zeleno svjetlo za pješake
         semafor2 = 0b00110;         //Semafor 2 pali se zeleno svjetlo za aute
         wait(10);
         semafor1 = 0b100100;        //Semafor 1 pali crveno svjetlo za pješake
-        semafor2 = 0b00110;
-        wait(5);
-        semafor1 = 0b100100;
+        wait(3);
         semafor2 = 0b01010;         //Semafor 2 pali se žuto svjetlo za aute
-        wait(5);
-        semafor1 = 0b100100;
+        wait(3);
         semafor2 = 0b10010;         //Semafor 2 pali se crveno svjetlo za aute
-        wait(5);
+        wait(3);
         semafor1 = 0b110100;       //Semafor 1 pali se žuto svjetlo za aute
-        semafor2 = 0b10010;
-        wait(5);
+        wait(1);
         pritisnuto=false;
         gotovo=false;
     }
 }
 int main()
 {
+    button.mode(PullUp);
     button.fall(&gumb);
-
     echo.rise(&startTimer);
     echo.fall(&stopTimer);
+    echo_2.rise(&startTimer_2);
+    echo_2.fall(&stopTimer_2);
 
     pj.attach(&pjesaci,0.5);
 
     while(1) {
-        led5=1;
-        wait(1);
+        
         semafor1 = 0b001100;        //Semafor 1 upaljeno zeleno za aute, a crveno za pješake
         semafor2 = 0b10001;         //Semafor 2 upaljeno crveno za aute, a zeleno za pješake
-        wait (5);                  // zeleno na glavnoj cesti
-        semafor1 = 0b001100;
+        wait (15);                  
         semafor2 = 0b10010;         //Semafor 2 pali se crveno svijetlo za pješake
-        wait(5);
+        wait(3);
         semafor1 = 0b010100;        //Semafor 1 pali se žuto svjetlo za aute
-        semafor2 = 0b10010;
+        wait(3);
+        semafor1 = 0b100100;        //Semafor 1 pali se crveno svjetlo za aute
+        wait(3);
+        semafor1 = 0b100101;        //Semafor 1 pali se strelica za skretanje u lijevo
         wait(5);
-        semafor1 = 0b100100;        //Semafor 1 pali se crveno svjetlo za aute
-        semafor2 = 0b10010;
-        wait(1);
-        semafor1 = 0b100101;        //Semafor 1 pali se strelica za skretanje u lijevo
-        semafor2 = 0b10010;
-        wait(2);
+        semafor1 = 0b100100;        //Semafor 1 gasi se strelica za skretanje u lijevo
         trigger = 1;
         wait_us(10);
         trigger = 0;
         wait(1);
         float distance = t.read() * 1e6 / 58;
-        pc.printf("------ %f\n",distance);
         t.reset();
-        if (distance >= 10 && distance <= 20) {
+        if (distance <= 5) {
             pritisnuto=true;
             gotovo=true;
         }
-        if(pritisnuto==true){
-            gotovo=true;}
-        semafor1 = 0b100100;
-        wait(2);
-        semafor1 = 0b110100;        
-        wait(5);    
+        trigger_2 = 1;
+        wait_us(10);
+        trigger_2 = 0;
+        wait(1);
+        float distance_2 = t_2.read() * 1e6 / 58;
+        t_2.reset();
+        if (distance_2 <= 5) {
+            pritisnuto=true;
+            gotovo=true;
+        }
+        if(pritisnuto==true) {
+            gotovo=true;
+        }
+        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.
+        wait(1);
+        semafor1 = 0b110100;
+        wait(3);
     }
 }
\ No newline at end of file