Electronica / Mbed OS Proyecto2

Dependencies:   Adafruit_GFX

Revision:
1:1d515eb7abf3
Parent:
0:e3755f5769fe
Child:
2:fd3b989cedcd
diff -r e3755f5769fe -r 1d515eb7abf3 main.cpp
--- a/main.cpp	Wed Dec 15 08:47:04 2021 +0000
+++ b/main.cpp	Wed Dec 15 13:22:41 2021 +0000
@@ -3,17 +3,27 @@
 //#include "hcsr04.h"
 Serial pc(USBTX, USBRX); // tx, rx
 Ticker tickerMideDistancia;
+Ticker visualTemp;
 unsigned distancia=1000;
 
-
+AnalogIn senal(A0);
 DigitalIn final1(D9);
 DigitalIn final2(D10);
 DigitalOut step(D2);
 DigitalOut dir(A4);
 DigitalOut enableMotor(D11);
 DigitalIn boton_inicial(D3);
+DigitalOut dirAMotor(D4);//M121
+PwmOut     dirBMotor(D5);//M121
+DigitalOut rele(D6);//Rcal
 
-enum estados {reset, apagado, encendido, motorpalante };
+//InterruptIn encoderA(A2);
+
+Timer t;
+
+float temperatura;
+
+enum estados {reset, apagado, encendido, motorpalante,atras, estatico };
 estados estado;
 
 //HCSR04  usensor(D7,D8); //(PinName TrigPin,PinName EchoPin):
@@ -28,10 +38,10 @@
 void estadoreset()
 {
     if (final1!=1) {
+        enableMotor=1;
         paso(0);
     } else if (final1 ==1) {
         estado = apagado;
-        step=0;
         enableMotor =0;
     }
 }
@@ -40,113 +50,107 @@
 {
     if (boton_inicial==1) {
         enableMotor=1;
-        step = 1;
-        //paso(1);
-        estado= encendido;
-
+        estado= motorpalante;
+        t.reset();
     }
 }
 
-void estadoencendido()
+/*void estadoencendido()
 {
-    if (boton_inicial==0 && final1==1) {
-        enableMotor=1;
-        step = 1;
+    if (boton_inicial==0) {
         paso(1);
         estado = motorpalante;
 
     }
+}*/
+
+void estadomotorpalante()
+{
+//if (final2)
+    if (boton_inicial==0&&final2==0) {
+        paso(1);
+        
+        dirAMotor=1;
+        rele =1;
+
+    } else if (final2==1) {
+        int tiempo=t.read();
+        pc.printf("El tiempo transcurrido es de %d\n",tiempo);
+         pc.printf("La temperatura es de %.4f\n",temperatura);
+        //dirAMotor=0;
+        wait(2.0);
+        //enableMotor=0;
+        //rele=0;
+
+        if (final2==1) {
+            estado=atras;
+        }
+        //Print en pantalla con el Oled.
+    }
 }
 
-void estadomotorpalante(){
-//if (final2)
-if (final1!=1){
-    enableMotor=1;
-    step =1;
-    paso(1);
-    //rele=1;
-    //Encender el motor de arriba
-}}
-
-
-//void mideDistancia()
-//{
-// usensor.start();
-//}
-
-
-
-//void estadoCerrada(){
-//{
-//  if(distancia<10) {
-//      enable=1;
-//       estado=abriendose;
-//       pc.printf("Estado Abriendose, distancia %d\n",distancia);
-//   }
-//}
+void estadoatras()
+{
+    if (final2!=1 && boton_inicial==1 && final1!=1) {
+        enableMotor=0;
+        rele=0;
+        dirAMotor=0;
+        estado= estatico;
+    } else if (final1 ==1) {
+        estado = motorpalante;
+    } else {
+        paso(0);
+    }
+}
 
-//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 muestraTemp(){
+    pc.printf("La temperatura es de %.4f\n",temperatura);
+    }
 
-//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;
-//   }
-//}
-
+ void medir(){
+    
+    float tension=senal.read()*3.3;
+    float Rt= 100e3*((3.3-tension)/tension);
+    temperatura = (3950/(log(Rt/100e3)+(3950/298)))-273.1;
+     }
 int main()
 {
     pc.baud(115200);
+    //visualTemp.attach(&muestraTemp,1.0);
     //tickerMideDistancia.attach(&mideDistancia, 0.5);
     estado=reset;
     step=1;
     enableMotor =1;
     pc.printf("Estado cerrada\n");
+    t.start();
     while(1) {
+       medir();
         //distancia=usensor.get_dist_cm();
         switch ( estado ) {
+     
             case reset:
                 estadoreset();
+                pc.printf("Estado reset\n");
                 break;
             case apagado:
-                pc.printf("HOLI");
                 estadoapagado();
+                pc.printf("Estado apagado\n");
                 break;
-            case encendido:
-                pc.printf("HOLI2");
-                estadoencendido();
+            /* case encendido:
+                 pc.printf("HOLI2");
+                 estadoencendido();
+                 break;*/
+            case motorpalante:
+                estadomotorpalante();
+                pc.printf("Estado alante\n");
                 break;
-            case motorpalante:
-                pc.printf("ALANTE");
-                // estadomotorpalante();
+            case atras:
+                estadoatras();
+                pc.printf("Estado atras\n");
+                break;
+            case estatico:
+                pc.printf("Estado estatico\n");
+//estadoestatico();
                 break;
                 /*case cerrada:
                     estadoCerrada();