simulacija pokretnih vrata

Dependencies:   mbed libVrata

shema sklopa https://os.mbed.com/media/uploads/styropore/shema.png

Files at this revision

API Documentation at this revision

Comitter:
styropore
Date:
Tue Nov 30 22:18:20 2021 +0000
Commit message:
Pokretna vrata

Changed in this revision

libVrata.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 3e43e4aa5a59 libVrata.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libVrata.lib	Tue Nov 30 22:18:20 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/styropore/code/libVrata/#bcdd86b76a57
diff -r 000000000000 -r 3e43e4aa5a59 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 30 22:18:20 2021 +0000
@@ -0,0 +1,107 @@
+#include "mbed.h"
+#include "libVrata.h"
+
+DigitalOut ledCrvena(p15),ledZuta(p16);
+DigitalOut led1(LED1), led4(LED4);
+
+InterruptIn tipkaloCrveno(p11), tipkaloPlavo(p12);
+
+Ticker blink1, blink2;
+Timer vrijemeZatvaranja;
+
+AnalogIn aIn19(p19), aIn20(p20);  // analogni ulazi fotootpornika
+
+Vrata vrata(p21);
+
+bool senzorAktiviran(int rbr) // 0 - ulaz,   1 - izlaz
+{
+    if ((rbr == 0) && (aIn19 < 0.5f)) return true;
+    if ((rbr == 1) && (aIn20 < 0.5f)) return true;
+    return false;
+}
+
+void blinkCrvenaLed()
+{
+    ledCrvena = ! ledCrvena;
+}
+
+void blinkZutaLed()
+{
+    ledZuta = !ledZuta;
+}
+
+void otvoriVrata()
+{
+    blink1.attach(&blinkCrvenaLed, 0.1);
+    vrata.otvori();
+    blink1.detach();
+    ledCrvena = 0;
+}
+
+void zatvoriVrata()
+{
+    blink1.attach(&blinkCrvenaLed, 0.1);
+    vrata.zatvori();
+    blink1.detach();
+    ledCrvena = 0;
+}
+
+void automatikaToggle()  // interrupt plava tipka - izbor rezima rada
+{
+    vrata.rucno = !vrata.rucno;
+    ledZuta = vrata.rucno;
+    wait_ms(200);
+}
+
+void pokreniVrataRucno()   // rucno upravljanje vratima
+{
+    if(vrata.rucno) {
+        if(vrata.rad < 0) otvoriVrata();
+        else if(vrata.rad > 0) zatvoriVrata();
+        wait_ms(200);
+    }
+}
+
+int main()
+{
+    bool zutaBlink = false; // uključen ticker blinkanja zute Led
+    otvoriVrata();  // prvi setup vrata
+    wait(2);        //
+    zatvoriVrata(); //
+
+    tipkaloCrveno.mode(PullDown);
+    tipkaloPlavo.mode(PullDown);
+    tipkaloPlavo.rise(&automatikaToggle);
+    tipkaloCrveno.rise(&pokreniVrataRucno);
+    ledZuta = vrata.rucno;
+    
+    while(1) {
+        led1 = senzorAktiviran(1);
+        led4 = senzorAktiviran(0);
+        if(!vrata.rucno) { // automatski
+            ledZuta = vrata.rucno;
+            if(senzorAktiviran(0) || senzorAktiviran(1)) {
+                otvoriVrata();
+                vrijemeZatvaranja.reset();
+                vrijemeZatvaranja.start();
+            }
+            if(vrijemeZatvaranja.read() > 5.0) {  // automatsko zatvaranje vrata nakon 5 sec
+                zatvoriVrata();
+                vrijemeZatvaranja.stop();
+                vrijemeZatvaranja.reset();
+            }
+        } else {  // rucno
+            if(senzorAktiviran(0) || senzorAktiviran(1)) {
+                if(!zutaBlink) {
+                    blink2.attach(&blinkZutaLed, 0.2);
+                    zutaBlink = true;
+                }
+            } else if (zutaBlink) {
+                blink2.detach();
+                zutaBlink = false;
+                ledZuta = vrata.rucno;
+            }
+        }
+        wait_ms(20);
+    }
+}
diff -r 000000000000 -r 3e43e4aa5a59 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Nov 30 22:18:20 2021 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file