Bonjour j'ai un problème dans mon code au niveau des conditions je sais pour pourquoi la première condition ne marche pas.
Merci d'avance.
//A0 brancher sur une résistance de 10K et sur le port de
//la sonde , sur la borne de sorti de la sonde sur le GND
// la résistance de 10K brancher sur 5V et sur le A0 et la sonde
// 2 relais port 2 et 3
// R1 = 2 et R2 = 3
#include <math.h>
#define PIN_NTC 0
const int R1 = 2;
const int R2 = 3;
const int R3 = 4;
const int R4 = 0;
const int V1 = 5;
const int V2 = 6;
const int BB = 7;
double Rref = 10000.0; //Résistance de référence à 25°C
double V_IN = 5.0; //Alimentation électrique
//Information de la thermistance
double A_1 = 3.354016E-3;
double B_1 = 2.569850E-4;
double C_1 = 2.620131E-6;
double D_1 = 6.383091E-8;
double SteinhartHart(double R)
{
//Division de l'équation en 4 parties. La premiere est
//uniquement A1
double equationB1 = B_1 * log(R/Rref);
double equationC1 = C_1 * pow(log(R/Rref), 2);
double equationD1 = D_1 * pow(log(R/Rref), 3);
double equation = A_1 + equationB1 + equationC1 + equationD1;
return pow(equation, -1);
}
void setup() {
Serial.begin(9600);
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(R3, OUTPUT);
pinMode(R4, OUTPUT);
pinMode(V1, OUTPUT);
pinMode(V2, OUTPUT);
pinMode(BB, INPUT_PULLUP);
}
void loop() {
//Calcul de la tension sur la borne analogique
double valeurAnalog = analogRead(PIN_NTC);
double V = valeurAnalog / 1024 * V_IN;
//Calcul de la résistance de la thermistance
double Rth = (Rref * V ) / (V_IN - V);
Serial.print("Rth = ");
Serial.print(Rth);
//Calcul de la température en kelvin( Steinhart and Hart)
double kelvin = SteinhartHart(Rth);
double celsius = kelvin - 273.15; //Conversion en celsius
Serial.print("Ohm - T = ");
Serial.print(celsius);
Serial.print("C\n");
delay(1000);
boolean etatBouton = digitalRead(BB);
if (etatBouton == HIGH)
{
Serial.print("Etat BP = 0\n");
digitalWrite(V2, HIGH);
}
else
{
Serial.print("Etat BP = 1\n");
digitalWrite(V2, LOW);
if (celsius > 25)
{
Serial.print("Temperature haute\n");
digitalWrite(V1, LOW);
digitalWrite(V2, LOW);
digitalWrite(R1, LOW);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
}
else if (celsius < 20)
{
Serial.print("Temperature basse\n");
digitalWrite(R1, HIGH);
digitalWrite(R2, LOW);
digitalWrite(R3, LOW);
digitalWrite(V1, LOW);
digitalWrite(V2, LOW);
digitalWrite(R4, HIGH);
}
else
{
digitalWrite(R2, HIGH);
digitalWrite(R1, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
digitalWrite(V1, HIGH);
digitalWrite(V2, HIGH);
Serial.print("Temperature Normal\n");
}
}
}