Bonjour à tous,
Je reprends une librairie OpenSource pour l'adapter légérement selon mon besoin.
Je l'ai renommée de steinhartHart ) => Sf110
Dans mon fichier Sf110.h j'ai ceci
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#ifndef Sf110_h
#define Sf110_h
#include <inttypes.h>
#define V_IN 3.3 // Input voltage
#define K 9.5 // Dissipation factor (mW/°C)
class Sf110 {
public:
/**
* The reading pin has to be specified.
* If no other parameters are given default values will be used.
* These values are for a NTC 10k thermistor with a 10k resistor
* put in parallel.
*/
Sf110(
uint8_t reading_pin,
double resistance = 24900.0,
double a = 1.129241e-3, //1.129241 X 10 3
double b = 2.341077e-4, // 2.34077 X 10 4
double c = 8.775468e-8) :
_reading_pin(reading_pin),
_resistance(resistance),
_a(a), _b(b), _c(c) {};
double temperature(double r);
double getTempKelvin();
double getTempCelsius();
double getTempFahrenheit();
private:
//Sf110(uint8_t reading_pin, double resistance, double a, double b, double c);
// Value of the resistor put in parallel
double _resistance;
uint8_t _reading_pin;
// Manufacturing constants
double _a;
double _b;
double _c;
};
#endif
Dans mon fichier Sf110.cpp, j'ai ceci
#include "Sf110.h"
#include <math.h>
Sf110::Sf110(uint8_t reading_pin, double resistance, double a, double b, double c)
{
}
double Sf110::temperature(double r)
{
double log_r = log(r);
double log_r3 = log_r * log_r * log_r;
return 1.0 / (_a + _b * log_r + _c * log_r3);
}
double Sf110::getTempKelvin()
{
double adc_raw = analogRead(_reading_pin);
double voltage = adc_raw / 1024 * V_IN;
double resistance = ((1024 * _resistance / adc_raw) - _resistance);
// Account for dissipation factor K
return temperature(resistance) - voltage * voltage / (K * _resistance);
}
double Sf110::getTempCelsius()
{
return getTempKelvin() - 273.15;
}
double Sf110::getTempFahrenheit()
{
return getTempCelsius() * 9/5 + 32;
}
Ce qui me préoccupe, c'est cette partie
Sf110(
uint8_t reading_pin,
double resistance = 24900.0,
double a = 1.129241e-3, //1.129241 X 10 3
double b = 2.341077e-4, // 2.34077 X 10 4
double c = 8.775468e-8) :
_reading_pin(reading_pin),
_resistance(resistance),
_a(a), _b(b), _c(c) {};
On voit qu'avant les : il y a
uint8_t reading_pin,
double resistance = 24900.0,
double a = 1.129241e-3, //1.129241 X 10 3
double b = 2.341077e-4, // 2.34077 X 10 4
double c = 8.775468e-8)
et apèrs. il y a comme des "fonctions" qui passe en paramètre, les variable de la première partie.
Comment expliquer ceci?
Ensuite dans mon fchier cpp, j'ai ceci
Sf110::Sf110()
{
}
A mon sense, cela ne va pas jouer.
Mais dois-je avoir au minimum
Sf110::Sf110(uint8_t reading_pin)
{
}
Ou les 4 paramètres, sont indispensable
Sf110::Sf110(uint8_t reading_pin, double resistance, double a, double b, double c)
{
}
Je vous remercie pour vos explications et toute bonne soirée