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); }