proyectotecnicas
/
final-completo
final
Fork of general by
Diff: main.cpp
- Revision:
- 5:c047b49f74e7
- Parent:
- 4:96c3f113f0b0
- Child:
- 6:eb50c82e7d93
--- a/main.cpp Tue Dec 01 15:56:26 2015 +0000 +++ b/main.cpp Mon Dec 07 19:27:17 2015 +0000 @@ -2,114 +2,112 @@ #include "TextLCD.h" #include "AnalogIn.h" +//clases +Timer t; Serial pc(USBTX, USBRX); TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); -Timer t; -DigitalIn key1(PTE31); -DigitalIn key2(PTE19); -DigitalIn key3(PTE18); -DigitalIn key4(PTE17); +//entradas +DigitalIn key1(PTE31), key4(PTE17), key2(PTE19), key3(PTE18); InterruptIn Enable(PTA13); -AnalogIn externo(PTC2); -AnalogIn interno(PTB3); +AnalogIn externo(PTC2),interno(PTB3), presionin(PTB2), pwment(PTB1); +PwmOut pwmsal(PTD2); -int temp = 26; -char tipo; -int sel = 1; -float casinterno; -float casexterno; -float tinterno; -float texterno; -char modo = 'M'; -int set = 0; -int pdig, sdig, val; -int i = 0; -int tipobanio = 0; -int tempauto=0; -int hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, j = 0; -int B1,B2,B3,B4,num; -int hh1,hh0,mm0,mm1; +//declaracion de variables +char tipo, modo = 'M'; +float tinterno, texterno, presion, casexterno, casinterno, caspresion, valorpwm; +int i = 0, j = 0, sel = 1, hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, temp = 26; +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 sethora(){ - if(i == 0) { //set de primer digito hora - if(num > 2){ - lcd.locate(0,0); - lcd.printf("valor invalido"); - wait(.7); - func(); - } - else{ - hh1 = num; - lcd.cls(); - lcd.printf("%dx:xx",hh1); - lcd.locate(0,1); - lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - wait(.7); - i++;}}else //fin de set 1er digito hora ok - if(i == 1){ - pc.printf("aca ingresaria 2 dig hora\n\r"); //inicio 2do digito hora - if(hh1 == 2 && num > 4){ - lcd.locate(0,0); - lcd.printf("valor invalido"); - wait(.7); - func(); - }else{ - hh0 = num; - lcd.cls(); - lcd.printf("%d%d:xx",hh1,hh0); - lcd.locate(0,1); - lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - wait(.7); - i++;} - }else //fin 2do digito hora - if(i == 2){ - pc.printf("aca ingresaria 1 dig seg\n\r"); //inicio 1er digito minuto - if(num > 6){ - lcd.locate(0,0); - lcd.printf("valor invalido"); - wait(.7); - func(); - }else{ - mm1 = num; - lcd.cls(); - lcd.printf("%d%d:%dx",hh1,hh0,mm1); - lcd.locate(0,1); - lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - wait(.7); - i++;} - }else //fin 2do digito minuto - if(i == 3){ - pc.printf("aca ingresaria 2 dig seg\n\r"); //inicio 2do digito minuto - if(mm1 == 6){ - mm0 = 0; - }else{ - mm0 = num; - } - lcd.cls(); - lcd.printf("%d%d:%d%d",hh1,hh0,mm1,mm0); - lcd.locate(0,1); - lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - i++; - - } //fin 2do digito minuto - } -void imprimehora(){ - lcd.locate(11,1); - if(min < 10 && hora >= 10) +//funcion de set de hora +void sethora() +{ + if(i == 0) { //set de primer digito hora + if(num > 2) { + lcd.locate(0,0); + lcd.printf("valor invalido"); + wait(.7); + func(); + } else { + hh1 = num; + lcd.cls(); + lcd.printf("%dx:xx",hh1); + lcd.locate(0,1); + lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); + wait(.7); + i++; + } + } else //fin de set 1er digito hora ok + if(i == 1) { + pc.printf("aca ingresaria 2 dig hora\n\r"); //inicio 2do digito hora + if(hh1 == 2 && num > 4) { + lcd.locate(0,0); + lcd.printf("valor invalido"); + wait(.7); + func(); + } else { + hh0 = num; + lcd.cls(); + lcd.printf("%d%d:xx",hh1,hh0); + lcd.locate(0,1); + lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); + wait(.7); + i++; + } + } else //fin 2do digito hora + if(i == 2) { + pc.printf("aca ingresaria 1 dig seg\n\r"); //inicio 1er digito minuto + if(num > 6) { + lcd.locate(0,0); + lcd.printf("valor invalido"); + wait(.7); + func(); + } else { + mm1 = num; + lcd.cls(); + lcd.printf("%d%d:%dx",hh1,hh0,mm1); + lcd.locate(0,1); + lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); + wait(.7); + i++; + } + } else //fin 2do digito minuto + if(i == 3) { + pc.printf("aca ingresaria 2 dig seg\n\r"); //inicio 2do digito minuto + if(mm1 == 6) { + mm0 = 0; + } else { + mm0 = num; + } + lcd.cls(); + lcd.printf("%d%d:%d%d",hh1,hh0,mm1,mm0); + lcd.locate(0,1); + lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); + i++; + + } //fin 2do digito minuto +} +// fin funcion set de hora + +//funcion que imprime la hora +void imprimehora() +{ + lcd.locate(11,1); + if(min < 10 && hora >= 10) lcd.printf("%2i:0%i", hora, min); - if(hora < 10 && min >= 10) + if(hora < 10 && min >= 10) lcd.printf("0%i:%2i", hora, min); - if(hora < 10 && min < 10) + if(hora < 10 && min < 10) lcd.printf("0%i:0%i", hora, min); - if(hora >= 10 && min >= 10) + if(hora >= 10 && min >= 10) lcd.printf("%i:%i", hora, min); - } +} +//lectura de teclado y navegacion por menu void func() { B1 = key1.read(); @@ -132,21 +130,22 @@ case 0: pc.printf("case 0"); break; - case 1: //seteo hora - sethora(); - if(i == 4) { //pasa la hora al reloj - hora = (hh1 * 10) + hh0; - min = (mm1 * 10) + mm0; - hh0 = hh1 = mm1 = mm0 = 0; - t.start(); - lcd.locate(0,0); - lcd.printf("reloj "); - lcd.locate(0,1); - lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); - i = 0;} - break; //fin pasa hora al reloj + case 1: //seteo hora + sethora(); + if(i == 4) { //pasa la hora al reloj + hora = (hh1 * 10) + hh0; + min = (mm1 * 10) + mm0; + hh0 = hh1 = mm1 = mm0 = 0; + t.start(); + lcd.locate(0,0); + lcd.printf("reloj "); + lcd.locate(0,1); + lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo); + i = 0; + } + break; //fin pasa hora al reloj case 2: - pc.printf("ingreso temperaturas de auto\n\r"); //set temperaturas auto + pc.printf("ingreso temperaturas de auto\n\r"); //set temperaturas auto if(num == 0 || num == 1 || num == 2) { tempauto = num; lcd.locate(0,0); @@ -154,8 +153,8 @@ lcd.printf("tipo frio "); else if(num == 1) lcd.printf("tipo normal "); - else - lcd.printf("tipo caliente"); + else + lcd.printf("tipo caliente"); wait(1); lcd.cls(); lcd.printf("temperatura"); @@ -168,7 +167,7 @@ lcd.cls(); } break; - case 3: //tipo de baño + case 3: //tipo de baño pc.printf("ingreso tipo banio %d\n\r",num); if(num == 0 || num == 1) { tipobanio = num; @@ -190,33 +189,35 @@ lcd.printf("tipo banio "); } break; - case 4: //set de horarios + 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; - minin = (mm1 * 10) + mm0; - hh0 = hh1 = mm1 = mm0 = 0; - lcd.locate(0,0); - 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;} - if(i == 4 && j == 1) { //pasa la hora al reloj - horafin = (hh1 * 10) + hh0; - minfin = (mm1 * 10) + mm0; - hh0 = hh1 = mm1 = mm0 = 0; - lcd.locate(0,0); - 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;} + sethora(); + if(i == 4 && j == 0) { //pasa la hora al reloj + horain = (hh1 * 10) + hh0; + minin = (mm1 * 10) + mm0; + hh0 = hh1 = mm1 = mm0 = 0; + lcd.locate(0,0); + 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; + } + if(i == 4 && j == 1) { //pasa la hora al reloj + horafin = (hh1 * 10) + hh0; + minfin = (mm1 * 10) + mm0; + hh0 = hh1 = mm1 = mm0 = 0; + lcd.locate(0,0); + 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; + } break; case 5: //set temperatura manual if(i == 0) { @@ -225,11 +226,11 @@ } else if(i == 1) { sdig = num; pc.printf("%.1d\n\r", sdig); - val = (pdig * 10) + sdig; - pc.printf("%.1d\n\r", val); + tempmanual = (pdig * 10) + sdig; + pc.printf("%.1d\n\r", tempmanual); imprimehora(); lcd.locate(0,0); - lcd.printf("temperatura a %d",val); + lcd.printf("temperatura a %d",tempmanual); wait(1); lcd.locate(0,0); lcd.printf("temperatura "); @@ -267,10 +268,11 @@ } } +//impresion de menu void menu () { lcd.cls(); - imprimehora(); + imprimehora(); switch (sel) { case 1: lcd.locate(0,0); @@ -377,7 +379,7 @@ break; case 4: sel = 1; - menu(); //salida1 + menu(); //salida1 break; case 8: pc.printf("aca ingresaria la temperatura2\r\n"); @@ -403,46 +405,53 @@ } - +//programa principal int main() { t.start(); pc.baud(115200); Enable.rise(&func); - - int comp; + while(1) { //reloj - seg = t.read(); - if(seg == 60) - { + seg = t.read(); + if(seg == 60) { seg=0; t.reset(); - min++; + min++; } - if(min==60) - { + if(min==60) { min=0; - hora++; + hora++; + } + if(hora==24) { + hora=0; } - if(hora==24) - { - hora=0;} - imprimehora(); - + imprimehora(); +//pwm + pwmsal.period(5); + valorpwm = pwment.read(); + pwmsal.write(valorpwm); //convierte voltaje a temperatura casexterno = externo.read() * 3.3; 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); - comp = tinterno; - if(comp == temp) - pc.printf("las temperaturas son iguales\n\r"); - else - pc.printf("temperaturas distintas\n\r"); + wait(1); } } \ No newline at end of file