Karanovic_Semafor

Dependencies:   mbed LED

https://os.mbed.com/media/uploads/akaranovi/20201201_212425.jpg

Program se sastoji od: -5x LED-ice od kojih svaka prikazuje jedno stanje na semaforu -1x Integrirano tipkalo za Hardverski interrupt -1x NUCLEO-F072RB pločica mikroupravljača

Program simulira rad semafora za automobile i pješake. Automobilima je zeleno svijetlo 15 sekundi nakon čega se pali zeleno svijetlo za pješake koje traje 7 sekundi. U slučaju pritiska na hardverski interrupt "blinka" žuto svijetlo 10 sekundi nakon čega program nastavlja sa normalnim radom.

Revision:
0:c3966e70a28e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Nov 29 12:09:11 2020 +0000
@@ -0,0 +1,80 @@
+#include "mbed.h"
+#include "led.h"
+Serial pc(USBTX, USBRX);
+LED led1(A0);
+LED led2(D2);
+LED led3(D3);
+LED led4(D4);
+LED led5(D5);
+InterruptIn button(USER_BUTTON);
+Timer automobil;
+Timer pjesak;
+Timer flipper;
+Timer zuta;
+Timer debounce;
+//Funkcija hardverskog interrupta
+void flip()
+{
+    if(debounce.read_ms()>200) {
+        led1.status(0);
+        led3.status(0);
+        led4.status(0);
+        led5.status(0);
+        int i;
+        for(i=0; i<20; i++) {
+            led2.flip();
+            wait(0.5);
+        }
+    }
+    debounce.reset();
+}
+
+int main()
+{
+    pjesak.reset();
+    automobil.reset();
+    debounce.start();
+    button.rise(&flip);
+
+    while(1) {
+
+//Početno stanje LED-ica
+        led1.status(0);
+        led2.status(0);
+        led3.status(1);
+        led4.status(1);
+        led5.status(0);
+
+//Nakon 12.5 sekundi ugasi zeleno svijetlo za automobile
+        automobil.start();
+        if (automobil.read() > 12.5) {
+            led3.flip();
+            
+//Nakon 13 sekundi upali žuto svijetlo za automobile            
+        }
+        if (automobil.read() > 13) {
+            led2.flip();
+//Nakon 15 sekundi upali crveno za automobile i zeleno za pješake
+        }
+        if(automobil.read()>15) {
+            automobil.stop();
+            led1.flip();
+            led2.flip();
+            led4.flip();
+            led5.flip();
+            pjesak.reset();
+            pjesak.start();
+            while(pjesak.read()<7) {
+                if (pjesak.read() > 5)
+                    led2.flip();
+            }
+            automobil.reset();
+            pjesak.stop();
+        }
+
+        led1.flip();
+        led2.flip();
+    }
+
+    return 0;
+}
\ No newline at end of file