Problème de variable

Bonjour, je rencontre un problème de variable. (Certainement un problème de logique de ma part). En fait je cherche a faire une comparaison avec une variable sur son cycle précédent. -Si la variable ne change pas on ne fait rien -Si la variable a changé, on continue.

Si quelqu'un peu me donner un petit coup de main ce serait avec plaisir.

Bien Cordialement.

Voici mon code..

#include "dht11.h"
#include "DHT.h"
#include "lcddisplay.h"
DHT dht;
void dht11setup(){
Serial.println();
Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
dht.setup(8); // data pin 2

}
void dht11loop(){

delay(dht.getMinimumSamplingPeriod());
//Declaration des variables
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
//La variable volatile float temperatureold; que j'utilise pour faire la comparaison
//Je pense qu'elle est ré-écrit à 0 a chaque passage.
//(Du coup je ne sais pas comment faire)
volatile float temperatureold;

if (temperature == temperatureold)
{
  affichestring("pasdechangement");
}
else
{
//Affichage sur Com de la température et de l'humidité
Serial.print(dht.getStatusString());
Serial.print("\t");
Serial.print(humidity, 1);
Serial.print("\t\t");
Serial.print(temperature, 1);
Serial.print("\t\t");
Serial.println(dht.toFahrenheit(temperature), 1);
//Affichage sur l'ecran Lcd de la température et de l'humidité
affichestringupfloatdown("Temperature:",temperature);
affichestringupfloatdown("Humidite:",humidity); 
}
//TEST Juste pour visualiser les variables 
affichestringupfloatdown("Temperature test:",temperature);
affichestringupfloatdown("Temperature old:",temperatureold);

//Je donne une nouvelle valeur à la variable temperatureold
temperatureold = dht.getTemperature();

//TEST Juste pour visualiser les variables 
affichestringupfloatdown("Temperature old:",temperatureold);
}

si tu veux mémoriser une variable il te faut la déclarer en global pas en locale car à chaque boucle elle sera effacée

Salut fifi, en fait, j’ai l’impression qui conserve bien la valeur de la variable temperatureold.

Mais cette partie ne fonctionne pas.

if (temperature == temperatureold)
{
  affichestring("pasdechangement");
}
else

Bonjour,

Si tu veux que ta variable garde sa valeur chaque fois que tu entre dans loop(), il faut la déclarer static

 static float temperatureold;

Tu peux aussi la déclarer en dehors de la fonction, elle sera alors globale, mais c'est moins structuré.