control de temperatura por medio de un sensor LM35
Dependencies: Keypad TextLCD mbed
Fork of control_onoff by
main.cpp@1:b5269aa460c0, 2017-11-16 (annotated)
- Committer:
- Luis_San
- Date:
- Thu Nov 16 01:03:09 2017 +0000
- Revision:
- 1:b5269aa460c0
- Parent:
- 0:e007beba2811
Control ON / OFF de un bombillo de 60W basado en temperaturas dadas por un LM35
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
franni | 0:e007beba2811 | 1 | #include "mbed.h" |
franni | 0:e007beba2811 | 2 | #include "TextLCD.h" |
franni | 0:e007beba2811 | 3 | #include "Keypad.h" |
franni | 0:e007beba2811 | 4 | |
franni | 0:e007beba2811 | 5 | Serial rs232(USBTX, USBRX); |
franni | 0:e007beba2811 | 6 | AnalogIn AnalogPin(PTB0); |
franni | 0:e007beba2811 | 7 | DigitalOut pinOut(PTB1); |
franni | 0:e007beba2811 | 8 | |
franni | 0:e007beba2811 | 9 | TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2); // Rs, E, d4, d5, d6, d7, RW=GND |
Luis_San | 1:b5269aa460c0 | 10 | Keypad keypad(PTB11,PTB10,PTB9,PTB8,PTE5,PTE4,PTE3,PTE2); // c1, c2, c3, c4, f1, f2, f3, f4 |
franni | 0:e007beba2811 | 11 | |
franni | 0:e007beba2811 | 12 | char key; |
franni | 0:e007beba2811 | 13 | int released=1,unidades,decenas,centenas; |
franni | 0:e007beba2811 | 14 | float setpoint,valor_adc; |
franni | 0:e007beba2811 | 15 | |
franni | 0:e007beba2811 | 16 | void read_kpad() |
franni | 0:e007beba2811 | 17 | { |
franni | 0:e007beba2811 | 18 | key=keypad.ReadKey(); |
franni | 0:e007beba2811 | 19 | if(key=='\0') released=1; |
franni | 0:e007beba2811 | 20 | if((key!='\0') && (released==1)) { |
franni | 0:e007beba2811 | 21 | released=0; |
franni | 0:e007beba2811 | 22 | } |
franni | 0:e007beba2811 | 23 | |
franni | 0:e007beba2811 | 24 | } |
franni | 0:e007beba2811 | 25 | |
franni | 0:e007beba2811 | 26 | void setup_pyrom() |
franni | 0:e007beba2811 | 27 | { |
franni | 0:e007beba2811 | 28 | int i=0; |
franni | 0:e007beba2811 | 29 | lcd.cls(); |
franni | 0:e007beba2811 | 30 | lcd.locate(1,1); |
franni | 0:e007beba2811 | 31 | lcd.printf("SETUP..."); |
Luis_San | 1:b5269aa460c0 | 32 | rs232.printf("SETUP..."); |
franni | 0:e007beba2811 | 33 | wait(1); |
franni | 0:e007beba2811 | 34 | lcd.cls(); |
franni | 0:e007beba2811 | 35 | while(i<=2){ |
franni | 0:e007beba2811 | 36 | read_kpad(); |
Luis_San | 1:b5269aa460c0 | 37 | wait(0.5); |
franni | 0:e007beba2811 | 38 | if(key!='\0'){ |
franni | 0:e007beba2811 | 39 | if(i==0){centenas=key-48;lcd.locate(1,1);lcd.printf("%c",key);if(centenas>1){centenas=1;}} |
franni | 0:e007beba2811 | 40 | if(i==1){decenas=key-48;lcd.locate(2,1);lcd.printf("%c",key);} |
franni | 0:e007beba2811 | 41 | if(i==2){unidades=key-48;lcd.locate(3,1);lcd.printf("%c",key);} |
franni | 0:e007beba2811 | 42 | ++i;} |
franni | 0:e007beba2811 | 43 | } |
franni | 0:e007beba2811 | 44 | wait(0.25); |
franni | 0:e007beba2811 | 45 | setpoint=unidades+10.0*decenas+100.0*centenas; |
franni | 0:e007beba2811 | 46 | lcd.cls(); |
franni | 0:e007beba2811 | 47 | lcd.locate(1,1); |
franni | 0:e007beba2811 | 48 | lcd.printf("SP: %fdegC ",setpoint); |
Luis_San | 1:b5269aa460c0 | 49 | rs232.printf("SP: %fdegC ",setpoint); |
franni | 0:e007beba2811 | 50 | wait(1); |
franni | 0:e007beba2811 | 51 | lcd.cls(); |
franni | 0:e007beba2811 | 52 | lcd.locate(1,1); |
franni | 0:e007beba2811 | 53 | lcd.printf("SETUP OK"); |
Luis_San | 1:b5269aa460c0 | 54 | rs232.printf("SETUP OK"); |
franni | 0:e007beba2811 | 55 | wait(1); |
franni | 0:e007beba2811 | 56 | } |
franni | 0:e007beba2811 | 57 | |
franni | 0:e007beba2811 | 58 | int main() |
franni | 0:e007beba2811 | 59 | { |
Luis_San | 1:b5269aa460c0 | 60 | rs232.baud(115200); |
franni | 0:e007beba2811 | 61 | rs232.printf("Control ON-OFF \n\r"); |
franni | 0:e007beba2811 | 62 | lcd.printf("Control ON-OFF \r\n"); |
franni | 0:e007beba2811 | 63 | wait(1); |
franni | 0:e007beba2811 | 64 | lcd.cls(); |
franni | 0:e007beba2811 | 65 | |
franni | 0:e007beba2811 | 66 | while (1) { |
Luis_San | 1:b5269aa460c0 | 67 | valor_adc=AnalogPin.read()*300;//guardar en entero y mostrar el enetero |
franni | 0:e007beba2811 | 68 | lcd.locate(1,1); |
franni | 0:e007beba2811 | 69 | lcd.printf("SP; %fdegC ",setpoint); |
franni | 0:e007beba2811 | 70 | lcd.locate(1,2); |
franni | 0:e007beba2811 | 71 | lcd.printf("PV; %fdegC ",valor_adc); |
Luis_San | 1:b5269aa460c0 | 72 | rs232.printf("%f,%f \r \n",setpoint,valor_adc); |
franni | 0:e007beba2811 | 73 | |
franni | 0:e007beba2811 | 74 | read_kpad(); |
franni | 0:e007beba2811 | 75 | if(key=='*') { |
franni | 0:e007beba2811 | 76 | setup_pyrom(); |
franni | 0:e007beba2811 | 77 | } |
franni | 0:e007beba2811 | 78 | |
franni | 0:e007beba2811 | 79 | if(valor_adc>=setpoint) { |
franni | 0:e007beba2811 | 80 | pinOut=0; |
franni | 0:e007beba2811 | 81 | } else { |
franni | 0:e007beba2811 | 82 | pinOut=1;; |
franni | 0:e007beba2811 | 83 | } |
Luis_San | 1:b5269aa460c0 | 84 | wait(0.3); |
franni | 0:e007beba2811 | 85 | |
franni | 0:e007beba2811 | 86 | } |
franni | 0:e007beba2811 | 87 | } |