/* Activité 8 - Programme pour la balance électronique expérimentale. 
Numérise la tension Ur aux bornes de la résistance R et appliquée entre l'entrée analogique A0 
et la masse GND. 
Affiche la valeur moyenne de Ur (réalisée sur une seconde et à 2 chiffres significatifs) dans le moniteur série
(le dernier 0 affiché de Ur n'est pas significatif, d'après les variables utilisées dans le programme) 
Calcule la masse m en g en utilisant le modèle Ur = f(m) tiré de la courbe des variations 
de tension Ur aux bornes de la résistance R en fonction de la masse m déposée sur le plateau.  
*/
float Ur = 0;         // Variable utilisée pour le calcul de la valeur moyenne de la tension numérisée en V
void setup() {        // La fonction setup s'exécute une seule fois au démarrage ou si on réinitialise la carte.
  Serial.begin(9600); // Initialise la communication série avec un débit de 9600 bits/s.
  }
  
void loop() {                    // La fonction loop est une boucle infinie qui tourne en permanence. 
  long somme = 0;                // Initialisation de la variable somme utilisée pour le calcul la moyenne de Ur.
  for(int i = 0; i<100 ;i++) {   // Boucle for pour le calcul de la valeur moyenne de Ur sur une seconde.  
      int x = analogRead(A0);    // Numérisation de la tension présente sur l'entrée A0 et affectation dans x,         
      somme = somme + x;         // somme des valeurs de x,  
      delay(10);                 // toutes les 10 ms. 
  }
  Ur = float(somme*5/10230) /10; // Calcul de la valeur moyenne de la tension numérisée Ur à 2 chiffres significatifs.
  Serial.print("Tension Ur = "); // Affichage de la valeur moyenne de la tension numérisée sur l'entrée A0  
  Serial.print(Ur);              // en 
  Serial.print(" V   ");         // V.
  int m = 97.7-100*Ur+25*Ur*Ur;  // Masse m calculée à partir partir de Ur d'après le modèle m = f(Ur). 
  if(m < 5) m = 0;               // Si la masse calculée est inférieure à 5 g alors elle est considérée comme nulle. 
  Serial.print("masse = ");      // Affichage de la masse 
  Serial.print(m);               // en
  Serial.println(" g");          // g. 
  delay(2000);                   // Délai de 2 s, soit 3 s au total entre deux mesures successives
}
