Lutte

Robots lutteur

Ro-Bots
Fabriquez un robot lutteur.
Temps de Fabrication15 minutes
Type de sport Lutte
Kit robotique Filaire, Sans fil

Outils

  • Paire de ciseaux
  • Tournevis de précision

Matériel
  

Électronique

  • 2 Unité Servo moteur 360°
  • 1 Unité Arduino UNO
  • 10 Unité Jumper
  • 1 Unité Shield bornier
  • 2 Unité LED
  • 5 Mètre Fil multibrin rouge
  • 5 Mètre Fil multibrin noir

Matériaux

  • 1 Morceau Carton fin
  • 1 Morceau Papier aluminium

Matériaux de récupération

  • 1 Unité boite d’œufs

Etapes de fabrication
 

  • Étape 1
  • Étape 2

Code arduino


/* 
Controle de deux servo 360 avec quatre boutons.
La déclaration en tant que pullup des boutons ne rend pas indispensable résistance sur le bouton car elle en active une intégrée dans l'arduino.
CW = Clockwise = Sens horaire
CCW = Counter clockwise = Sens Anti-horaire
CC-BY-NC-SA Pouvoir Faire

Pour le servo 180 le bouton est en 6 Et le servo est en 11

 */
 
#include <Servo.h>

Servo myservoG;  // Créé le servo Gauche
Servo myservoD;  // Crée le servo Droit
Servo myservo180A; // crée le servo 180 A

int servoPinG = 9;// Branchement du servo gauche sur la pin 9
int servoPinD = 10;// Branchement du servo droit sur la pin 10

int PinservoA = 11;// Branchement du servo droit sur la pin 11


int AvancePin = 2; //  Bouton pour avancer sur la pin 2
int ReculePin = 3; // Bouton pour reculer sur la pin 3
int GauchePin = 4; // Bouton pour aller à gauche sur la pin 4
int DroitePin = 5; // Bouton pour aller à droite sur la pin 5


int BtnPinA = 6; // Bouton pour actionner le Servo 180 A


        
int CCW = 120; // Valeur du servo pour le Sens anti horaire
int CW = 60; // Valeur du servo pour le Sens horaire
int Sstop = 93; // Valeur du servo pour le Stop, il se peut que le servo ne s'arrete pas complètement, cela est du à une impressision de fabrication


int AngleA = 180;// Maximum du servo moteur 180
int AngleB = 0 ; //minimum du servo moteur 180

void setup() {
  Serial.begin(9600);
  
  pinMode(AvancePin,INPUT_PULLUP);// declare la pin du bouton avance comme un bouton, ne rend pas indispensable résistance sur le bouton
  pinMode(ReculePin,INPUT_PULLUP);//  declare la pin du bouton recule comme un bouton
  pinMode(GauchePin,INPUT_PULLUP);//  declare la pin du bouton gauche comme un bouton
  pinMode(DroitePin,INPUT_PULLUP);//  declare la pin du bouton droite comme un bouton

  pinMode(BtnPinA,INPUT_PULLUP);//  declare la pin du bouton Servo 180 A comme un bouton


  myservoG.write(Sstop);// Initialise avec les moteur arrétés
  
}



void loop() {

bool    Avance = digitalRead(AvancePin);// Lit le statut du bouton avance et le met dans la variable Avance
bool    Recule = digitalRead(ReculePin);// Lit le statut du bouton recule et le met dans la variable Recule
bool    Gauche = digitalRead(GauchePin);// lit le statut du bouton gauche et le met dans la variable Gauche
bool    Droite = digitalRead(DroitePin); // Lit le statut du bouton droit et le met dans la variable Droite

bool    ArmeA = digitalRead(BtnPinA); // Lit le statut du bouton 180 A et le met dans la variable ArmeA

if (Avance == LOW){ // Si le bouton avancer est appuyé, envoi la fonction avancer
      Favancer();
  }
else if (Recule == LOW){ // Si le bouton reculer est appuyé, envoi la fonction reculer
   Freculer();
  }
else if (Gauche == LOW){ // Si le bouton gauche est appuyé, envoi la fonction Aller a gauche
    Fgauche();
  }
else if (Droite == LOW){ // Si le bouton Droite est appuyé, envoi la fonction Aller a droite
     Fdroit();
}

else if (ArmeA == LOW){ // Si le bouton Arme A est appuyé, envoi la fonction Activer l'arme A
     FArmeA();
}

else 
  {
    Fstop();  //Si rien n'est appuyé, envoi la fonction stop
  }
  
}

void Favancer(){ //Fonction Avancer
 myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
  
  
  myservoG.write(CW); // Fait tourner le moteur dans le sens horaire
  myservoD.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire
}

void Freculer(){  //Fonction Reculer
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
  
  myservoG.write(CCW); // Fait tourner le moteur dans le sens Anti-horaire
  myservoD.write(CW); // Fait tourner le moteur dans le sens horaire

}

void Fdroit(){ //fonction Aller à droite
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
     
  myservoG.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire
  myservoD.write(CCW);// Fait tourner le moteur dans le sens Anti-horaire

}

void Fgauche(){  //fonction Aller à gauche
  myservoG.attach(servoPinG);  // Attache le servo en pin 9 sur l'objet myservoG
  myservoD.attach(servoPinD);  // Attache le servo en pin 10 sur l'objet myservoD
     
  myservoG.write(CW); // Fait tourner le moteur dans le sens horaire
  myservoD.write(CW); // Fait tourner le moteur dans le sens horaire
    
}

void FArmeA(){
    myservo180A.attach(PinservoA);  // Attache le servo en pin 11 sur l'objet myservo180A
    myservo180A.write(AngleA); // Active l'arme avec l'angle A

}


void Fstop(){    //Fonction Stop
    myservoG.detach(); // ces deux commandes ont été rajouté car parfois les roues du bot continuaient à trouver même en ayant envoyé le signal STOP
    myservoD.detach(); // ces deux commandes ont été rajouté car parfois les roues du bot continuaient à trouver même en ayant envoyé le signal STOP
  myservo180A.write(AngleB);//minimum du servo 180
}
Style de sport Sport individuel