Programme Test des moteurs

#include <Stepper.h>//liaison avec la bibliothèque "Stepper"

//Contantes et Variables
String commande=""; //variable pour mémoriser les commandes d'un programme Logo
double peri=19.635; //peri = 3,1416*6.25 (périmètre roue de diamètre 6.25 cm, distance pour un tour)
double disang=0.1265; //disang = 3,1416*14,5/360 (distance à parcourir pour 1 degré avec une distance inter-roues de 14,5 cm)
const int pasParTour = 2048;

//Initialisation des moteurs
Stepper MoteurPasAPasD(pasParTour, 4, 6, 5, 7);// initialiSe la librairie du moteur droit avec les pins de 4 à 7
Stepper MoteurPasAPasG(pasParTour, 8, 10, 9, 11);//initialiSe la librairie du moteur droit avec les pins de 8 à 11

//Fonctions

//Fonction ExeCom
void ExeCom(String comdir){
    Le paramètre (comdir) passé à cette fonction est une chaîne de caractères de deux lettres suivi par deux chiffres (par exemple : "AV10")     String com=""; String numcom=""; int ncom;
    com=comdir.substring(0,2);//la chaîne com content les deux premiers caractères (par exemple : "AV")
    numcom=comdir.substring(2);// la chaîne numcom contient les chiffres (par exemple : "10")
    ncom = numcom.toInt();//conversion de la chaîne numcom en nombre entier
    Moteurs(com,ncom); //mise en marche des moteurs, commande (com) : AV, RE, TD, TG, nombre (ncom) : nombre de pas ou mesure d'un angle
}
//Fonction Moteurs
void Moteurs(String commande, int pasang){
   double nbtour=0;
   if(commande=="AV"){
      nbtour=pasang/peri; //Calcul du nombre de tour avec le nombre de pas et le périmètre des roues
      for(int i=0; i<nbtour*pasParTour; i++){//Pour chaque pas jusqu'au nombre total de pas (nbtour*2048)
         MoteurPasAPasD.step(1);//Le moteur droit tourne d'un pas (normalement) dans le sens de la marche avant
         MoteurPasAPasG.step(1);//Le moeur gauche tourne d'un pas (normalement) dans le sens de la marche avant
      }
   }
   if(commande=="RE"){
      nbtour=pasang/peri;//comme pour "AV"
      for(int j=0; j<nbtour*pasParTour; j++){
         MoteurPasAPasD.step(-1);//Un pas en marche arrière (le sens est inversé par step(-1) au lieu de step(1)
         MoteurPasAPasG.step(-1);///Un pas en marche arrière
      }
   }
   if(commande=="TD"){
      nbtour=(pasang*disang)/peri;
      for(int m=0; m<nbtour*pasParTour; m++){
         MoteurPasAPasD.step(-1);//Un moteur en marche arrière, l'autre en marche avant
         MoteurPasAPasG.step(1);
      }
   }
   if(commande=="TG"){
      nbtour=(pasang*disang)/peri; //Serial.print(nbtour);
      for(int n=0; n<nbtour*pasParTour; n++){
         MoteurPasAPasD.step(1);
         MoteurPasAPasG.step(-1);
      }
   }
}

//Setup
//Cette procédure n'est exécutée qu'une fois au démarrage du programme
void setup(){
   MoteurPasAPasD.setSpeed(9);// applique une vitessese de 9 (le maximum est 10) au moteur de droite
   MoteurPasAPasG.setSpeed(9);//idem pour le moteur de gauche
}

//Loop
//Cette procédure est le coeur du programme : elle s'exécute en permanence (boucle)
void loop(){
   ExeCom("AV10");//lance la fonction ExeCom avec la commande "AV10" (les deux roues en marche avant)
   delay(1000);//cette action dure une seconde
   ExeCom("RE10");//puis la fonction ExeCom est relancée avec la commande "RE10" (deux moteurs en marche arrière)
   delay(1000);//pendant une seconde
   ExeCom("TD90");//etc.
   delay(1000);
   ExeCom("TG90");
   delay(1000);
}