TVZ, Spec Elo, Mikroupravljaci, Popunjenost garaze

Dependencies:   mbed SwitchLED TextLCD BluetoothSerial

Program prati koliko je auti trenutno u garaži pomoću IR senzora HW-201 (postavljeno na max. 7 auti) i ispisuje stanje na LDC display-u. U koliko ima slobodnih mjesta zelena LED blinka i ispisuje se broj slobodnih mjesta. Kad broj slobodnih mjesta dođe na 0, ispisuje se "Nema slobodnih mjesta i pali se crvena LED. Prilikom pritiska na user tipkalo B1 prekida se kod i ispisuje se "Pozar u garazi".

Revision:
0:6f4570a58585
diff -r 000000000000 -r 6f4570a58585 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Feb 22 12:43:28 2022 +0000
@@ -0,0 +1,67 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "SwitchLED.h"
+TextLCD lcd(D4, D5, D9, D10, D11, D12); //rs,e,d4,d5,d6,d7
+// TextLCD lcd(D4, D5, D9, D10, D11, D12,TextLCD::LCD8x2);
+DigitalIn SIG1(A0);
+DigitalIn SIG2(A1);
+Switch redled(D6);
+DigitalOut LEDslobodno(D7);
+InterruptIn button(USER_BUTTON);
+Ticker Slobodno;
+int n=7, i=7, j=0;    // maksimalan kapacitet garaže, trenutan broj auti, sljedeći broj auti
+int Counter(DigitalIn SIG1, DigitalIn SIG2,int n, int j);
+void flip(){
+    LEDslobodno = !LEDslobodno;
+}
+void alarm(void);
+int main()
+{
+    LEDslobodno=0;
+    while(1) {
+        button.rise(&alarm);
+        if(SIG1 || SIG2) {
+            j=Counter(SIG1, SIG2, n, j);
+            if(j==n && i==(n-1)) { //nema slobodnih mjesta i pali R_LED
+                redled.SW();
+            }
+            if(j==n ) { //nema slobodnih mjesta i pali R_LED
+                Slobodno.detach();
+                LEDslobodno=0;
+                lcd.printf("Nema slobodnih mjesta");
+            }
+            if(i==n && j==(n-1)) { //Gasi R_LED kad ima slobodnih mjesta
+                redled.SW();
+            }
+            i=j;
+            if(i<n) {
+                Slobodno.attach(&flip,1);
+                lcd.printf("Slobodno: %d",n-i); //ima slobodnih mjesta, ispis na ekran i blinkanje G_LED
+            }
+        }
+        wait(2);
+        lcd.cls();
+    }
+}
+int Counter(DigitalIn SIG1, DigitalIn SIG2, int n, int j)
+{
+
+    if(SIG1 && j>0 && SIG2==0) {
+        j--;
+    }
+    if(SIG2==1 && j<n && j!=n && SIG1==0) {
+        j++;
+    }
+    return j;
+}
+void alarm()
+{
+    while(1) {
+        LEDslobodno=0;
+        lcd.cls();
+        lcd.printf("Pozar u garazi"); //Požar u garaži
+        wait(20);
+        break;
+    }
+
+}