capteur DS1621

Dependencies:   mbed

Main.cpp

Committer:
rpresa
Date:
2020-05-20
Revision:
0:78facd7c14b8

File content as of revision 0:78facd7c14b8:

#include "ds1621.h"



#define DS1621_ADDR 0x90            // I2c DS1621 address is 0x00

Serial pc(USBTX, USBRX);            // port série USB
//pins are: TX   RX  


I2C    i2c(p9, p10);                // Declare I2C (pullup resistors 2.2k from p9 and p10 to +5v)
DS1621 ds(&i2c, DS1621_ADDR);       // Declare ds1621 throught i2c interface




float Temperature = 24.0,
      Temp_H=25.0,
      Temp_L=23.0,
      Temp_cons=35,
      hysteresis=5.0,
      periode=1.0;  // acquisition toutes les secondes

unsigned char trame[6];
int cpt=0;              // compteur trame
int flag=0;             // detection de debut de trame
int etat_regulation=0;  // =0 pas de regulation  =1 regulation
int Sortie_reg=0;       // etat sortie reg du DS1621



int main() {
    i2c.frequency(5000); //5khz
    pc.printf("-----------------------\n\rMain\n\r");
    char reg;
    int result;
    
   
    
    ds.SetConfig(0x00);                 // POL=1, 1SHOT=0
    wait(1);
    reg=ds.ReadReg(ACCESS_CONFIG);      // lecture registre CONFIG pour controle
    pc.printf("REG=%d\n\r",reg);
    ds.SetLimit(ACCESS_TH,-20);        // fixe TH: valeur basse pour avoir commande de sortie =0
    wait(1);
    ds.SetLimit(ACCESS_TL, -21.0);     // fixe TL: valeur basse pour avoir commande de sortie =0
    wait(1);
    
    ds.StartConversion(1);
    wait(1);
    
    result=ds.GetTemp(ACCESS_TL,&Temp_L);
    if(result==1) pc.printf("TL=%3.1f\n\r",Temp_L);
    wait(1);
    result= ds.GetTemp(ACCESS_TH,&Temp_H);
    if(result==1) pc.printf("TH=%3.1f\n\r",Temp_H);
    wait(1);
    
    while (1) {
        result= ds.GetTemp(READ_TEMPERATURE,&Temperature); // acquisition Temp  à 0.5 
        //result= ds.GetHResTemp(&Temperature);                // acquisition Temp  à 0.1 °C
        pc.printf("Temperature=%3.1f C\n\r",Temperature);
        wait(1);
    }
}