TVZ2019 / Mbed 2 deprecated Semafor_upravljan_mikrokontrolerom

Dependencies:   mbed

Revision:
0:a30d2e391254
Child:
1:d78d84688e89
Child:
2:7897e64de2f3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Aug 04 20:00:13 2018 +0000
@@ -0,0 +1,98 @@
+#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;
+Ticker pj;
+InterruptIn button(PC_13);
+InterruptIn echo(PB_15);
+DigitalOut trigger(PB_13);
+bool gotovo=false;
+bool pritisnuto=false;
+void startTimer()
+{
+    t.start();
+}
+
+void stopTimer()
+{
+    t.stop();
+}
+
+void gumb()
+{
+    pritisnuto=true;
+}
+
+void pjesaci()
+{
+    if(pritisnuto==true && gotovo==true) {
+        led5=1;
+        wait(2);
+        semafor1 = 0b001100;
+        semafor2 = 0b10001;         //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);
+        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;
+        semafor2 = 0b01010;         //Semafor 2 pali se žuto svjetlo za aute
+        wait(5);
+        semafor1 = 0b100100;
+        semafor2 = 0b10010;         //Semafor 2 pali se crveno svjetlo za aute
+        wait(5);
+        semafor1 = 0b110100;       //Semafor 1 pali se žuto svjetlo za aute
+        semafor2 = 0b10010;
+        wait(5);
+        pritisnuto=false;
+        gotovo=false;
+    }
+}
+int main()
+{
+    button.fall(&gumb);
+
+    echo.rise(&startTimer);
+    echo.fall(&stopTimer);
+
+    pj.attach(&pjesaci,1);
+
+    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
+        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) {
+            pritisnuto=true;
+        }
+        gotovo=true;
+
+    }
+}
\ No newline at end of file