Bonjour à tous,
Je rencontre un petit souci avec un code arduino et un contrôle de moteurs DC.
Je doit les contrôler via joysticks et pont H "L298" en tout ou rien.
Lorsque je mes en pratique mon code après avoir réalisé les branchements comme il faut, j'ai les moteurs qui tournent en continu et dans un seul sens quelque soit la position des potentiomètres. je n'ai ni d’arrêt, ni de marche AR (les moteurs sont en sorties digitale).
Voici un bout de mon code: (car trop long pour le poster intégralement) J'ai tester le fonctionnement des trois servos eux ils fonctionnent.
#define*motorPin1a*22*// broche 22 digital, moteur 1 marche AV (propulsion)
#define*motorPin1b*23*// broche 23 digital, moteur 1 marche AR (propulsion)
#define*motorPin2a*24*// broche 24 digital, moteur 2 marche AV (propulsion)
#define*motorPin2b*25*// broche 25 digital, moteur 2 marche AR (propulsion)
#define*motorPin3a*26*// broche 26 digital, moteur vertical marche AV (plongée)
#define*motorPin3b*27*// broche 27 digital, moteur vertical marche AR (plongée)
#define*motorPin4a*28*// broche 28 digital, moteur allongement bras gauche marche AV (manip)
#define*motorPin4b*29*// broche 29 digital, moteur allongement bras gauche marche AR (manip)
#define*motorPin5a*30*// broche 30 digital, moteur rotation bras gauche marche AV (manip)
#define*motorPin5b*31*// broche 31 digital, moteur rotation bras gauche marche AR (manip)
#define*motorPin6a*32*// broche 32 digital, moteur allongement bras droit marche AV (manip)
#define*motorPin6b*33*// broche 33 digital, moteur allongement bras droit marche AR (manip)
#define*motorPin7a*34*// broche 34 digital, moteur rotation bras droit marche AV (manip)
#define*motorPin7b*35*// broche 35 digital, moteur rotation bras droit marche AR (manip)
#define*ledPin36***36*// broche 36 digital, LED sortie capteur
#include*<Servo.h>
Servo myservo1; // créer un objet servo 1 pour le contrôler; servo camera
Servo myservo2; // créer un objet servo 2 pour le contrôler; servo pince gauche
Servo myservo3; // créer un objet servo 3 pour le contrôler; servo pince droite
int sensorPin1 = A0; // Joystick x entrée analog (moteur 1&2 propulsion)
int sensorPin2 = A1; // Joystick y entrée analog (moteur 1&2 propulsion)
int sensorPin3 = A2; // Joystick entrée analog (moteur plongée)
int sensorPin4 = A3; // Joystick x entrée analog (moteur allong bras gauche)
int sensorPin5 = A4; // joystick Y entrée analog (moteur rota bras gauche)
int sensorPin6 = A5; // joystick x entrée analog (moteur allong bras droit)
int sensorPin7 = A6; // joystick y entrée analog (moteur rota bras droit)
int potpin8 = A7; // borne analogique pour connecter le potentiomètre 1 (servo camera)
int potpin9 = A8; // borne analogique pour connecter le potentiomètre 2 (servo pince gauhe)
int potpin10 = A9; // borne analogique pour connecter le potentiomètre 3 (servo pince droite)
int val1; // variable pour stocker la valeur du potentiomètre 1
int val2; // variable pour stocker la valeur du potentiomètre 2
int val3; // variable pour stocker la valeur du potentiomètre 3
int pinPot1 = A10; // Potentiomètre 10K, tention 0-5v (valeur de 0-1024) "controle LED 1
int pinLed1 = 12; // LED 1 , controle éclairage en PWM
int potValue1 = 0; // valeur du potentiomètre LED 1 de 0-1024
int sensorValue = 0; // valeur joysticks à 0
int pinPot2 = A11; // Potentiomètre 10K, tention 0-5v (valeur de 0-1024) "controle LED 2&3
int pinLed2 = 13; // LED 2, controle éclairage LED 2 PWM
int pinLed3 = 8; // LED 3, controle éclairage LED 3 PWM
int potValue2 = 0; // valeur du potentiomètre LED 2&3 de 0-1024
int capteurEau = 37; // capteur voie eau
void setup() {
**// declare the ledPin as an OUTPUT:
**pinMode(motorPin1a , OUTPUT);
**pinMode(motorPin1b , OUTPUT);
**pinMode(motorPin2a , OUTPUT);
**pinMode(motorPin2b , OUTPUT);
**pinMode(motorPin3a , OUTPUT);
**pinMode(motorPin3b , OUTPUT);
**pinMode(motorPin4a , OUTPUT);
**pinMode(motorPin4b , OUTPUT);
**pinMode(motorPin5a , OUTPUT);
**pinMode(motorPin5b , OUTPUT);
**pinMode(motorPin6a , OUTPUT);
**pinMode(motorPin6b , OUTPUT);
**pinMode(motorPin7a , OUTPUT);
**pinMode(motorPin7b , OUTPUT);
***myservo1.attach(9); // brancher le servomoteurs 1 sur l'entrée 9
**myservo2.attach(10); // brancher le servomoteurs 2 sur l'entrée 10
**myservo3.attach(11); // brancher le servomoteurs 3 sur l'entrée 11
**pinMode( pinLed1, OUTPUT );
**analogWrite( pinLed1, 0 ); // Eteint la Led 1 (PWM 0%)
**pinMode( pinLed2, OUTPUT );
**analogWrite( pinLed2, 0 ); // Eteint la LED 2&3 (PWM 0%)
**Serial.begin(9600); // debug capteur eau
**Serial.println("Lancement de la capture" ); // indique le lancement de la capture (capteur eau)
*}
void loop () {
sensorValue*=*analogRead(sensorPin1); // moteur propulsion 1
if (sensorValue> 150){
//marhe*avant*
digitalWrite(motorPin1a , HIGH);
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , HIGH);
}*else
if (sensorValue< 100) {
//marhe*arriere**
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , HIGH);
digitalWrite(motorPin2a , HIGH);
digitalWrite(motorPin2b , LOW);
}
else {
//stop**
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , LOW);
}
sensorValue*=*analogRead(sensorPin2); //moteur propulsion 2
**
if (sensorValue> 150) {
//gauche*
digitalWrite(motorPin2a , HIGH);
digitalWrite(motorPin2b , LOW);
digitalWrite(motorPin1a , HIGH);
digitalWrite(motorPin1b , LOW);
}*else
if (sensorValue< 100) {
//droite*
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , HIGH);
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , HIGH);
}
else {
//stop*
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , LOW);
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , LOW);
}
-----