proyectotecnicas
/
general
menu-teclado-lcd-pwm(funca todo) (y el puerto serie tambien)
Revision 9:364316a55827, committed 2015-12-16
- Comitter:
- josedaparte
- Date:
- Wed Dec 16 01:19:25 2015 +0000
- Parent:
- 8:5cfa4b38ddf1
- Commit message:
- programacompleto;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 5cfa4b38ddf1 -r 364316a55827 main.cpp --- a/main.cpp Mon Dec 14 15:53:14 2015 +0000 +++ b/main.cpp Wed Dec 16 01:19:25 2015 +0000 @@ -14,16 +14,60 @@ AnalogIn externo(PTC2),interno(PTB3), presionin(PTB2), pident(PTB1); AnalogOut vref(PTE30); PwmOut pwmsal(PTD2); +DigitalOut evalvula(PTE1); //declaracion de variables char tipo, modo = 'M'; -float tinterno, texterno, presion, casexterno, casinterno, caspresion, valorpwm, valorpid, vrefe = 1; -float Tres=0, optimo=0; -int i = 0, j = 0, sel = 1, hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, temp = 26; +float tinterno, texterno, presion, casexterno, casinterno, caspresion, valorpwm, valorpid, vrefe; +float tres, optimo=0; +int i = 0, j = 0, sel = 1, hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, temp = 26, cont=0, ev= 1; int hh1, hh0, mm0, mm1, B1, B2, B3, B4, num, tempauto = 0, tipobanio = 0, pdig, sdig, tempmanual = 40, set = 0; void menu(); void selec(); void func(); + +void funpresion() //funcion de vaciado llenado +{ + caspresion = presionin.read() * 3.3; + pc.printf("analogin %.2f\n\r", caspresion); + + switch(tipobanio) { + case 0: //baño rapido + if(caspresion >= 2.2) { //se lleno + pc.printf("se lleno y apago ev\n\r"); + ev = 0; + } + if(caspresion <= 1.53) { //se vacio + cont++; + pc.printf("se vacio\n\r"); + pc.printf("%d\n\r", cont); + if(cont > 20) { //contador + ev = 1; + cont = 0; + pc.printf("se activa la ev\n\r"); + } + } + break; + case 1: //baño normal + if(caspresion >= 2.6) { //se lleno + pc.printf("se lleno y apago ev\n\r"); + ev = 0; + } + if(caspresion <= 1.53) { //se vacio + cont++; + pc.printf("se vacio\n\r"); + pc.printf("%d\n\r", cont); + if(cont == 20) { //contador + ev = 1; + cont = 0; + pc.printf("se activa la ev\n\r"); + } + } + break; + } //fin switch + evalvula.write(ev); +} //fin funcion + //recibe tension de referencia cambiar por que reciba la de el teclado o del externo void modotemp() { @@ -34,45 +78,47 @@ if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) { optimo= -(11/10*texterno)+50; if (optimo > 25 && optimo < 65) { - Tres = optimo; + tres = optimo; } else { - Tres = tinterno; + tres = tinterno; } } else { - Tres = tinterno; + tres = tinterno; } break; case 1: if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) { optimo= -(11/10*texterno)+55; if (optimo > 25 && optimo < 65) { - Tres = optimo; + tres = optimo; } else { - Tres = tinterno; + tres = tinterno; } } else { - Tres = tinterno; + tres = tinterno; } break; case 2: if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) { optimo= -(11/10*texterno)+65; if (optimo > 25 && optimo < 65 ) { - Tres = optimo; + tres = optimo; } else { - Tres = tinterno; + tres = tinterno; } } else { - Tres = tinterno; + tres = tinterno; } break; } } if (modo == 'M') { - Tres = tempmanual; + tres = tempmanual; } - vrefe = ((Tres * 8 / 100) - 2) / 3.3; + vrefe = ((tres * 8 / 100) - 2) / 3.3; + pc.printf("vrefe= %.2f tres= %.0f\n\r",vrefe, tres); + wait(2); } //funcion del pwm @@ -80,15 +126,20 @@ { if(vrefe <= 1 && vrefe >= 0) { vref.write(vrefe); + pc.printf("vrefe= %.4f de salida vref\n\r",vrefe); } valorpid = pident.read() * 3.3; - if(valorpid >1) + if(valorpid >1){ pwmsal.write(1); + pc.printf("vrefe= %.4f del 1 if\n\r",vrefe);} else if(valorpid <= 1 && valorpid >= 0.6) { valorpwm = 2.5 * valorpid - 1.5; + pc.printf("vrefe= %.4f del 2 if\n\r",vrefe); pwmsal.write(valorpwm); - } else + } else{ pwmsal.write(0); + pc.printf("vrefe= %.4f del else\n\r",vrefe);} + pc.printf("valorpid=%.4f\n\r",valorpid); } //funcion de set de hora @@ -111,7 +162,7 @@ } } else //fin de set 1er digito hora ok if(i == 1) { - pc.printf("aca ingresaria 2 dig hora\n\r"); //inicio 2do digito hora + //inicio 2do digito hora if(hh1 == 2 && num > 4) { lcd.locate(0,0); lcd.printf("valor invalido"); @@ -127,8 +178,7 @@ i++; } } else //fin 2do digito hora - if(i == 2) { - pc.printf("aca ingresaria 1 dig seg\n\r"); //inicio 1er digito minuto + if(i == 2) { //inicio 1er digito minuto if(num > 6) { lcd.locate(0,0); lcd.printf("valor invalido"); @@ -144,8 +194,7 @@ i++; } } else //fin 2do digito minuto - if(i == 3) { - pc.printf("aca ingresaria 2 dig seg\n\r"); //inicio 2do digito minuto + if(i == 3) { //inicio 2do digito minuto if(mm1 == 6) { mm0 = 0; } else { @@ -182,7 +231,6 @@ B3 = key3.read(); B4 = key4.read(); num = 2*2*2*B1 + 2*2*B2 + 2*B3 + B4; - pc.printf("llama a func\n\r"); if(num == 10) { set = 0; menu(); @@ -191,10 +239,9 @@ selec(); } else if(num != 10 && num != 11) { - pc.printf("antes del case\n\r"); + switch(set) { case 0: - pc.printf("case 0"); break; case 1: //seteo hora sethora(); @@ -210,8 +257,7 @@ i = 0; } break; //fin pasa hora al reloj - case 2: - pc.printf("ingreso temperaturas de auto\n\r"); //set temperaturas auto + case 2: //set temperaturas auto if(num == 0 || num == 1 || num == 2) { tempauto = num; lcd.locate(0,0); @@ -234,7 +280,6 @@ } break; case 3: //tipo de baño - pc.printf("ingreso tipo banio %d\n\r",num); if(num == 0 || num == 1) { tipobanio = num; lcd.locate(0,0); @@ -245,7 +290,6 @@ wait(1); lcd.cls(); lcd.printf("tipo banio "); - pc.printf("%.1d\n\r", tipobanio); set = 0; } else { lcd.locate(0,0); @@ -256,7 +300,6 @@ } break; case 4: //set de horarios - pc.printf("case 4\n\r"); sethora(); if(i == 4 && j == 0) { //pasa la hora al reloj horain = (hh1 * 10) + hh0; @@ -266,8 +309,6 @@ lcd.printf("horario "); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - pc.printf("hora de inicio %d:%d\n\r",horain,minin); - pc.printf("hora de fin %d:%d\n\r",horafin,minfin); i = 0; j = 1; } @@ -279,8 +320,6 @@ lcd.printf("horario "); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - pc.printf("hora de inicio %d:%d\n\r",horain,minin); - pc.printf("hora de fin %d:%d\n\r",horafin,minfin); i = 0; j = 0; } @@ -288,16 +327,15 @@ case 5: //set temperatura manual if(i == 0) { pdig = num; - pc.printf("%.1d\n\r", pdig); } else if(i == 1) { sdig = num; - pc.printf("%.1d\n\r", sdig); tempmanual = (pdig * 10) + sdig; if(tempmanual >= 65) { - tempmanual = 65;} - if(tempmanual <= 25){ - tempmanual = 25;} - pc.printf("%.1d\n\r", tempmanual); + tempmanual = 65; + } + if(tempmanual <= 25) { + tempmanual = 25; + } imprimehora(); lcd.locate(0,0); lcd.printf("temperatura a %d",tempmanual); @@ -311,7 +349,6 @@ } break; case 6: //tipo de banio manual - pc.printf("ingreso tipo banio %d\n\r",num); if(num == 0 || num == 1) { tipobanio = num; lcd.locate(0,0); @@ -322,7 +359,6 @@ wait(1); lcd.cls(); lcd.printf("tipo banio "); - pc.printf("%.1d\n\r", tipobanio); set = 0; } else { lcd.locate(0,0); @@ -333,8 +369,6 @@ } break; } - pc.printf("salgo case\n\r"); - pc.printf("%d",i); } } @@ -431,17 +465,14 @@ menu(); break; case 1: - pc.printf("aca ingresaria la hora\r\n"); set = 1; break; case 5: - pc.printf("aca ingresaria la temperatura\r\n"); lcd.locate(0,0); lcd.printf(" 0_F 1_N 2_C"); set = 2; break; case 6: - pc.printf("aca ingresaria el tipo de banio\r\n"); lcd.locate(0,0); lcd.printf(" 0_rap 1_norm"); set = 3; @@ -451,7 +482,6 @@ menu(); //salida1 break; case 8: - pc.printf("aca ingresaria la temperatura2\r\n"); lcd.locate(0,0); lcd.printf("ingrese temperat"); set = 5; @@ -461,11 +491,9 @@ menu(); break; case 9: - pc.printf("aca ingresaria el horario\r\n"); set = 4; break; case 10: - pc.printf("aca ingresaria tipo banio\r\n"); lcd.locate(0,0); lcd.printf(" 0_rap 1_norm"); set = 6; @@ -503,21 +531,11 @@ texterno = (casexterno + 0.2) * 100 / 5; casinterno = interno.read() * 3.3; tinterno = (casinterno + 2) * 100 / 8; -//sensor de presion - caspresion = presionin.read() * 3.3; - if(caspresion >= 2.34) { - - } - if(caspresion >= 1.68 && caspresion <= 1.85) { - - } - if(caspresion <= 1.03) { - - } lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); pwm(); + funpresion(); wait(1); } //fin wile } \ No newline at end of file