• Post category:Tourelle Nerf
  • Commentaires de la publication :2 commentaires
  • Dernière modification de la publication :mars 15, 2022
  • Temps de lecture :5 min de lecture

Tourelle Nerf Auto pilotée par Arduino Version 1

Description :

Projet de création d’une tourelle automatique nerf pilotée par un Arduino.

Voici la version 1.

La structure est modélisée sous Solidworks et imprimé grâce à une imprimante résine. (Elegoo Mars 2 Pro)

Elle est pilotée grace à un joystick et 2 boutons pour commander le tir et allumage des moteurs.

 

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Uno
  • 2 x Boutons
  • 1 x Servo Tower pro 9g sg90
  • 2 x Servos Tower Pro MG995
  • 2 x TT Moteur 130
  • 1 x KY-023 Joystick
  • 1 x L298N
  • 1 x Alimentation 9v
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

Fichiers SolidWorks et STL :

 

 

Code :

#define joystick1 A0
#define joystick2 A1
#define btmoteur 4
#define bttire 5
#define borneENA 6
#define borneIN1 7
#define borneIN2 8
#define borneIN3 9
#define borneIN4 10
#define borneENB 11
#define servo1 2
#define servo2 3
#define servo3 12

int poservo1 = 80;
int poservo2 = 40;
int poservo3 = 180;

#include <Servo.h>
Servo monServo1;
Servo monServo2;
Servo monServo3;

void setup() {
Serial.begin(9600);
monServo1.attach(servo1); monServo1.write(poservo1);
monServo2.attach(servo2); monServo2.write(poservo2);
monServo3.attach(servo3); monServo3.write(poservo3);
delay(10);
pinMode(btmoteur, INPUT_PULLUP);
pinMode(bttire, INPUT_PULLUP);
pinMode(borneIN1, OUTPUT); pinMode(borneIN2, OUTPUT);
pinMode(borneIN3, OUTPUT); pinMode(borneIN4, OUTPUT);
pinMode(borneENA, OUTPUT); pinMode(borneENB, OUTPUT);
}

void loop() {
int Joystick1 = analogRead(joystick1);
int Joystick2 = analogRead(joystick2);

if (Joystick1 > 800 && Joystick1 < 1024 && poservo1 < 140) {
poservo1++;
monServo1.write(poservo1);
delay(10);
}
if (Joystick1 >= 0 && Joystick1 < 200 && poservo1 > 40) {
poservo1--;
monServo1.write(poservo1);
delay(10);
}
if (Joystick2 > 800 && Joystick2 < 1024 && poservo2 < 70) {//haut
poservo2++;
monServo2.write(poservo2);
delay(10);
}
if (Joystick2 >= 0 && Joystick2 < 200 && poservo2 > 10) {
poservo2--;
monServo2.write(poservo2);
delay(10);
}

if (digitalRead(btmoteur) == 0) {
digitalWrite(borneIN1, HIGH); digitalWrite(borneIN2, LOW);
digitalWrite(borneIN3, LOW); digitalWrite(borneIN4, HIGH);
analogWrite(borneENA, 250); analogWrite(borneENB, 250);
}
else {
digitalWrite(borneIN1, LOW); digitalWrite(borneIN2, LOW);
digitalWrite(borneIN3, LOW); digitalWrite(borneIN4, LOW);
}
if (digitalRead(bttire) == 0 && digitalRead(btmoteur) == 0) {
monServo3.write(60);
}
else {
monServo3.write(180);
}
}

 


 

Cet article a 2 commentaires

  1. Têtenoire

    Salut, j’ai testé le fonctionnement des moteurs pas a pas.
    j’envoyais des ordre simple de positionnement aux moteurs
    et a un moment ca c’est arrêté et depuis plus aucun moteurs ne bouge.
    est ce que la puissance des moteurs MG996R peut endommager une carte arduino 328 plus ou la sortie usb de mon pc portable?
    merci d’avance

    1. steven

      Bonjour,

      Pour ce type de montage, il est parfois préférable d’utiliser une source de courant externe 5 V, car en effet, les MG995R consomment pas mal d’intensité par rapport à ce que peut fournir la carte.
      Pour votre carte et votre pc je ne peux pas vous répondre, il va falloir essayer de faire le diagnostic vous-même.
      Pour la prise USB de votre Pc, vous vous pouvez essayer de brancher simplement un câble de téléphone et voir s’il charge.

      Cordialement,

Répondre à Têtenoire Annuler la réponse