![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
electro
Dependencies: mbed QEI mbed-os KeypadLib TextLCD
electrocoagulador_final.cpp@5:9869290cb13f, 2019-03-04 (annotated)
- Committer:
- evanegasa
- Date:
- Mon Mar 04 18:24:53 2019 +0000
- Revision:
- 5:9869290cb13f
- Parent:
- 4:2636fe1c6527
- Child:
- 6:0d2b3f985e41
Teclado
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
afsaavedram | 0:6cde030caebb | 1 | #include "mbed.h" |
afsaavedram | 0:6cde030caebb | 2 | #include "keypad.h" |
afsaavedram | 0:6cde030caebb | 3 | #include "TextLCD.h" |
afsaavedram | 4:2636fe1c6527 | 4 | #include "stdlib.h" //opcional |
afsaavedram | 0:6cde030caebb | 5 | |
afsaavedram | 0:6cde030caebb | 6 | /*******************ELECTROVALVULAS********************/ |
afsaavedram | 0:6cde030caebb | 7 | |
afsaavedram | 3:a4994da37d1f | 8 | DigitalOut E_1(D8,0); //Control de electrovalvula 1 |
afsaavedram | 3:a4994da37d1f | 9 | DigitalOut E_2(D9,0); //Control de electrovalvula 2 |
afsaavedram | 3:a4994da37d1f | 10 | DigitalOut E_3(D10,0); //Control de electrovalvula 3 |
afsaavedram | 3:a4994da37d1f | 11 | DigitalOut E_4(D12,0); //Control de electrovalvula 4 |
afsaavedram | 4:2636fe1c6527 | 12 | AnalogIn sensor_level(A0); //Sensor nivel tanque 1 |
afsaavedram | 4:2636fe1c6527 | 13 | PwmOut motor(PA_5); //variable temporal para el motor (se cambiará después) |
afsaavedram | 0:6cde030caebb | 14 | /*****************************************************/ |
afsaavedram | 0:6cde030caebb | 15 | |
evanegasa | 5:9869290cb13f | 16 | |
evanegasa | 5:9869290cb13f | 17 | |
afsaavedram | 0:6cde030caebb | 18 | /*******************INTERRUPCIONES********************/ |
afsaavedram | 0:6cde030caebb | 19 | |
afsaavedram | 0:6cde030caebb | 20 | InterruptIn button(USER_BUTTON); |
afsaavedram | 4:2636fe1c6527 | 21 | Ticker check_level; |
afsaavedram | 4:2636fe1c6527 | 22 | Ticker up; |
afsaavedram | 4:2636fe1c6527 | 23 | Ticker down; |
afsaavedram | 4:2636fe1c6527 | 24 | |
afsaavedram | 0:6cde030caebb | 25 | Timeout t_1; |
afsaavedram | 0:6cde030caebb | 26 | Timeout t_2; |
afsaavedram | 0:6cde030caebb | 27 | Timeout t_3; |
afsaavedram | 0:6cde030caebb | 28 | Timeout t_4; |
afsaavedram | 0:6cde030caebb | 29 | |
afsaavedram | 0:6cde030caebb | 30 | //tiempos de usuario |
evanegasa | 5:9869290cb13f | 31 | int temp_user_1=5; //tiempo tope de electrocoagulacion |
evanegasa | 5:9869290cb13f | 32 | int temp_user_2=5; //tiempo tope de reposo de la vinaza |
evanegasa | 5:9869290cb13f | 33 | int temp_user_3=5; //tiempo tope de vaciado del agua en el tanque 2 |
evanegasa | 5:9869290cb13f | 34 | int temp_user_4=5; //tiempo tope de vaciado de residuos en el tanque 2 |
evanegasa | 5:9869290cb13f | 35 | int pwm=5; |
afsaavedram | 0:6cde030caebb | 36 | |
afsaavedram | 0:6cde030caebb | 37 | |
afsaavedram | 4:2636fe1c6527 | 38 | //timers |
afsaavedram | 4:2636fe1c6527 | 39 | Timer timer_1; |
afsaavedram | 4:2636fe1c6527 | 40 | Timer timer_2; |
afsaavedram | 4:2636fe1c6527 | 41 | Timer timer_3; |
afsaavedram | 0:6cde030caebb | 42 | |
afsaavedram | 0:6cde030caebb | 43 | /********************TECLADO Y LCD***********************/ |
afsaavedram | 0:6cde030caebb | 44 | |
afsaavedram | 0:6cde030caebb | 45 | // rs, e,d4,d5,d6,d7 |
afsaavedram | 0:6cde030caebb | 46 | TextLCD lcd(PC_8,PC_9,PC_10,PC_11,PC_12,PD_2); |
afsaavedram | 0:6cde030caebb | 47 | |
afsaavedram | 0:6cde030caebb | 48 | |
afsaavedram | 0:6cde030caebb | 49 | Keypad keypad(D3, D2, D1, D0, D7, D6, D5, D4); |
afsaavedram | 0:6cde030caebb | 50 | float num=0; |
afsaavedram | 0:6cde030caebb | 51 | char cadena[3]= {' ',' ',' '}; |
afsaavedram | 0:6cde030caebb | 52 | int llena=0; //verificar que la entrada es de 3 numeros |
evanegasa | 5:9869290cb13f | 53 | int blinker = 1; |
afsaavedram | 0:6cde030caebb | 54 | |
afsaavedram | 0:6cde030caebb | 55 | /*********************FUNCIONES**************************/ |
afsaavedram | 0:6cde030caebb | 56 | |
afsaavedram | 0:6cde030caebb | 57 | void stop() //STOP |
afsaavedram | 0:6cde030caebb | 58 | { |
afsaavedram | 0:6cde030caebb | 59 | while(1) { |
afsaavedram | 0:6cde030caebb | 60 | lcd.cls(); |
afsaavedram | 3:a4994da37d1f | 61 | lcd.printf(" STOP!"); |
afsaavedram | 3:a4994da37d1f | 62 | lcd.locate(0,1); |
afsaavedram | 3:a4994da37d1f | 63 | lcd.printf(" PLEASE RESET"); |
afsaavedram | 3:a4994da37d1f | 64 | wait_ms(150); |
afsaavedram | 0:6cde030caebb | 65 | } |
afsaavedram | 0:6cde030caebb | 66 | } |
afsaavedram | 0:6cde030caebb | 67 | |
afsaavedram | 4:2636fe1c6527 | 68 | void level() |
afsaavedram | 4:2636fe1c6527 | 69 | { |
afsaavedram | 4:2636fe1c6527 | 70 | if(sensor_level>=3) { |
afsaavedram | 4:2636fe1c6527 | 71 | E_1=0; |
afsaavedram | 4:2636fe1c6527 | 72 | } |
afsaavedram | 4:2636fe1c6527 | 73 | } |
afsaavedram | 4:2636fe1c6527 | 74 | |
afsaavedram | 3:a4994da37d1f | 75 | void electro_1() |
afsaavedram | 0:6cde030caebb | 76 | { |
afsaavedram | 0:6cde030caebb | 77 | E_1=!E_1; |
afsaavedram | 0:6cde030caebb | 78 | } |
afsaavedram | 0:6cde030caebb | 79 | |
afsaavedram | 3:a4994da37d1f | 80 | void electro_2() |
afsaavedram | 0:6cde030caebb | 81 | { |
afsaavedram | 0:6cde030caebb | 82 | E_2=!E_2; |
afsaavedram | 0:6cde030caebb | 83 | } |
afsaavedram | 0:6cde030caebb | 84 | |
afsaavedram | 3:a4994da37d1f | 85 | void electro_3() |
afsaavedram | 0:6cde030caebb | 86 | { |
afsaavedram | 0:6cde030caebb | 87 | E_3=!E_3; |
afsaavedram | 0:6cde030caebb | 88 | } |
afsaavedram | 0:6cde030caebb | 89 | |
afsaavedram | 3:a4994da37d1f | 90 | void electro_4() |
afsaavedram | 0:6cde030caebb | 91 | { |
afsaavedram | 0:6cde030caebb | 92 | E_4=!E_4; |
afsaavedram | 0:6cde030caebb | 93 | } |
afsaavedram | 4:2636fe1c6527 | 94 | |
evanegasa | 5:9869290cb13f | 95 | void printLCD(){ |
evanegasa | 5:9869290cb13f | 96 | while(1){ |
evanegasa | 5:9869290cb13f | 97 | lcd.cls(); |
evanegasa | 5:9869290cb13f | 98 | lcd.locate(0,0); |
evanegasa | 5:9869290cb13f | 99 | lcd.printf("t1=%d",temp_user_1); |
evanegasa | 5:9869290cb13f | 100 | lcd.locate(6,0); |
evanegasa | 5:9869290cb13f | 101 | lcd.printf("t2=%d",temp_user_2); |
evanegasa | 5:9869290cb13f | 102 | lcd.locate(0,1); |
evanegasa | 5:9869290cb13f | 103 | lcd.printf("t3=%d",temp_user_3); |
evanegasa | 5:9869290cb13f | 104 | lcd.locate(6,1); |
evanegasa | 5:9869290cb13f | 105 | lcd.printf("t4=%d",temp_user_4); |
evanegasa | 5:9869290cb13f | 106 | lcd.locate(12,0); |
evanegasa | 5:9869290cb13f | 107 | lcd.printf("PWM"); |
evanegasa | 5:9869290cb13f | 108 | lcd.locate(12,1); |
evanegasa | 5:9869290cb13f | 109 | lcd.printf("%d",pwm); |
evanegasa | 5:9869290cb13f | 110 | wait_ms(350); |
evanegasa | 5:9869290cb13f | 111 | switch(blinker){ |
evanegasa | 5:9869290cb13f | 112 | case 1: |
evanegasa | 5:9869290cb13f | 113 | lcd.locate(0,0); |
evanegasa | 5:9869290cb13f | 114 | lcd.printf("t1= ",temp_user_1); break; |
evanegasa | 5:9869290cb13f | 115 | case 2: |
evanegasa | 5:9869290cb13f | 116 | lcd.locate(6,0); |
evanegasa | 5:9869290cb13f | 117 | lcd.printf("t2= ",temp_user_2); break; |
evanegasa | 5:9869290cb13f | 118 | case 3: |
evanegasa | 5:9869290cb13f | 119 | lcd.locate(0,1); |
evanegasa | 5:9869290cb13f | 120 | lcd.printf("t3= ",temp_user_3); break; |
evanegasa | 5:9869290cb13f | 121 | case 4: |
evanegasa | 5:9869290cb13f | 122 | lcd.locate(6,1); |
evanegasa | 5:9869290cb13f | 123 | lcd.printf("t4= ",temp_user_4); break; |
evanegasa | 5:9869290cb13f | 124 | case 5: |
evanegasa | 5:9869290cb13f | 125 | lcd.locate(12,1); |
evanegasa | 5:9869290cb13f | 126 | lcd.printf(" "); |
evanegasa | 5:9869290cb13f | 127 | default: ; break; |
afsaavedram | 4:2636fe1c6527 | 128 | } |
evanegasa | 5:9869290cb13f | 129 | wait_ms(350); |
evanegasa | 5:9869290cb13f | 130 | } |
afsaavedram | 4:2636fe1c6527 | 131 | } |
afsaavedram | 4:2636fe1c6527 | 132 | |
evanegasa | 5:9869290cb13f | 133 | int getNum(){ |
evanegasa | 5:9869290cb13f | 134 | while(1){ |
evanegasa | 5:9869290cb13f | 135 | char key = keypad.getKey(); |
evanegasa | 5:9869290cb13f | 136 | switch(key) { |
evanegasa | 5:9869290cb13f | 137 | case '0': return 0; |
evanegasa | 5:9869290cb13f | 138 | case '1': return 1; |
evanegasa | 5:9869290cb13f | 139 | case '2': return 2; |
evanegasa | 5:9869290cb13f | 140 | case '3': return 3; |
evanegasa | 5:9869290cb13f | 141 | case '4': return 4; |
evanegasa | 5:9869290cb13f | 142 | case '5': return 5; |
evanegasa | 5:9869290cb13f | 143 | case '6': return 6; |
evanegasa | 5:9869290cb13f | 144 | case '7': return 7; |
evanegasa | 5:9869290cb13f | 145 | case '8': return 8; |
evanegasa | 5:9869290cb13f | 146 | case '9': return 9; |
evanegasa | 5:9869290cb13f | 147 | case 'A': |
evanegasa | 5:9869290cb13f | 148 | blinker++; |
evanegasa | 5:9869290cb13f | 149 | if(blinker==6) blinker=1; return -1; |
evanegasa | 5:9869290cb13f | 150 | default: ; break; |
afsaavedram | 4:2636fe1c6527 | 151 | } |
evanegasa | 5:9869290cb13f | 152 | wait_ms(100); |
afsaavedram | 4:2636fe1c6527 | 153 | } |
evanegasa | 5:9869290cb13f | 154 | } |
afsaavedram | 4:2636fe1c6527 | 155 | |
afsaavedram | 0:6cde030caebb | 156 | /***********************MAIN***************************/ |
afsaavedram | 0:6cde030caebb | 157 | |
afsaavedram | 0:6cde030caebb | 158 | int main() |
afsaavedram | 0:6cde030caebb | 159 | { |
afsaavedram | 0:6cde030caebb | 160 | button.rise(&stop); |
afsaavedram | 0:6cde030caebb | 161 | keypad.enablePullUp(); |
afsaavedram | 0:6cde030caebb | 162 | wait(1); |
afsaavedram | 0:6cde030caebb | 163 | lcd.locate(0,0); |
afsaavedram | 0:6cde030caebb | 164 | lcd.printf(" Control para\n"); |
afsaavedram | 0:6cde030caebb | 165 | lcd.locate(0,1); |
afsaavedram | 0:6cde030caebb | 166 | lcd.printf("electrocoagular\n"); |
afsaavedram | 3:a4994da37d1f | 167 | wait(1.5); |
afsaavedram | 0:6cde030caebb | 168 | lcd.cls(); |
evanegasa | 5:9869290cb13f | 169 | int a=0; |
evanegasa | 5:9869290cb13f | 170 | int b=0; |
evanegasa | 5:9869290cb13f | 171 | int c=0; |
afsaavedram | 2:4b27d3d7341a | 172 | |
evanegasa | 5:9869290cb13f | 173 | Thread lcdprint; |
evanegasa | 5:9869290cb13f | 174 | lcdprint.start(printLCD); |
evanegasa | 5:9869290cb13f | 175 | |
evanegasa | 5:9869290cb13f | 176 | while(1) { |
evanegasa | 5:9869290cb13f | 177 | setvalue: |
evanegasa | 5:9869290cb13f | 178 | a=100*getNum(); |
evanegasa | 5:9869290cb13f | 179 | wait_ms(250); |
evanegasa | 5:9869290cb13f | 180 | if(a<0)goto setvalue; |
evanegasa | 5:9869290cb13f | 181 | b=10*getNum(); |
evanegasa | 5:9869290cb13f | 182 | wait_ms(250); |
evanegasa | 5:9869290cb13f | 183 | if(b<0)goto setvalue; |
evanegasa | 5:9869290cb13f | 184 | c=getNum(); |
evanegasa | 5:9869290cb13f | 185 | wait_ms(250); |
evanegasa | 5:9869290cb13f | 186 | if(c<0)goto setvalue; |
evanegasa | 5:9869290cb13f | 187 | |
evanegasa | 5:9869290cb13f | 188 | switch(blinker){ |
evanegasa | 5:9869290cb13f | 189 | case 1: |
evanegasa | 5:9869290cb13f | 190 | temp_user_1=a+b+c; break; |
evanegasa | 5:9869290cb13f | 191 | case 2: |
evanegasa | 5:9869290cb13f | 192 | temp_user_2=a+b+c; break; |
evanegasa | 5:9869290cb13f | 193 | case 3: |
evanegasa | 5:9869290cb13f | 194 | temp_user_3=a+b+c; break; |
evanegasa | 5:9869290cb13f | 195 | case 4: |
evanegasa | 5:9869290cb13f | 196 | temp_user_4=a+b+c; break; |
evanegasa | 5:9869290cb13f | 197 | case 5: |
evanegasa | 5:9869290cb13f | 198 | pwm=a+b+c; break; |
afsaavedram | 3:a4994da37d1f | 199 | } |
evanegasa | 5:9869290cb13f | 200 | wait_ms(150); |
afsaavedram | 0:6cde030caebb | 201 | |
afsaavedram | 2:4b27d3d7341a | 202 | }//termina while de main |
afsaavedram | 2:4b27d3d7341a | 203 | }//termina main |