Partage
  • Partager sur Facebook
  • Partager sur Twitter

Carte arduino qui bug

    12 mai 2021 à 18:26:14

    Bonjour,

    Je suis actuellement en train de terminer mon projet de serre automatique, mais malheureusement je rencontre un petit soucis :

    Lorsque que je laisse ma serre autonome, lors du 2ème jour (environ) mon chauffage reste activé alors qu'il est sensé se couper lorsque la température dépasse 25°C.

    J'ai donc 3 hypothèses du pourquoi ça ne marche pas très bien :

    1 ) Problème dans le code, je n'ai pas prévu une situation qui arrive rarement 

    2 ) la carte arduino est endommagé car j'ai touché aux pins 0 / 1 / 7

    3 ) Comme je relis ma carte arduino au secteur sans adaptateur, cela apporte des bugs

    Merci du temps que vous allez passer pour m'aider :)

    -
    Edité par IteWaseMi 12 mai 2021 à 18:30:02

    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2021 à 9:04:53

      Il faudrait que tu nous montres ton code et que tu nous en dises un peu plus sur ton câblage ainsi que l'alimentation de ton arduino pour que l'on puisse te dire où se situe le problème et comment le résoudre.
      • Partager sur Facebook
      • Partager sur Twitter
        13 mai 2021 à 12:42:48

        oups désolé, j'ai complètement le code^^

        voici le code :

        #include <LiquidCrystal.h>
           #include "U8glib.h"
        
         //ventilo
          #define VENTILO 4
        
          //chauffage 
          #define chauff 3
        
          //dht22
          #include "DHT.h"   // Librairie des capteurs DHT
          #define DHTPIN 2    // Changer le pin sur lequel est branché le DHT
          #define DHTTYPE DHT22      // DHT 22  (AM2302)
          DHT dht(DHTPIN, DHTTYPE);  
        
          //ecran oled
          U8GLIB_SH1106_128X64 u8g(8, 6, 9, 7); // SW SPI Com: SCK = 0, MOSI = 6, CS = 1, A0 = 7 (new blue HalTec OLED).
          
        void draw(void) {
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          //u8g.setFont(u8g_font_osb21);
          float temp = dht.readTemperature();
          char buffer[16];
          sprintf(buffer, "%.2f°C", temp);
          u8g.drawStr(0, 22, "temperature :");
          u8g.drawStr(0, 45, buffer);
        }
        
        void drawnegmore(void){
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          u8g.drawStr(0, 60, "ALED trop froid");
        }
        
        void drawneg(void){
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          u8g.drawStr(0, 60, "un peu froid");
        }
        
        void drawequ(void){
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          u8g.drawStr(0, 60, "parfa;it");
        }
        
        void drawpos(void){
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          u8g.drawStr(0, 60, "un peu chaud");
        }
        
        void drawposmore(void){
          // graphic commands to redraw the complete screen should be placed here  
          u8g.setFont(u8g_font_unifont);
          u8g.drawStr(0, 60, "ALED trop chaud");
        }
        
        void setup() {
          Serial.begin(9600);
        
            
          //ventilo
            pinMode ( VENTILO ,  OUTPUT );
        
          // hauffage
            pinMode ( chauff  ,  OUTPUT );
        
          //detecteur de température & d'humidité 
            dht.begin();
        
            //ecran
            pinMode(7, OUTPUT);
            if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
              u8g.setColorIndex(255);     // white
            }
            else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
              u8g.setColorIndex(3);         // max intensity
            }
            else if ( u8g.getMode() == U8G_MODE_BW ) {
              u8g.setColorIndex(1);         // pixel on
            }
            else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
              u8g.setHiColorByRGB(255,255,255);
            }
        
        }
        
        void loop() {
            // Délai de 2 secondes entre chaque mesure. La lecture prend 250 millisecondes
          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);
          
          // Stop le programme et renvoie un message d'erreur si le capteur ne renvoie aucune mesure
          if (isnan(h) || isnan(t) || isnan(f)) {
            Serial.println("Echec de lecture !");
            return;
          }
        
          // 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");
        
          
        
          if (t < 23) {
             digitalWrite(chauff, HIGH);
             digitalWrite(VENTILO, LOW);
             Serial.println("cauffage allumé");
             Serial.println("Ventilo eteint car temps < 23"); 
          }
        
          if (t > 25) {
             digitalWrite(chauff, LOW);
             Serial.println("chauffage eteint");
          }
          if (t > 28) {
             digitalWrite(VENTILO, HIGH);
             Serial.println("ventilo allumé car temps > 28");
          }
        
          
           // picture loop
          u8g.firstPage();  
          do {
            draw();
            if(t<18){
              drawnegmore();
            }
            if (t>=18 && t<22){
              drawneg();
            }
            if (t>=22 && t<=28){
              drawequ();
            }
            if (t>28 && t<= 32){
              drawpos();
            }
            if(t>32){
              drawposmore();
            }
          } while( u8g.nextPage() );
        
        }

        Pour le shema de mon montage, je sais pas quoi utiliser comme outils du coup je l'ai fais sur paint x) :

        Désolé pour la qualité de ce shema, si vous voulez je peux le refaire en mode plus soigné 

        Et pour info j'ai juste mis mon usb de l'arduino sur une prise pour pouvoir la brancher au secteur, voila voila

        -
        Edité par IteWaseMi 14 mai 2021 à 0:31:06

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2021 à 17:55:44

          Si tu cherches "dht22 stops working" sur google, il y a pas mal de résultats qui semblent indiquer que ça pourrait venir du capteur.

          Mais si c'était ça, à cause de ce morceau de ton code:

          // Stop le programme et renvoie un message d'erreur si le capteur ne renvoie aucune mesure
            if (isnan(h) || isnan(t) || isnan(f)) {
              Serial.println("Echec de lecture !");
              return;
            }
          

          tu devrais avoir l'affichage qui s'arrête également, or tu n'as pas indiqué que c'était le cas.

          • Partager sur Facebook
          • Partager sur Twitter

          Carte arduino qui bug

          × 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