Ejercicio N°3: Sistema de control de una heladera
Dependencies: DS1820 KL25zOTEROlib TSI mbed
Fork of DS1820_HelloWorld by
main.cpp@5:109b192b40a5, 2018-06-05 (annotated)
- Committer:
- JAgustinOtero
- Date:
- Tue Jun 05 23:31:11 2018 +0000
- Revision:
- 5:109b192b40a5
- Parent:
- 3:f483abe4bc57
Ejercicio N?3:; Sistema de control de una heladera
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JAgustinOtero | 5:109b192b40a5 | 1 | #define DATA_PIN PTE20 |
JAgustinOtero | 5:109b192b40a5 | 2 | #define MAX_PROBES 16 |
Sissors | 0:e069f9f26768 | 3 | #include "mbed.h" |
Sissors | 0:e069f9f26768 | 4 | #include "DS1820.h" |
JAgustinOtero | 5:109b192b40a5 | 5 | #include "Display16.h" |
JAgustinOtero | 5:109b192b40a5 | 6 | #include "SETdata_TSI.h" |
JAgustinOtero | 5:109b192b40a5 | 7 | #include "ME_Compresor.h" |
JAgustinOtero | 5:109b192b40a5 | 8 | #include "ME_Ventilador.h" |
JAgustinOtero | 5:109b192b40a5 | 9 | #include "ME_Alarma.h" |
JAgustinOtero | 5:109b192b40a5 | 10 | void __interruptDisplay(void); |
JAgustinOtero | 5:109b192b40a5 | 11 | void __interruptSETData(void); |
JAgustinOtero | 5:109b192b40a5 | 12 | void __Alarma(void); |
Sissors | 0:e069f9f26768 | 13 | |
JAgustinOtero | 5:109b192b40a5 | 14 | unsigned char VSet=4; |
JAgustinOtero | 5:109b192b40a5 | 15 | unsigned char TRet=0; |
JAgustinOtero | 5:109b192b40a5 | 16 | unsigned int var_alarma=0; |
JAgustinOtero | 5:109b192b40a5 | 17 | unsigned int alarmav=0; |
JAgustinOtero | 5:109b192b40a5 | 18 | Ticker display; |
Sissors | 0:e069f9f26768 | 19 | DS1820* probe[MAX_PROBES]; |
JAgustinOtero | 5:109b192b40a5 | 20 | Ticker SetData; |
JAgustinOtero | 5:109b192b40a5 | 21 | Ticker Alarma; |
JAgustinOtero | 5:109b192b40a5 | 22 | float promedio,t1,t2,t1r,t2r; |
JAgustinOtero | 5:109b192b40a5 | 23 | int main() |
JAgustinOtero | 5:109b192b40a5 | 24 | { |
Sissors | 0:e069f9f26768 | 25 | int num_devices = 0; |
Sissors | 0:e069f9f26768 | 26 | while(DS1820::unassignedProbe(DATA_PIN)) { |
Sissors | 0:e069f9f26768 | 27 | probe[num_devices] = new DS1820(DATA_PIN); |
Sissors | 0:e069f9f26768 | 28 | num_devices++; |
Sissors | 0:e069f9f26768 | 29 | if (num_devices == MAX_PROBES) |
Sissors | 0:e069f9f26768 | 30 | break; |
Sissors | 0:e069f9f26768 | 31 | } |
Sissors | 0:e069f9f26768 | 32 | printf("Found %d device(s)\r\n\n", num_devices); |
JAgustinOtero | 5:109b192b40a5 | 33 | display.attach(&__interruptDisplay,0.003); |
JAgustinOtero | 5:109b192b40a5 | 34 | SetData.attach(&__interruptSETData,0.1); |
JAgustinOtero | 5:109b192b40a5 | 35 | Alarma.attach(&__Alarma,0.1); |
Sissors | 0:e069f9f26768 | 36 | while(1) { |
Sissors | 0:e069f9f26768 | 37 | probe[0]->convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready |
JAgustinOtero | 5:109b192b40a5 | 38 | t1r=probe[0]->temperature(); |
JAgustinOtero | 5:109b192b40a5 | 39 | t2r=probe[1]->temperature(); |
JAgustinOtero | 5:109b192b40a5 | 40 | if(t1r>0) t1=t1r; |
JAgustinOtero | 5:109b192b40a5 | 41 | if(t2r>0) t2=t2r; |
JAgustinOtero | 5:109b192b40a5 | 42 | promedio=((t1/3*10)+(t2/3*10))/2; |
JAgustinOtero | 5:109b192b40a5 | 43 | for (int i = 0; i<num_devices; i++) { |
Sissors | 0:e069f9f26768 | 44 | printf("Device %d returns %3.1foC\r\n", i, probe[i]->temperature()); |
JAgustinOtero | 5:109b192b40a5 | 45 | printf("\r\n"); |
JAgustinOtero | 5:109b192b40a5 | 46 | } |
JAgustinOtero | 5:109b192b40a5 | 47 | ME_Ventilador(t1,t2); |
JAgustinOtero | 5:109b192b40a5 | 48 | ME_Compresor(VSet,promedio); |
JAgustinOtero | 5:109b192b40a5 | 49 | ME_Alarma(var_alarma); |
JAgustinOtero | 5:109b192b40a5 | 50 | |
Sissors | 0:e069f9f26768 | 51 | } |
Sissors | 0:e069f9f26768 | 52 | } |
Sissors | 0:e069f9f26768 | 53 | |
JAgustinOtero | 5:109b192b40a5 | 54 | void __interruptDisplay () |
JAgustinOtero | 5:109b192b40a5 | 55 | { |
JAgustinOtero | 5:109b192b40a5 | 56 | if(ME_Alarma_estado==A_on)alarmav=1; |
JAgustinOtero | 5:109b192b40a5 | 57 | else alarmav=0; |
JAgustinOtero | 5:109b192b40a5 | 58 | display16(TRet,VSet,promedio,alarmav); |
JAgustinOtero | 5:109b192b40a5 | 59 | } |
JAgustinOtero | 5:109b192b40a5 | 60 | void __interruptSETData (void) |
JAgustinOtero | 5:109b192b40a5 | 61 | { |
JAgustinOtero | 5:109b192b40a5 | 62 | VSet=SETData(); |
JAgustinOtero | 5:109b192b40a5 | 63 | TRet=RetainData(); |
JAgustinOtero | 5:109b192b40a5 | 64 | } |
JAgustinOtero | 5:109b192b40a5 | 65 | |
JAgustinOtero | 5:109b192b40a5 | 66 | void __Alarma() |
JAgustinOtero | 5:109b192b40a5 | 67 | { |
JAgustinOtero | 5:109b192b40a5 | 68 | if(ME_Alarma_estado==espera && var_alarma>0) { |
JAgustinOtero | 5:109b192b40a5 | 69 | var_alarma--; |
JAgustinOtero | 5:109b192b40a5 | 70 | } |
JAgustinOtero | 5:109b192b40a5 | 71 | } |