//
//  MesureADC.h
//  libLTC
//
//  Created by Tim THUREL on 04/03/2020.
//  Copyright © 2020 Tim THUREL. All rights reserved.
//

/*! \mainpage Guide de  démarrage
*
* \section intro_sec Introduction
*
* Cette librairie sert à utiliser un ou plusieurs ADC : LTC2439.
*
* Elle donne les valeurs en degrés des 16 capteurs qui sont raccordées sur l'ADC.
*
* Pour faire fonctionner cette librairie il faut déjà avoir installé la librairie LTC2439.h.
*/


#ifndef MesureADC_h
#define MesureADC_h

#include <stdint.h>
#include <Arduino.h>
#include "LTC2439.h"

#define DEBUG



/*! \class MesureADC  MesureADC.h  <MesureADC.h>
*  \brief  Classe utilisé pour la librairie LTC2439 et avoir toute les températures
*/
class MesureADC
{
public:
	MesureADC(int vref,int maxval,int res_mesure,int v_alim, int beta, int r_therm );
    /*! \fn MesureADC(int vref,int maxval,int res_mesure,int v_alim, int beta, int r_therm );
    *  \param vref La tentsion d'alimentation de la pin COM de l'ADC en mV
    *  \param maxval La valeur maximal que sort l'ADC, elle est egale à 2^(n-1)  n étant le nombre de bits de l'ADC
    *  \param res_mesure La valeur en ohm de la résitance de précision
    *  \param v_alim La tention d'alimentation de l'ADC en mV
    *  \param beta Le béta des thermistances
    *  \param r_therm La résistance en ohm des thermistances à 25 degrés
    */
	float * ReadTemp(int adcCS); // renvoie l'adresse d'un tableau de température 
    // !!! Attention !!! bien vider le tableau dans un autre tableau si vous utilisez plusieurs ADC.
    
    /*! \fn float * ReadTemp(int adcCS);
    *  Calcul les 16 températues de l'ADC LTC2439
    *  \param adcCS La pin de CS de l'ADC LTC2439
    *  \return Un pointeur d'un tableau de 16 float. Attention ce tableau est modifier a chaque appel de la fonction !
    */

    
private:
    float mesureI(float *table);
    void temp();
    void res();
    void volt();
    void mesureV(int CS);
    
    int vreference;
    int maximumval;
    int res_courant;
    int tention_alim;
    int beta_therm;
    int res_therm;
    
    float i1;
    float i2;
    
    float tableV1[8];
    float tableV2[8];

    float tableVR1[8];
    float tableVR2[8];

    float tableR1[8];
    float tableR2[8];

    float T1[8];
    float T2[8];
    
    float out[16];
};



#endif /* MesureADC.h */
