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
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);
}
}
Nombre de vues: 727
WordPress:
J’aime chargement…