Ejercicio N°3: Sistema de control de una heladera

Dependencies:   DS1820 KL25zOTEROlib TSI mbed

Fork of DS1820_HelloWorld by Erik -

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?

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