Alarme temperature DHT11

Bonjour,
j'ai posé un sujet tout a l'heure mais j'ai du mal m'expliquer.
Voilà en fait sur un DHT 11, l'humidité de fonctionne pas et me donne des valeur erronée malgré plusieurs échanges de capteur.

J'aimerais trouver une fonction sur la température qui me donnerai une alarme si +ou- 1 degré quelques soit la température.
Exemple il fait 20 degré, si il y a une chute brutale 19 degré, cela me déclancherai mon buzzz, pareil si augmentation de température.
J'ai intégré des leds et écran.
Voici mon bout de code.
Si vous auriez une solution cela m'arrangerai sincerement, c'est pour dans 5 jours.
Merci bien.

#include <SimpleDHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int pinDHT11 = A0;
const int buzzerPin = 13;
SimpleDHT11 dht11;

void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
lcd.begin(16, 2);
lcd.init(); // initialize the lcd
lcd.backlight();
}

void loop() {
byte temperature = 0;
byte humidity = 0;
lcd.setCursor(0, 0);
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess)
{
Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
return;
}
Serial.print("Lecture OK: ");
Serial.print(" TEMPERATURE "); Serial.print((int)temperature); Serial.print(" °C, ");
Serial.print(" HUMIDITE "); Serial.print((int)humidity); Serial.println(" %");

if (abs (temperature - ?????)

{

analogWrite(6, 255);
analogWrite(7, LOW);
tone(buzzerPin, 800);

}
else
{

analogWrite(6, LOW);
analogWrite(7, 255);
noTone (buzzerPin);

}
lcd.setCursor(2,0);
lcd.print("- G.F.E.P °" );
lcd.setCursor(0,1);
lcd.print((int)temperature);
lcd.print(" deg.");
lcd.setCursor(8,6);
lcd.print((int)humidity);
lcd.print("% HUMID");
delay(3000);
}
Point d'interrogation après if je ne sais pas comment gérer les timer et température,si vous avez une idée, merci beaucoup.

Bonjour, voyons si cela fonctionne pour vous

#include <SimpleDHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pinDHT11 = A0;
const int buzzerPin = 13;
SimpleDHT11 dht11;
byte vieille_temperature = 0;

byte temperature = 0;
byte humidity = 0;
byte difference = 0;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  lcd.begin(16, 2);
  lcd.init(); // initialize the lcd
  lcd.backlight();
}

void loop() {

  lcd.setCursor(0, 0);
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess)
  {
    Serial.print("Read DHT11 failed, err="); Serial.println(err); delay(1000);
    return;
  }
  Serial.print("Lecture OK: ");
  Serial.print(" TEMPERATURE "); Serial.print((int)temperature); Serial.print(" °C, ");
  Serial.print(" HUMIDITE "); Serial.print((int)humidity); Serial.println(" %");
  difference = temperature - vieille_temperature;
  if (abs (difference) > ??? ){// 1 degré ? 50 degrés ? vous devez définir la plage pour considérer cette erreur 
    analogWrite(6, 255);
    analogWrite(7, LOW);
    tone(buzzerPin, 800);
    delay (?????); // avertir de l'erreur arrêtant tout, puisque la prochaine boucle si l'erreur persiste elle serait considérée comme une bonne lecture 
  }
  else{
    analogWrite(6, LOW);
    analogWrite(7, 255);
    noTone (buzzerPin);
  }
  lcd.setCursor(2, 0);
  lcd.print("- G.F.E.P °" );
  lcd.setCursor(0, 1);
  lcd.print((int)temperature);
  lcd.print(" deg.");
  lcd.setCursor(8, 6);
  lcd.print((int)humidity);
  lcd.print("% HUMID");
  delay(3000);
  vieille_temperature = temperature;
}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.