 //afaire : faire un réinit propre car si on fait 2 étalonnage à la suite ca marche pas
 //a Faire : lire l'autre voie de la roue codeuse pour detectr les rebond du servo
 
-//a faire tester repetabilité avec tempo à 100 et à 200. Avec 100 on a des comportement louche lors des cycles de fin (le servo bouge apeine sur certains des cycle a la palce d'un grand débatement)
+//a faire tester repetabilité avec tempo à 100 et à 200.
+Avec 100 on a des comportement louche lors des cycles de fin 
+(le servo bouge apeine sur certains des cycle a la palce d'un grand débatement)
 // a faire : comprendre pourquoi les vitesses sont pas les memes selon les modes.
 
 
 #*******************************************************************************
  J.Soranzo
-	16/12/2015 gestion sous git + github
-	https://github.com/gilles293/calibrateurServo.git
-	nettoyage du code, j'ai craqué
+    16/12/2015 gestion sous git + github
+    https://github.com/gilles293/calibrateurServo.git
+    nettoyage du code, j'ai craqué
 */ 
-
-//pour la suite faire moyenne pour mesure PWMIN et PWMMAX et virer le calcul de la moyenne mesureimpulsion pour le remplacer par la méthode
+//------------------------------------------------------------------------------
+//pour la suite faire moyenne pour mesure PWMIN et PWMMAX et virer 
+//le calcul de la moyenne mesureimpulsion pour le remplacer par la méthode
 
 
 #include <EEPROM.h>
 #include <SCoop.h>
 #include <Wire.h>
+#include <Adafruit_PWMServoDriver.h>
+#include <Servo.h>
+
+//------------------------------------------------------------------------------
+//Lib projet
 #include "bouton.h"
 #include "afficheur.h"
 #include "servoTest.h"
 #include "potar.h"
-#include <Adafruit_PWMServoDriver.h>
-#include <Servo.h>
+
+//------------------------------------------------------------------------------
 #define DELTA 150
-#define TEMPOSLEEP 800 //en ms le temps pour le servo de bouger d'un increment quand on fait les mesure à la roue codeuse
+#define TEMPOSLEEP 800
+//en ms le temps pour le servo de bouger d'un increment
+//quand on fait les mesure à la roue codeuse
+
 #define ERREURCOMPTAGE 15 //la tolérance de comptage avant que l'on estime que le servo est arrivé au bout
 #define NBRCYCLE_AR 10 //nbre de cycle d'aller et retour pour la fin des mesure de caractérisation et nbr de cycle pour la mesure des PWMIN et PWMMAX
-#define TEMPO_STAT 100 // tempo pour laisser le servo avancr lors des mesures statistique à la fin de la calibration
+#define TEMPO_STAT 100 // tempo pour laisser le servo avancr lors des mesures
+                       // statistique à la fin de la calibration
 #define ADRESSE_EEPROM 42//position de leeprom ou la valeur de reglage de vitesse est stocké
 #define VITESSEMAXSERVO 3500 // vitesse max d'un servo en microsecond de PWM par seconde
 #define PINSERVO 5 // pin arduino ou est branché le servo
 
-//
+//------------------------------------------------------------------------------
+// Etats de la machine d'état
 enum {
-		POTAR = 3,
-		MILIEU = 4,
-		USB = 1,
-		ETALORSWEEP = 10,
-		REGPOTENCINVIT = 11,
-		REGLPOTENC = 12,
-		MESREFPULSE = 13,
-		FINDMINMAX = 14,
-		WAITCLIC = 15,
-		DISPRESULT = 16,
-		WAITCLIC2 = 17,
-    LECTURE_OU_ECRITURE_EEEPROM=18,
-		SWEEPTOMIN = 2,
-		SWEEPTOMAX = 20,
-    VITESSE=22,
-   
+        POTAR = 3,
+        MILIEU = 4,
+        USB = 1,
+        ETALORSWEEP = 10,
+        //REGPOTENCINVIT = 11,
+        REGLPOTENC = 12,
+        MESREFPULSE = 13,
+        FINDMINMAX = 14,
+        WAITCLIC = 15,
+        DISPRESULT = 16,
+        WAITCLIC2 = 17,
+        //LECTURE_OU_ECRITURE_EEEPROM=18,
+        SWEEPTOMIN = 2,
+        SWEEPTOMAX = 20,
+        VITESSE=22,
 };
+
+//------------------------------------------------------------------------------
+//Variables globales
 bouton boutonP(4);
 afficheur affichage(0x20);
 //int bonnePositionPotence;

int vitesseTemp;


int objTest (0); // varaible temporaire pour ...peut sans doute etre supprimé en faisant apelle aux bnnes méthode pour connaitre etat courrant du servo

 
 
long ecartType (int tailleTab, int tab [])

{
  long moy(moyenne(tailleTab,tab));
  long ecType(0);
  int j(0);
  
  for (j=0;j<tailleTab;j++)
         {
            ecType=ecType+pow(tab[j]-moy,2);
            
          }
  ecType=sqrt(ecType);
  return ecType;          

}                                     

long ecartType (int tailleTab, long tab [])

{
  long moy(moyenne(tailleTab,tab));
  long ecType(0);
  int j(0);
  
  for (j=0;j<tailleTab;j++)
         {
            ecType=ecType+pow(tab[j]-moy,2);
            
          }
  ecType=sqrt(ecType);
  return ecType;          

}                

long moyenne (int tailleTab, long tab [])

{
  byte j;
  long moyenne (0);

         
void loop ()
{
    mySCoop.sleep(1);
    if (millis()>2000+temp)
        {
            temp=millis();
        }

}

