Salut,
je suis en cour de réalisation d'un projet qui utilise le DHT11 pour piloter un extracteur d'air en 220 avec un relais. Avec un afficheur lcd 1602a qui indique la temp et l'humidité , deux led, une verte une rouge, et deux conditions (une de température, une d'humidité) pour piloter l'extracteur.
Mon souci, est que lorsque le relais est piloté, l'afficheur lcd affiche n'importe quoi voir plus rien. Je pensais en premier lieu à un manque de puissance pour alimenter tout ça. J'ai alors utilisé un transfo 220v -> 5v pour alimenter le relais qui pilote l'alimentation 220v de l'extracteur. Cela afin de soulager la carte Mega.
Essai non concluant. Afficheur toujours avec le même problème. Dès l'allumage aucun souci, et si une condition est remplie, le pilotage fait afficher n'importe quoi.
Ma question, est il possible que, comme je n'utilise aucune sortie analogique , celles ci, ( comme j'ai pu le lire sur le forum) se comportent comme des antennes , et que à cause de la haute impédance, crèent des perturbations ?
dans ce cas, que me conseillez vous ?
J'ai à votre disposition le code, et des photos...
Merci beaucoup pour votre aide.
/* Jean-marc
- CAPTEUR T° ET HUMIDITE DHT11 + AFFICHAGE SUR ECRAN LCD
- AVEC LED ALARME HUMIDITE
*/
#include <SimpleDHT.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pinDHT11 = 8;
SimpleDHT11 dht11;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(7, OUTPUT); /led/
pinMode(6, OUTPUT); /led/
pinMode(9, OUTPUT); /relais/
analogWrite(6, LOW); /led/
analogWrite(7, LOW); /led/
}
void loop()
{
byte temperature ;
byte humidity ;
lcd.clear();
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 (( temperature > 25 ) || ( humidity > 65 ))
{
analogWrite(6, 100);
analogWrite(7, LOW);
digitalWrite(9, HIGH);
lcd.setCursor(0, 0);
lcd.clear();
lcd.print((int)temperature);
lcd.print(" c TEMP ");
lcd.setCursor(0, 1);
lcd.print((int)humidity);
lcd.print(" % HUMIDITE ");
}
else
{
analogWrite(6, LOW);
analogWrite(7, 100);
digitalWrite(9, LOW);
lcd.setCursor(0, 0);
lcd.clear();
lcd.print((int)temperature);
lcd.print(" c TEMP ");
lcd.setCursor(0, 1);
lcd.print((int)humidity);
lcd.print(" % HUMIDITE ");
}
delay(2000);
}