electro

Dependencies:   mbed mbed-os KeypadLib TextLCD

Revision:
4:2636fe1c6527
Parent:
3:a4994da37d1f
Child:
5:9869290cb13f
diff -r a4994da37d1f -r 2636fe1c6527 electrocoagulador_final.cpp
--- a/electrocoagulador_final.cpp	Sat Mar 02 04:29:55 2019 +0000
+++ b/electrocoagulador_final.cpp	Sat Mar 02 18:53:32 2019 +0000
@@ -1,7 +1,7 @@
 #include "mbed.h"
 #include "keypad.h"
 #include "TextLCD.h"
-#include "stdlib.h"
+#include "stdlib.h" //opcional
 
 /*******************ELECTROVALVULAS********************/
 
@@ -9,12 +9,17 @@
 DigitalOut E_2(D9,0);             //Control de electrovalvula 2
 DigitalOut E_3(D10,0);             //Control de electrovalvula 3
 DigitalOut E_4(D12,0);             //Control de electrovalvula 4
-AnalogIn sensor_nivel(A0);      //Sensor nivel tanque 1
+AnalogIn sensor_level(A0);      //Sensor nivel tanque 1
+PwmOut motor(PA_5);             //variable temporal para el motor (se cambiará después)
 /*****************************************************/
 
 /*******************INTERRUPCIONES********************/
 
 InterruptIn button(USER_BUTTON);
+Ticker check_level;
+Ticker up;
+Ticker down;
+
 Timeout t_1;
 Timeout t_2;
 Timeout t_3;
@@ -27,7 +32,10 @@
 int temp_user_4=0;                      //tiempo tope de vaciado de residuos en el tanque 2
 
 
-
+//timers
+Timer timer_1;
+Timer timer_2;
+Timer timer_3;
 
 /********************TECLADO Y LCD***********************/
 
@@ -55,6 +63,13 @@
     }
 }
 
+void level()
+{
+    if(sensor_level>=3) {
+        E_1=0;
+    }
+}
+
 void electro_1()
 {
     E_1=!E_1;
@@ -74,6 +89,33 @@
 {
     E_4=!E_4;
 }
+
+void pwm_rise()
+{
+    if(keypad.getKey()=='7') {
+        double n=n+0.003;
+        if(n>=1) {
+            n=1;
+        }
+        motor.period(0.5);      // 4 second period
+        motor.write(n);         // % of duty cycle, relative to period
+        wait(150);
+    }
+}
+
+void pwm_fall()
+{
+    if(keypad.getKey()=='8') {
+        double n=n-0.003;
+        if(n<0) {
+            n=0;
+        }
+        motor.period(0.5);      // 4 second period
+        motor.write(n);         // % of duty cycle, relative to period
+        wait(150);
+    }
+}
+
 /***********************MAIN***************************/
 
 int main()
@@ -87,8 +129,8 @@
     lcd.printf("electrocoagular\n");
     wait(1.5);
     lcd.cls();
-
-
+    down.attach(&pwm_fall,0.013);
+    up.attach(&pwm_rise,0.011);
 
 
     while(1) {
@@ -176,8 +218,31 @@
 
         /***********************COMIENZA CONTROL***********************/
         if(key=='D' && temp_user_1!=0) {
-            t_1.attach(&electro_1,temp_user_1);
-            
+            E_1=1;
+            while(E_1==1) {
+                check_level.attach(&level, 0.5);
+            }
+            t_1.attach(&electro_2,temp_user_1);
+            //motor=1;
+            timer_1.start();
+            while(timer_1.read()>=temp_user_1) {
+                timer_1.stop();
+                motor.write(0); 
+                timer_2.start();
+                while(timer_2.read()<=timer_1) {
+                    E_2=1;
+                }
+                electro_2();
+                timer_2.stop();
+                timer_3.start();
+                while(timer_3.read()<= temp_user_2+temp_user_3+temp_user_4) {
+                    t_2.attach(&electro_3,temp_user_2);
+                    t_3.attach(&electro_3,temp_user_2+temp_user_3);
+                    t_4.attach(&electro_4,temp_user_4);
+                }
+            }
+
+