Ejercicio N°3: Sistema de control de una heladera

Dependencies:   DS1820 KL25zOTEROlib TSI mbed

Fork of DS1820_HelloWorld by Erik -

main.cpp

Committer:
JAgustinOtero
Date:
2018-06-05
Revision:
5:109b192b40a5
Parent:
3:f483abe4bc57

File content as of revision 5:109b192b40a5:

#define DATA_PIN        PTE20
#define MAX_PROBES      16
#include "mbed.h"
#include "DS1820.h"
#include "Display16.h"
#include "SETdata_TSI.h"
#include "ME_Compresor.h"
#include "ME_Ventilador.h"
#include "ME_Alarma.h"
void __interruptDisplay(void);
void __interruptSETData(void);
void __Alarma(void);

unsigned char VSet=4;
unsigned char TRet=0;
unsigned int var_alarma=0;
unsigned int alarmav=0;
Ticker display;
DS1820* probe[MAX_PROBES];
Ticker SetData;
Ticker Alarma;
float promedio,t1,t2,t1r,t2r;
int main()
{
    int num_devices = 0;
    while(DS1820::unassignedProbe(DATA_PIN)) {
        probe[num_devices] = new DS1820(DATA_PIN);
        num_devices++;
        if (num_devices == MAX_PROBES)
            break;
    }
    printf("Found %d device(s)\r\n\n", num_devices);
    display.attach(&__interruptDisplay,0.003);
    SetData.attach(&__interruptSETData,0.1);
    Alarma.attach(&__Alarma,0.1);
    while(1) {
        probe[0]->convertTemperature(true, DS1820::all_devices);         //Start temperature conversion, wait until ready
        t1r=probe[0]->temperature();
        t2r=probe[1]->temperature();
        if(t1r>0) t1=t1r;
        if(t2r>0) t2=t2r;
        promedio=((t1/3*10)+(t2/3*10))/2;
        for (int i = 0; i<num_devices; i++) {
            printf("Device %d returns %3.1foC\r\n", i, probe[i]->temperature());
            printf("\r\n");
        }
        ME_Ventilador(t1,t2);
        ME_Compresor(VSet,promedio);
        ME_Alarma(var_alarma);
        
    }
}

void __interruptDisplay ()
{
    if(ME_Alarma_estado==A_on)alarmav=1;
    else alarmav=0;
    display16(TRet,VSet,promedio,alarmav);
}
void __interruptSETData (void)
{
    VSet=SETData();
    TRet=RetainData();
}

void __Alarma()
{
    if(ME_Alarma_estado==espera && var_alarma>0) {
        var_alarma--;
    }
}