Bonjour,
Je suis en Terminale SSI. Concernant mon projet SI, je travaille sur la partie de capteurs : le calcul d'humidité et temperature.
J'ai besoin de votre aide pour calculer la moyenne de valeurs calculées à partir du programme Arduino/
Problèmatique: Quel est le code pour calculer la moyenne à partir de valeurs calculées ?
Merci d'avance
/* Le circuit
Un capteur analogique branché sur AO
*/
#include <math.h>
#include <Wire.h> // inclut les bibliothèques nécessaires
int a; //définir la variable a
int delta=2000 ; // temps de rafraichissement entre 2 mesures en milisecondes
float humidite; // variable pour la résistance R2
const int R1 = 30; // R1 = 30 Ohm
const float U = 5.0; // valeur de la tension constante
float UR2; // Valeur de la tension mesurée UR2
float resist;
// .....................réglage du temps entre deux mesures.......................................
void setup()
{
Serial.begin(9600); // initialisation de la liaison série
Serial. println( "Mesure de humidite"); // on écrit Mesure de humidite sur la liaison série
Serial. print( "temps (ms)entre deux mesures : ");// on écrit ....... sur la liaison série
Serial. println(delta); // on écrit la valeur du temps de rafraichissement et on saute la ligne
}
void loop()
{
UR2 =analogRead(1); // lire la valeur de l'entrée analogique A0 ( UR2)
// Serial.println(UR2); // On écrit la résistance sur la liaison série
UR2=(UR2U)/1024.0;
humidite = (R1UR2)/(U - UR2);
// Serial.println(UR2); // On écrit la résistance sur la liaison série
Serial.println("Valeur de la résistance du sol mesurant l'humidité : "); // On écrit la résistance sur la liaison série
Serial.println(humidite); // On écrit la résistance sur la liaison série( R2)
// Calcul de la résistivité du terrain
resist = 3.1416 * 2 * 1 * humidite;
Serial.println("Valeur de la résistivité du terrain en ohm-mètre : "); // On écrit la résistance sur la liaison série
Serial.println(resist); // On écrit la résistance sur la liaison série( R2)
delay(1500); //attendre 0.5 seconde (500 ms)
biggil:
la moyenne est égale à Somme_des_valeurs_mesurées / nombre_de_mesures.
Il faut donc connaitre la somme et le nombre de mesures : tu prends deux variables 'somme' et 'nbmesures' que tu initialises à 0 dans le setup ou à la déclaration. Il faut aussi une variable 'moyenne'
Dans la loop, tu incrémentes nbmesures et tu ajoutes la mesure courante à la somme. Le calcul de la moyenne se fait selon la formule hautement scientifique de Biggil puis tu affiches le résultat (Serial.print).
/* Le circuit
* Un capteur analogique branché sur AO
*/
#include <math.h>
#include <Wire.h> // inclut les bibliothèques nécessaires
int a; //définir la variable a
int delta=2000 ; // temps de rafraichissement entre 2 mesures en milisecondes
float humidite; // variable pour la résistance R2
const int R1 = 30; // R1 = 30 Ohm
const float U = 5.0; // valeur de la tension constante
float UR2; // Valeur de la tension mesurée UR2
float resist;
int mesure;
int nombre_mesure=200; // nombre de mesure à réaliser pour le moyennage
int somme=0; // variable pour cumul des mesures
float moyenne; // variable calcul de la moyenne
int i; // variable i
int somme1;
// .....................réglage du temps entre deux mesures.......................................
void setup()
{
Serial.begin(9600); // initialisation de la liaison série
Serial. println( "Mesure de humidite"); // on écrit Mesure de humidite sur la liaison série
Serial. print( "temps (ms)entre deux mesures : ");// on écrit ....... sur la liaison série
Serial. println(delta); // on écrit la valeur du temps de rafraichissement et on saute la ligne
}
void loop()
{Serial.print("somme=");
Serial.println(somme);
for (int i=0; i<nombre_mesure; i++) // répète la mesure
{
UR2 =analogRead(1); // lire la valeur de l'entrée analogique A0 ( UR2)
UR2=(UR2*U)/1024.0;
humidite = (R1*UR2)/(U - UR2);
// Calcul de la résistivité du terrain
resist = 3.1416 * 2 * 1 * humidite;
somme=somme+resist;
}
Serial.print("somme=");
Serial.println(somme);
// calcul moyenne
moyenne=somme/nombre_mesure;
Serial.print("moyenne=");
Serial.println(moyenne); // VALEUR MOYENNE
somme=0;
delay(2000);
}
J'ai obtenu des valeurs positifs et negatifs, je trouve que ce n'est pas normal. En general la valeur de la resistivité est entre 0 à 19492.
Oui, avant de poster, je suis allée sur Internet. Mais cela m'aide pas beaucoup car j'ai testé des logiciels qui ne veulent pas être installés dans l'ordinateur du lycée.
J'ai essayé de stoker les données sur Excel avec .csv. Cela fonctionne mais le graphique ne veut pas prendre en charge la résistivité reçue comme l'ordonnée.
Mets en pièce jointe, là on n'a rien.
Autrement ? Tu pourrais envoyer les données sur la liaison série, les capter sur le PC grâce à un script Python qui afficherait la courbe correspondante.