Partage
  • Partager sur Facebook
  • Partager sur Twitter

loop setup qui s'execute plusieurs fois

    30 août 2021 à 21:30:46

    Bonjours,

    J'ai travaillé cette aprem sur ma carte arduino et de l'eau est tombé dessus (quelques grosse gouttes). Et 2h après mon dth22 ne marche plus....

    Le probleme étant que le programme bug une fois sur deux et il reste bloqué dans la finction setup. Et lorsqu'il ne se bloque pas dans la fonction setup, le dth22 affiche "echec de lecture" alors qu'il marchait super bien ce matin.

    J'ai donc deux questions : 

    Est ce que l'eau a détruit ma carte ou le dth ? -> je n'ai malheureusement pas d'autre carte arduino pour tester :'(

    je n'ai pas mis de résistance à mon dth22, peut etre qu'il bug à cause de ça ?

    le programme :

    //dht22
      #include "DHT.h"   // Librairie des capteurs DHT
      #define DHTPIN 6    // branchement---------------------------------------
      #define DHTTYPE DHT22      // DHT 22  (AM2302)
      DHT dht(DHTPIN, DHTTYPE); 
    
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      Serial.println("on commence");
      //detecteur de température & d'humidité 
        dht.begin();
    
    }
    
    void loop() {
    
      delay(2000);
      // Lecture du taux d'humidité
      float h = dht.readHumidity();
      // Lecture de la température en Celcius
      float t = dht.readTemperature();
      // Pour lire la température en Fahrenheit
      float f = dht.readTemperature(true);
      
      // renvoie un message d'erreur si le capteur ne renvoie aucune mesure
      if (isnan(h) || isnan(t) || isnan(f)) {
        Serial.println("Echec de lecture !");
      }
    
      // Calcul la température ressentie. Il calcul est effectué à partir de la température en Fahrenheit
      // On fait la conversion en Celcius dans la foulée
      float hi = dht.computeHeatIndex(f, h);
      
    
      Serial.print("Humidite: "); 
      Serial.print(h);
      Serial.print(" %\t");
      Serial.print("Temperature: "); 
      Serial.print(t);
      Serial.print(" *C ");
      Serial.print("Temperature ressentie: ");
      Serial.print(dht.convertFtoC(hi));
      Serial.println(" *C");
    
    }

    il faut savoir aussi qu'avec un programme simple comme celui-ci :

    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      Serial.println("on commence");
    
    
    }
    
    void loop() {
      Serial.println("hellow");
    }

    j'ai quelques point d'interrogation qui s'affiche des le début :



    si vous avez quelques explications je dis pas non :)

    Merci du temp que vous allez passer à m'aider !

    -
    Edité par IteWaseMi 30 août 2021 à 21:37:06

    • Partager sur Facebook
    • Partager sur Twitter
      31 août 2021 à 10:37:20

      La résistance de pull-up sur la ligne DATA est obligatoire !

      Sans elle, la lecture du capteur est très aléatoire et peut générer de nombreuses erreurs.

      Une valeur comprise entre 2.2k et 4.7k devrait faire l'affaire, essaye ça.

      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2021 à 11:14:49

        IteWaseMi a écrit:

        Le probleme étant que le programme bug une fois sur deux et il reste bloqué dans la finction setup. Et lorsqu'il ne se bloque pas dans la fonction setup, le dth22 affiche "echec de lecture" alors qu'il marchait super bien ce matin.

        D'après le code de la bibliothèque DHT, je crois que le timeout maximum est de 160 millisecondes, donc il n'y a aucune raison que ça bloque même en cas d'échec de la lecture des des données du capteur (indépendamment de la présence de la résistance de pullup, accessoirement, la bibliothèque utilise la pull-up interne (certes faible) de l'arduino et certains modules DHT22 montés sur PCB intègrent déjà une résistance de pull up).

        Donc il y a peut-être un problème avec la carte arduino, comme de la corrosion qui se serait formée autour d'un composant, parce que tu l'as laissé alimenté en présence de liquide, les reboots pourraient également indiquer des chutes de tension, qui pourraient être dues à un court-circuit. Examine la carte pour voir s'il n'y a pas de traces vertes ou blanchâtres autour des composants.

        • Partager sur Facebook
        • Partager sur Twitter

        loop setup qui s'execute plusieurs fois

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown