Arduino Forum

International => Français => Topic started by: Alex_Mny on May 05, 2019, 06:56 pm

Title: Probleme min et max (temp et humidité) / moyenne
Post by: Alex_Mny on May 05, 2019, 06:56 pm
Bonsoir,

Je suis entrain de réaliser un projet arduino, c'est le premier language que je touche et je suis dans une impasse j'ai chercher plusieur solution pour régler différent problème le premier est au niveau des minimum et des maximum je n'arrive pas a afficher le min et le max a chaque boucle on m'affiche dans le min la meme valeur que dans le max et cela pour les deux capteur humidité et température. De plus pour réaliser la moyenne lorsque je vérifie le programme on met un message d'erreur m'indiquant " 'mesure' cannot be used as a fonction ".

J'ai besoin d'aide merci d'avance


Voici ci contre le programme arduino

---------------------------------------------------------------------------------------------------------------------
Code: [Select]


#include <LiquidCrystal.h> // UTILISATION BIBLIOTHEQUE POUR ECRAN LCD
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 8

  LiquidCrystal lcd(12,11,5,4,3,2); // ANNONCE DES PINS UTILISÉS PAR L'ÉCRAN LCD

// #define (nom de variable) nombre

const int pin_capteur = 0; // broche A0
float mesure[99];
int compteur=0;

int Tmin;
int Tmax;

int Hmax;
int Hmin;
int i;


void setup() {





  Serial.begin(9600);
 
   pinMode(DHT11_PIN, INPUT);
}




void loop() {

    int Hum = DHT.read(DHT11_PIN);
  Serial.print("humidité: ");  //différence print et println print écrit le message alors println écrit le message et va à la ligne
  Serial.println(DHT.humidity,1);

 
  int lecture = analogRead(pin_capteur);
  int tension = lecture * 5; // la virgule permet de dire a l'arduino qu'il s'agit d'une variable dites flottante
  tension = tension / 1024.0;
 // Serial.print("tension="); 
 // Serial.println(" V");

 int temp = analogRead(pin_capteur) * 5000L / 1024L / 10; // Que represente c'est L
 Serial.print(temp);
 Serial.println("°C");


 if (compteur<100){

mesure[compteur]=temp;
compteur++; //compteur = compteur + 1
 
 delay (1000); // attendre 1 seconde
 
 }

 


if(compteur>=99){


  float somme=0.0;
 
  for(int i=0 ; i<99;i++){
      somme = somme + mesure ;
   }
   




  float moyenne = somme /98;
  Serial.print("Moyenne= ");
  Serial.println(moyenne);
}

 for (int i=0 ; i=0;99){
      mesure  = mesure (i+1);
      }






lcd.begin(16, 2); // SET DES DIFERENT LIEU OU ON ÉCRIT DU TEXT
 
    lcd.setCursor(0,0); // POSITION DU DÉBUT DU TEXTE
       lcd.print("temperature :");   
       lcd.println(temp);
       lcd.setCursor(0,1);
       lcd.print("                ");
       delay(1000);


    lcd.setCursor(0,0);
      lcd.print("Humidite   "); 
      lcd.println(DHT.humidity,1);
      lcd.setCursor(0,1);
      lcd.print("                ");
      delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Moyenne      "); 
        lcd.setCursor(0,1);
      lcd.print(moyenne);
      delay(1000);


    lcd.setCursor(0,0);
       lcd.println("temperature max   ");
    lcd.setCursor(0,1);
      lcd.println(Tmax); 
       
       delay(1000);


    lcd.setCursor(0,0);
       lcd.print("temperature min  ");   
    lcd.setCursor(0,1);
       lcd.println(Tmin); 
    delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Humidite max");
       
      lcd.print(Hmax);
 
       delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Humidite min");   
     
      lcd.println(Hmin);
       delay(1000);

}

Title: Re: Probleme min et max (temp et humidité) / moyenne
Post by: bilbo83 on May 05, 2019, 07:10 pm
Bonjour,

Beaucoup d'erreurs dans ce sketch.
Si tu veux mémoriser 100 mesures tu doit déclarer: float mesure[100], les index allant de 0 à 99.
Pour le calcul de la moyenne ce sera: float moyenne=somme/100.
Ensuite dans cette boucle:
Code: [Select]
for (int i=0 ; i=0;99){
      mesure  = mesure (i+1);
      }


c'est: mesure[i+1] , mais tu veux faire quoi?

Et enfin, tu ne fait aucun calcul sur les min/max, comment veux tu...
Title: Re: Probleme min et max (temp et humidité) / moyenne
Post by: Alex_Mny on May 05, 2019, 07:18 pm
Merci de t'as reponse alors pour les min et les maximum je shouaite juste les afficher et désolé mais je viens de me rendre compte que je viens de faire un mauvais copié coller :D oups...
D'ailleur avec ce code j'arrive a afficher le min et le min et le max au niveau de la température mais les deux sont la meme chose.

Code: [Select]


#include <LiquidCrystal.h> // UTILISATION BIBLIOTHEQUE POUR ECRAN LCD
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 8

  LiquidCrystal lcd(12,11,5,4,3,2); // ANNONCE DES PINS UTILISÉS PAR L'ÉCRAN LCD

// #define (nom de variable) nombre

const int pin_capteur = 0; // broche A0
float mesure[100];
int compteur=0;

int Tmin;
int Tmax;

int Hmax;
int Hmin;


void setup() {





  Serial.begin(9600);
 
   pinMode(DHT11_PIN, INPUT);
}




void loop() {

    int Hum = DHT.read(DHT11_PIN);
  Serial.print("humidité: ");  //différence print et println print écrit le message alors println écrit le message et va à la ligne
  Serial.println(DHT.humidity,1);

 
  int lecture = analogRead(pin_capteur);
  int tension = lecture * 5; // la virgule permet de dire a l'arduino qu'il s'agit d'une variable dites flottante
  tension = tension / 1024.0;
 // Serial.print("tension="); 
 // Serial.println(" V");

 int temp = analogRead(pin_capteur) * 5000L / 1024L / 10; // Que represente c'est L
 Serial.print(temp);
 Serial.println("°C");


// Temp

if (Tmin>temp){
Tmin = temp;
}

if (Tmax<temp){
  Tmax=temp;
}

//Humidité

if (Hmin>Hum){
 Hmin=Hum;
}

if (Hmax<Hum){
Hmax = Hum;
}


 if (compteur<100){

mesure[compteur]=temp;
compteur++; //compteur = compteur + 1
 
 delay (1000); // attendre 1 seconde
 
 }

 


if(compteur>=99){


  float somme=0.0;
 
  for(int i=0 ; i<99;i++){
      somme = somme + mesure [i];
   }
   




  float moyenne = somme /98;
  Serial.print("Moyenne= ");
  Serial.println(moyenne);
}

 for (int i=0 ; i=98; i++){
      mesure  = mesure (i+1);
      }




lcd.begin(16, 2); // SET DES DIFERENT LIEU OU ON ÉCRIT DU TEXT
 
    lcd.setCursor(0,0); // POSITION DU DÉBUT DU TEXTE
       lcd.print("temperature :");   
       lcd.println(temp);
       lcd.setCursor(0,1);
       lcd.print("                ");
       delay(1000);


    lcd.setCursor(0,0);
      lcd.print("Humidite   "); 
      lcd.println(DHT.humidity,1);
      lcd.setCursor(0,1);
      lcd.print("                ");
      delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Moyenne         "); 
        lcd.setCursor(0,1);
      lcd.print("                ");
      delay(1000);


    lcd.setCursor(0,0);
       lcd.println("temperature max   ");
    lcd.setCursor(0,1);
      lcd.println(Tmax); 
       
       delay(1000);


    lcd.setCursor(0,0);
       lcd.print("temperature min  ");   
    lcd.setCursor(0,1);
       lcd.println(Tmin); 
    delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Humidite max");
       
      lcd.print(Hmax);
 
       delay(1000);


    lcd.setCursor(0,0);
       lcd.print("Humidite min");   
     
      lcd.println(Hmin);
       delay(1000);

}





Title: Re: Probleme min et max (temp et humidité) / moyenne
Post by: Alex_Mny on May 05, 2019, 08:23 pm
Si possible de m'aider a résoudre le problème de maximum et de minimum ?
Title: Re: Probleme min et max (temp et humidité) / moyenne
Post by: lesept on May 05, 2019, 11:40 pm
Et enfin, tu ne fait aucun calcul
sur les min/max, comment veux tu...
ça rime pas ! ;)
Title: Re: Probleme min et max (temp et humidité) / moyenne
Post by: biggil on May 06, 2019, 07:16 am
tu utilises des entiers (int) pour tes calculs, c'est inapproprié. Il faut utiliser des flottants (float).