projet crepp_git/crepp-projects/cocci-bot · branche main
Fmoteurs.ino Voir sur GitLab
//****MODULE MOTEURS **** //
//Il met en oeuvre les parametres recus par voie serie
//et stocke dans les quatre premieres valeurs du tableau "params"
//(details dans communication)

//ATTENTION :Pour le passage de parametres en manuel par le port serie,le module
//n'integre pas de gestion des erreurs de frappe.Le but final etant de passer les
// parametres de facon automatique ,notamment par le biais d'une interface python.

void Moteurs() { // Application des parametres moteurs
   
     static int pinSens[2]={4,7};//broches pour ecriture digitalWrite
     static int diff[2];//tableau incrementation progressive des vitesses pour chaque moteur
        
          if ((sens[0]!=params[2]) or (sens[1]!=params[3]) or (vitesse[0]!=params[0]) or (vitesse[1]!=params[1])) {
      // si une valeur moteur change (ou plusieurs)...
      
          for(int k=0;k<2;k++) {// pour les deux moteurs (a supprimer si un seul moteur.
                                // sinon k<nombre de moteurs
             if(sens[k]!=params[k+2]){//Si changement de sens

                analogWrite(pins[k+5],0);//vitesse[k]);//on applique la vitesse nulle 
                // a adapter selon la broche vitesse choisie
                sens[k]=params[k+2];//on memorise le nouveau sens
                digitalWrite(pinSens[k],sens[k]);// on applique le nouveau sens                         
             }//fin if
             
              if(params[k]==0){//en cas de vitesse passee nulle
               
                 analogWrite(pins[k+5],0);//on met la vitesse a 0 sans ralentissement progressif
                 // a adapter  :k + No de broche le plus faible si les broches moteur se suivent.
                 //Si les broches ne se suivent pas,creer un tableau avec leurs numeros 
                 // pour pouvoir les appeler.(cf pinSens)
                 vitesse[k]=params[k];                                      
               }//fin if 0
               
                diff[k] =(params[k] - vitesse[k])/10;// on cree 10 pas /pour chaque moteur
                              
           }//fin for k
             
               
           for (int i =0;i<10;i++) { //on applique 10 fois ce pas pour chaque moteur)
                for(int m=0;m<2;m++){// alterne l'acceleration sur chaque moteur           
                      if(diff[m]!=0){//pour un pas non nul
                      vitesse[m]=vitesse[m] + diff[m];//a chaque boucle on incremente la vitesse du pas
                      //alternativement sur chaque moteur                                       
                      if (vitesse[m]>255){vitesse[m]=255;}//verifie qu'on reste<255
                      if (vitesse[m]<0){vitesse[m]=0;}// verifie qu'on reste>0
                      analogWrite(pins[m+5],vitesse[m]);//application de la vitesse
                      delay(100);//pour progressivite de l'acceleration
                      
                      if(i==9){//en fin de boucle
                         vitesse[m]=params[m];//on memorise la nouvelle vitesse            
                      }//fin if memo vitesse
                  
                      }//fin if diff                      
                    }// fin for m                                                     
                 }//fin for i
          }// fin if "s'il y a un changement d'etat moteur
}// fin void moteurs