Bonjour,

Eleve de terminale, je dois réaliser cette année un prototype de robot hexapode s'inspirant du prjoet RHEX :https://www.bostondynamics.com/rhex

J'utilie un capteur à efffet hall pour gérer la position du moteur. Voici la partie du programme dédiée à l'arrêt d'un moteur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int position_initMoteur5 = 0 ;         
  int position_init2Moteur5 = 8 ;
  int position_init3Moteur5 = -8 ; 
 
 
  // si position atteinte (compteur_M5= position moteur 5, IN1 et IN2 = sens de rotation)
  if((compteur_M5 >= position_init && compteur_M5 <= position_init2)|| (compteur_M5 < position_init && compteur_M5 >= position_init3)) {       
analogWrite(ENA_5,LOW); digitalWrite(IN1_5,LOW);digitalWrite(IN2_5,LOW); pos_M5= false;}  //arret du moteur
  else {
  // si position pas atteinte
    if(compteur_M5 < position_init3) {     
          analogWrite(ENA_5,80); digitalWrite(IN2_5, LOW); digitalWrite(IN1_5, HIGH);}
  // si dépassement de la position
    else if (compteur_M5> position_init2){ 
      analogWrite(ENA_5,80);
      digitalWrite(IN2_5,HIGH);
      digitalWrite(IN1_5,LOW);  }
   }
Voici mon problème: je voudrais qu'à l’arrêt ma patte soit en bas, donc en position 0. Mais plus le moteur a tourné avant, plus la position est élevée ( 1 tour=2096).
Il lui faut donc plusieurs tours à la patte pour qu'elle s’arrête. J'aimerais convertir la position dans un intervalle de [0;2096] pour que le temps d’arrêt ne dépasse pas un tour.
Auriez vous des idées??
Merci!