![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
electro
Dependencies: mbed mbed-os KeypadLib TextLCD
Diff: electrocoagulador_final.cpp
- Revision:
- 4:2636fe1c6527
- Parent:
- 3:a4994da37d1f
- Child:
- 5:9869290cb13f
--- 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); + } + } + +