Salut,
Je propose ici un test du Kit robot à chenille avec encodeurs.
Il est déjà entièrement assemblé, le châssis est soudé et les moteurs montés comme le montre la photo.
Bon pour commencer on va faire fonctionner ce mini char sans les encodeurs présents sur les moteurs chaque chose en son temps !
C'est un peu dommage, mais pour l'utiliser il faudra d'abord rallonger les fils d'alimentation des moteurs qui sont trop courts pour être branchés sur un quelconque driver   .
 .
Pour jouer avec ce petit char j'utilise : une radiocommande, un driver de moteur CC, un clone d'Arduino Uno et une batterie Li-Po.
Les branchements s'effectuent comme dans le test pour le driver puisque c'est le même.
Pour fixer les cartes sur le châssis, il y a plusieurs emplacement possible, il suffit d'en trouver un qui convient. Par contre comme les moteurs sont déjà montés et gènent un peu, c'est pas toujours évident pour positionner les vis et les entretoises.
Quelques images du robot avec les cartes :
J'ai commencé par faire un programme simple pour piloter uniquement le robot en avant ou en arrière en fonction des ordres de la radiocommande.
Je mets le code et une image une fois dans l'IDE (au cas ou le web editor ne fonctionne pas   ).
 ).
// Contrôle PWM simple
#define PB 3    // Contrôle vitesse moteur 1
#define B1 5    // Contrôle direction moteur 1
#define B2 6
#define PA 9    // Contrôle vitesse moteur 2
#define A1 10   // Contrôle direction moteur 2
#define A2 11 
                 // Déclaration des variables correspondantes
int ch2;        // aux différentes channels
int ch3;
unsigned int vitesse;    //vitesse de commande des moteurs
void stop()     //Stop
{
digitalWrite(PB,LOW);
digitalWrite(PA,LOW);
}
void avance(int vitesse) // En avant
{
analogWrite (PB,vitesse); // Contrôle de vitesse en PWM
digitalWrite(B1,LOW);
digitalWrite(B2,HIGH);
analogWrite (PA,vitesse);
digitalWrite(A1,LOW);
digitalWrite(A2,HIGH);
}
void recule (int vitesse) // En arrière
{
analogWrite (PB,vitesse);
digitalWrite(B1,HIGH);
digitalWrite(B2,LOW);
analogWrite (PA,vitesse);
digitalWrite(A1,HIGH);
digitalWrite(A2,LOW);
}
void setup() {
  pinMode(PB, OUTPUT);
  pinMode(B1, OUTPUT);
  pinMode(B2, OUTPUT);
  pinMode(PA, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  
                      // Configuration des broches
  pinMode(4, INPUT); // comme entrées
  pinMode(7, INPUT);
  Serial.begin(9600); // Démarage de la liaison série  
}
void loop() {
                                 // Lit la largeur d'impulsion de 
  ch2 = pulseIn(4, HIGH, 25000); // chaque channel
  delay(5);
  ch3 = pulseIn(7, HIGH, 25000);
  delay(5);
  vitesse=map(ch3,980,2000,0,255);   //valeur vitesse de commande
  Serial.print("Channel 2:");
  Serial.println(ch2);
  Serial.print("Channel 3:");
  Serial.println(ch3);
  if(ch2==0){  //radiocommande éteinte
    stop();
  }
else{
  if ((ch2>1470) and (ch2<1490)){
     stop();   
  }
  if (ch2>1490){    //joystick en avant
     avance(vitesse);   
  }
  if (ch2<1470){   //joystick en arrière
     recule(vitesse);   
  }
}
}
J'ai essayé un programme pour ajouter une fonction de rotation au robot. Et là ça devient un peu plus compliqué avec la gestion des différentes positions des joysticks   .
 .
// Contrôle PWM simple
#define PB 3 // Contrôle vitesse moteur 1
#define B1 5 // Contrôle direction moteur 1
#define B2 6
#define PA 9 // Contrôle vitesse moteur 2
#define A1 10 // Contrôle direction moteur 2
#define A2 11 
int ch1; // Déclaration des variables correspondantes
int ch2; // aux différentes channels
int ch3;
unsigned int vitesse;  //vitesse de commande des moteurs
void stop()     //Stop
{
digitalWrite(PB,LOW);
digitalWrite(PA,LOW);
}
void avance(int vitesse) // En avant
{
analogWrite (PB,vitesse); // Contrôle de vitesse en PWM
digitalWrite(B1,LOW);
digitalWrite(B2,HIGH);
analogWrite (PA,vitesse);
digitalWrite(A1,LOW);
digitalWrite(A2,HIGH);
}
void recule (int vitesse) // En arrière
{
analogWrite (PB,vitesse);
digitalWrite(B1,HIGH);
digitalWrite(B2,LOW);
analogWrite (PA,vitesse);
digitalWrite(A1,HIGH);
digitalWrite(A2,LOW);
}
void tourne_G (int vitesseB,int vitesseA) // Tourne à gauche
{
analogWrite (PB,vitesseB);
digitalWrite(B1,LOW);
digitalWrite(B2,HIGH);
analogWrite (PA,vitesseA);
digitalWrite(A1,LOW);
digitalWrite(A2,HIGH);
}
void tourne_D (int vitesseB,int vitesseA) // Tourne à droite
{
analogWrite (PB,vitesseA);
digitalWrite(B1,LOW);
digitalWrite(B2,HIGH);
analogWrite (PA,vitesseB);
digitalWrite(A1,LOW);
digitalWrite(A2,HIGH);
}
void tourne_G_AR (int vitesseB,int vitesseA) // Tourne à gauche en arrière
{
analogWrite (PB,vitesseB);
digitalWrite(B1,HIGH);
digitalWrite(B2,LOW);
analogWrite (PA,vitesseA);
digitalWrite(A1,HIGH);
digitalWrite(A2,LOW);
}
void tourne_D_AR (int vitesseB,int vitesseA) // Tourne à droite en arrière
{
analogWrite (PB,vitesseA);
digitalWrite(B1,HIGH);
digitalWrite(B2,LOW);
analogWrite (PA,vitesseB);
digitalWrite(A1,HIGH);
digitalWrite(A2,LOW);
}
void setup() {
  pinMode(PB, OUTPUT);
  pinMode(B1, OUTPUT);
  pinMode(B2, OUTPUT);
  pinMode(PA, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  
  pinMode(2, INPUT); // Configuration des broches
  pinMode(4, INPUT); // comme entrées
  pinMode(7, INPUT);
  Serial.begin(9600); // Démarage de la liaison série  
}
void loop() {
  ch1 = pulseIn(2, HIGH, 25000); // Lit la largeur d'impulsion de 
  delay(5);
  ch2 = pulseIn(4, HIGH, 25000); // chaque channel
  delay(5);
  ch3 = pulseIn(7, HIGH, 25000);
  delay(5);
  vitesse=map(ch3,980,2000,0,255);      //valeur vitesse
  Serial.print("Channel 1:");
  Serial.println(ch1);
  Serial.print("Channel 2:");
  Serial.println(ch2);
  Serial.print("Channel 3:");
  Serial.println(ch3);
  if(ch2==0){   //radiocommande éteinte
    stop();
  }
else{
  if ((ch2>1470) and (ch2<1490)){
     stop();   
  }
  if (ch2>1490){    //joystick en avant
     avance(vitesse);    
  }
  if ((ch1>1490) and (ch2>1490)){    //joystick à droite en avant
    if (vitesse<128){
     tourne_D(vitesse,255-vitesse);
    }
    else{
      tourne_D(255-vitesse,vitesse);
    }
  }
  if ((ch1<1470) and (ch2>1490)){    //joystick à gauche en avant
    if(vitesse<128){
     tourne_G(vitesse,255-vitesse);
    }
    else{
      tourne_G(255-vitesse,vitesse);
    }
  }
  if (ch2<1470){      //joystick en arrière
     recule(vitesse);   
  }
    if ((ch1>1490) and (ch2<1470)){    //joystick à droite en arrière
      if(vitesse<128){
       tourne_D_AR(vitesse,255-vitesse);
      }
      else{
        tourne_D_AR(255-vitesse,vitesse);
      }
  }
  if ((ch1<1470) and (ch2<1470)){    //joystick à gauche en arrière
    if(vitesse<128){
     tourne_G_AR(vitesse,255-vitesse);   
    }
    else{
      tourne_G_AR(255-vitesse,vitesse);
    }
  }
} 
}
Finalement voici le robot en action :
Bon.. les commandes ne sont pas encore tout à fait au point mais il y a de l'évolution !  
EDIT : Voici le tutoriel complet pour fabriquer votre char.

 
	 
			
			
			
				![Kit robot à chenille avec encodeurs [testé par mthibs] : message #1](https://www.robot-maker.com/forum/public/style_images/master/icon_share.png) 
					





 
				
				
				
 
  
				
				
				 
				
				
				
 
				
				
				 
				
				
				











 
  
	 
	 
	
 
					

