Bonjour , voici un petit programme pour savoir si la temperature d'une pièce (Séjour par exemple) est comprise dans la température souhaitée .
grâce à une CTN 10Ko dans cet exemple , on allume 3 led
led rouge allumée il fait trop chaud (au dessus de 21 degrés)
led jaune allumée temperature idéale (entre 19 et 21 degrés)
led bleue allumée il fait froid (en dessous de 19 degrés).
J'ai utilisé une CTN parce que je l'avais en stock . ![]()
//Petit programme pour savoir si la temperature d'une piéce
//(Séjour par exemple) est comprise dans la temperature
//souhaitée .
// grace à une CTN 10Ko dans cet exemple , on allume 3 led
// led rouge allumée il fait trop chaud (au dessus de 21 degrés)
// led jaune allumée temperature idéale (entre 19 et 21 degrés)
// led bleue allumée il fait froid (en dessous de 19 degrés)
// Programme libre de droit
//ARTNOW44 (c)2016
//********************************************************************************************
// CTN SUR PIN A0
#define CTNPIN A0
// Valeur theorique de la CTN à 25 degrees C
#define CTNNOMINAL 10000
#define TEMPERATURENOMINAL 25
// le nombre d'échantillons à prendre
// pour le lissage de la valeur
#define NUMSAMPLES 5
// coefficient pour la CTN (entre 3000-4000)
#define BCOEFFICIENT 3950
// la valeur de l'autre résistance 10Ko (noir/marron/orange)
#define SERIESRESISTOR 10000
int echantillons[NUMSAMPLES];
int rouge =2;//déclaration de la led rouge sur pin 2
int jaune =3;//déclaration de la jaune sur pin 3
int bleue =4;//déclaration de la led bleue sur pin 4
void setup(void) {
Serial.begin(9600);
pinMode(2, OUTPUT);// initialise pin2 est une sortie.LED ROUGE
pinMode(3, OUTPUT);// initialise pin3 est une sortie.LED JAUNE
pinMode(4, OUTPUT); // initialise pin4 est une sortie.LED BLEUE
analogReference(EXTERNAL);
}
void loop(void) {
uint8_t i;
float moyenne;
// échantillonnage, avec un retard de 10ms
for (i=0; i< NUMSAMPLES; i++) {
echantillons[i] = analogRead(CTNPIN);
delay(10);
}
// moyenne tous les échantillons
moyenne = 0;
for (i=0; i< NUMSAMPLES; i++) {
moyenne += echantillons[i];
}
moyenne /= NUMSAMPLES;
// convert the value to resistance
moyenne = 1023 / moyenne - 1;
moyenne = SERIESRESISTOR / moyenne;
float temp;
temp = moyenne / CTNNOMINAL; // (R/Ro)
temp= log(temp); // ln(R/Ro)
temp /= BCOEFFICIENT; // 1/B * ln(R/Ro)
temp += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
temp = 1.0 / temp; // Inverser
temp -= 273.15; // convertir en Celcius
Serial.print("Temperature ");
Serial.print(temp);
Serial.println(" C");
delay(1000);
// gestion des led avec la température
// Led rouge au dessus de 21 degrés
// led jaune entre 19 et 21 degrés
// led bleue en dessous de 19 degrés
if (temp> 21 ) digitalWrite(rouge, HIGH);{
if(temp >21) digitalWrite(jaune,LOW);{
if(temp >20) digitalWrite(jaune,LOW);{
if(temp <20) digitalWrite(rouge,LOW);{
if (temp<21 ) digitalWrite(jaune, HIGH);{
if (temp>19 ) digitalWrite(bleue, LOW);{
if(temp <19) digitalWrite(jaune,LOW);{
if(temp <19) digitalWrite(bleue,HIGH);{
} } } } } } } } }