#include <Servo.h> //On oublie pas d’ajouter la bibliothèque controle servomoteur auto!
// déclaration des variables
long temps; //variable qui stocke la mesure du temps
const int frein = 2; //définition de la broche 2 de la carte en tant que variable frein
const int on = 3; //broche 3 du micro-contrôleur se nomme maintenant
const int plus = 4;
const int moins = 5;
const int cpmh = 6;
unsigned int tpstourref; // entier de 0 à 65355
unsigned int tpstour;
unsigned int tpstour1;
unsigned int etat;
int delta; // entier de - 32300 à + 32300
Servo moteur; //création d’un nouveau servomoteur
void setup() //fonction d’initialisation de la carte
{
moteur.attach(7,1000,2000); //on déclare l’entrée du servo connectée sur la broche 7
Serial.begin(9600); //on oublie pas de démarrer la liaison série 
pinMode(frein, INPUT); //initialisation de la broche 2 comme étant une entrée
pinMode(on, INPUT);
pinMode(plus, INPUT);
pinMode(moins, INPUT);
pinMode(cpmh, INPUT);
etat=0;
moteur.write(etat);
}
void loop() //fonction principale, elle se répète (s’exécute) à l’infini
{
while(digitalRead(on)==0); //attente le bouton on
// calcul vitesse initiale
while (digitalRead(cpmh)==0); // attente signal capteur
while (digitalRead(cpmh)==1); //attente capteur soit dégagé
temps = millis(); //on stocke la nouvelle heure
while (digitalRead(cpmh)==0); //attente tour terminé
tpstourref = millis() - temps;
tpstour1 = tpstourref;
// calcul précharge
if (tpstourref > 1000) etat = 0;
if (tpstourref > 9000) etat = 5;
if (tpstourref > 8000) etat = 10;
if (tpstourref > 7000) etat = 15;
moteur.write(etat);
// boucle controle
do
{ // calcul vitesse
while (digitalRead(cpmh)==0); // attente signal capteur
while (digitalRead(cpmh)==1); //attente capteur soit dégagé
temps = millis(); //on stocke la nouvelle heure
while (digitalRead(cpmh)==0); //attente tour terminé
tpstour = millis() - temps;
// calcul delta vitesse
delta = tpstour-tpstour1;
tpstour1 = tpstour; // memoire tps precedent
// action
if ((delta > 60) && ( etat < 90)) etat=etat +1;// accelerer 1 cran
if ((delta > 80) && ( etat < 90))etat=etat +1;// accelerer 1 cran de plus
if ((delta > 99) && ( etat < 90))etat=etat +1;// accelerer encore 1 cran de plus
if ((delta < 20) && ( etat > 0))etat=etat +1;// lacher 1 cran
if ((delta < 40) && ( etat > 0))etat=etat +1;// lacher 1 cran
if ((delta < 60) && ( etat > 0))etat=etat +1;// lacher 1 cran
moteur.write(etat); //envoyer info
// interaction
if (digitalRead(plus)==1) ( tpstourref= tpstourref + (tpstourref0.01));
if (digitalRead(moins)==1) ( tpstourref= tpstourref - (tpstourref0.01));
delay ( 1000000 ); // pause 1s temps action
} while (digitalRead(frein)==0); // sécurité frein
moteur.write(0); // remise zero moteur
}

bonne lecture, c’est le programme de contrôle.
enfin une ébauche, il y a surement des petites choses à corriger ou améliorer.
j’ai fait ça tranquillement hier soir de 23H à 2H …
