Asservissement :demande d'aide

Bonjour à vous tous,
j'ai voulu testé ce sketch ,trouvé sur le net ,mais à la compilation j'ai des messages d'erreurs;
j'ai vu que plusieurs bibliothèques portaient le même nom!
j'ai donc téléchargé celle qui est indiquée mais il y a toujours des erreurs à la compilation .
Pourriez-vous m'aider s'il vous plait ?
merci d'avance.

/**
* Asservissement d'un moteur à l'aide d'un régulateur PID
* Avril 2012 - Ferdinand Piette
*/
 
#include <SimpleTimer.h>           // http://arduino.cc/playground/Code/SimpleTimer
#define _DEBUG false
 
SimpleTimer timer;                 // Timer pour échantillonnage
const int _MOTEUR =  9;            // Digital pin pour commande moteur
unsigned int tick_codeuse = 0;     // Compteur de tick de la codeuse
int cmd = 0;                       // Commande du moteur
 
const int frequence_echantillonnage = 50;  // Fréquence du pid
const int rapport_reducteur = 29;          // Rapport entre le nombre de tours de l'arbre moteur et de la roue
const int tick_par_tour_codeuse = 32;      // Nombre de tick codeuse par tour de l'arbre moteur
 
float consigne_moteur_nombre_tours_par_seconde = 5.;  //  Nombre de tours de roue par seconde
 
float erreur_precedente = consigne_moteur_nombre_tours_par_seconde;
float somme_erreur = 0;   // Somme des erreurs pour l'intégrateur
float kp = 300;           // Coefficient proportionnel
float ki = 5.5;           // Coefficient intégrateur
float kd = 100;           // Coefficient dérivateur
 
/* Routine d'initialisation */
void setup() {
    Serial.begin(115200);         // Initialisation port COM
    pinMode(_MOTEUR, OUTPUT);     // Sortie moteur
    analogWrite(_MOTEUR, 255);    // Sortie moteur à 0
 
    delay(5000);                  // Pause de 5 sec pour laisser le temps au moteur de s'arréter si celui-ci est en marche
 
    attachInterrupt(0, compteur, CHANGE);    // Interruption sur tick de la codeuse (interruption 0 = pin2 arduino mega)
    timer.setInterval(1000/frequence_echantillonnage, asservissement);  // Interruption pour calcul du PID et asservissement
}
 
/* Fonction principale */
void loop(){
    timer.run();
    delay(10);
}
 
/* Interruption sur tick de la codeuse */
void compteur(){
    tick_codeuse++;  // On incrémente le nombre de tick de la codeuse
}
 
/* Interruption pour calcul du PID */
void asservissement()
{
    // Réinitialisation du nombre de tick de la codeuse
    int tick = tick_codeuse;
    tick_codeuse=0;
 
    // Calcul des erreurs
    int frequence_codeuse = frequence_echantillonnage*tick;
    float nb_tour_par_sec = (float)frequence_codeuse/(float)tick_par_tour_codeuse/(float)rapport_reducteur;
    float erreur = consigne_moteur_nombre_tours_par_seconde - nb_tour_par_sec;
    somme_erreur += erreur;
    float delta_erreur = erreur-erreur_precedente;
    erreur_precedente = erreur;
 
    // PID : calcul de la commande
    cmd = kp*erreur + ki*somme_erreur + kd*delta_erreur;
 
    // Normalisation et contrôle du moteur
    if(cmd < 0) cmd=0;
    else if(cmd > 255) cmd = 255;
    analogWrite(_MOTEUR, 255-cmd);
 
    // DEBUG
    if(_DEBUG)  Serial.println(nb_tour_par_sec,8);
}

erreur_compilation_uno.pdf (47.8 KB)

Les messages d'erreur font penser à une mauvaise installation de la librairie.
Qu'as-tu téléchargé et comment l'as-tu installé?

Bonsoir merci à fdufnew, j'ai rechargé par le github et maintenant çà marche .