 
 // Parametres de filtrage
 const int filtre_batterie_decal = 7;
-const int filtre_direction_decal = 3;
+const int filtre_direction_decal = 1;
 const int filtre_ir_decal = 4;
-const int filtre_mannette_pot_decal = 5;
+const int filtre_mannette_pot_decal = 1;
 
 // Parametres de controle des moteurs
+const int pwm_max = 255;
+
 const int vitesse_av_moteur_nom = int(0.2f * 255.0f);
 const int vitesse_zero_tol_tic_par_cycle = 3;
 const float moteur_av_gain_pid[3] = {0.05f, 0.01f, 0.0f};
-const int moteur_av_zone_morte = int(0.2f * 255.0f);
-
-const float moteur_gd_gain_pid[3] = {0.05f, 0.01f, 0.0f};
-const int moteur_gd_zone_morte = 100;
+const int moteur_av_zone_morte = 0;
+
+const float moteur_gd_gain_pid[3] = {0.20f, 0.0f, 0.05f};
+const int moteur_gd_zone_morte = 50;
+const int moteur_gd_vitesse_max = 150;
 
 // Periodes entre les appels de fonction
 const int periode_affichage_ms          = 1000; 
-const int periode_controle_moteurs_ms   = 100;
-const int periode_lecture_analogique_ms = 10;
+const int periode_controle_moteurs_ms   = 10;
+const int periode_lecture_analogique_ms = 5;
 const int periode_controle_led_ms       = 10;
 
 

  roue_phase_precedente = roue_phase_courante;
}  

float pid(long &integrale,
          long &erreur_prec,
          const long commande_desiree, 
          const long lecture, 
          const float *gain_pid) {
  
  long erreur = commande_desiree - lecture;
  
  // A voir si l'integrale diverge sans mise a jour conditionnelle
  integrale += erreur;      
          
  float commande_pid = gain_pid[0] * (float)erreur + 
                       gain_pid[1] * (float)(erreur - erreur_prec) + 
                       gain_pid[2] * (float)integrale;
    
  // Mise a jour de l'erreur        
  erreur_prec = erreur;
  
  return commande_pid;        
}

  
  if(digitalRead(bouton) == LOW) {
    // Vitesse basee sur la distance arriere
    vitesse_av_cmd = map(ir_arriere_filtre, 184, 850, 20, pwm_max);
  }
  else if(mannette_mouvement_actuel == arrete) {
    // Freinage
    vitesse_av_cmd = pid(moteur_integrale_erreur, 
                         moteur_erreur_prec,
                         moteur_commande_prec,
                         0,
                         vitesse_tic_par_cycle,
                        -pwm_max, 
                         pwm_max,
                         moteur_av_gain_pid);
  }
  else {   
    if(mannette_mouvement_actuel == avance) {
