ultimaact

Dependencies:   mbed Adafruit_GFX DS1820

Revision:
0:8a1a447db446
Child:
1:1e68e882342d
diff -r 000000000000 -r 8a1a447db446 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Dec 09 17:59:02 2021 +0000
@@ -0,0 +1,104 @@
+#include "mbed.h"
+#include "hcsr04.h"
+
+Serial pc(USBTX, USBRX); // tx, rx
+Ticker tickerMideDistancia;
+unsigned distancia=1000;;
+
+
+DigitalIn final1(D10);
+DigitalIn final2(D9);
+DigitalOut step(D13);
+DigitalOut dir(D12);
+DigitalOut enable(D11);
+
+enum estados {cerrada, abriendose, cerrandose, abierta};
+estados estado;
+
+HCSR04  usensor(D7,D8); //(PinName TrigPin,PinName EchoPin):
+
+void mideDistancia()
+{
+    usensor.start();
+}
+
+void paso(int d)
+{
+    dir=d;
+    step=1;
+    wait_us(100);
+    step=0;
+    wait_us(900);
+}
+
+void estadoCerrada()
+{
+    if(distancia<10) {
+        enable=1;
+        estado=abriendose;
+        pc.printf("Estado Abriendose, distancia %d\n",distancia);
+    }
+}
+
+void estadoAbriendose()
+{
+    if((final1==1)&&(distancia<10)) {
+        estado=abierta;
+        enable=0;
+    } else if((final1==1)&&(distancia>=10)) {
+        enable=1;
+        estado=cerrandose;
+    } else {
+        paso(1);
+        pc.printf("paso\n");
+        
+    }
+}
+
+void estadoCerrandose(){
+      if(distancia<10) {
+        estado=abriendose;
+        enable=1;
+    } else if(final2==1) {
+        estado=cerrada;
+        enable=0;
+    } else {
+        paso(0);
+        pc.printf("paso\n");
+    }
+}
+
+void estadoAbierta()
+{
+    if (distancia>=10) {
+        enable=1;
+        estado=cerrandose;
+    }
+}
+
+int main()
+{
+    pc.baud(115200);
+    tickerMideDistancia.attach(&mideDistancia, 0.5);
+    estado=cerrada;
+     pc.printf("Estado cerrada\n");
+    while(1) {
+        distancia=usensor.get_dist_cm();
+        switch ( estado ) {
+            case cerrada:
+                estadoCerrada();
+                break;
+            case abriendose:
+                estadoAbriendose();
+                break;
+            case abierta:
+                estadoAbierta();
+                break;
+            case cerrandose:
+                estadoCerrandose();
+                break;
+            default:
+                break;
+        }
+    }
+}