electro

Dependencies:   mbed QEI mbed-os KeypadLib TextLCD

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?

UserRevisionLine numberNew 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