Lutte
Robots lutteur
Fabriquez un robot lutteur.
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
Video
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
}