Problème arduino
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème arduino



  1. #1
    oniff

    Problème arduino


    ------

    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);
    }


    -----

  2. #2
    nornand

    Re : Problème arduino

    tu parles de moteurs DC puis de servos les commandes ne sont pas les mêmes , éclairci ce point , de plus un schéma aiderai à la compréhension

  3. #3
    freepicbasic

    Re : Problème arduino

    tu as 3 positions par manche.
    Donc 2 manches ce qui fait (3x3) 9 combinaisons
    tu devrait donc avoir un swtch { case: avec 9 cas
    correspondant a chaque cas
    Pour cela tu doit avoir lu avant les positions des 2 manches

    admettons 3 positions
    Haut Miliieu et bas (1 2 3)
    et
    gauche Milieu droite (123)

    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1
    3 2
    3 3

    dans ton prog tu efface les conditions de l'un des manches par celles de l'autre, il y a que 3 posibiltés.
    A+, pat

Discussions similaires

  1. probleme COM avec arduino
    Par invite14ce6ed4 dans le forum Électronique
    Réponses: 3
    Dernier message: 30/11/2012, 06h32
  2. Problème LCD T6963C Arduino
    Par Simset dans le forum Électronique
    Réponses: 8
    Dernier message: 21/11/2011, 17h52
  3. Arduino + L93D + 2 moteurs 6V: problème
    Par Globoeil dans le forum Électronique
    Réponses: 18
    Dernier message: 30/06/2011, 17h03
  4. Problème arduino
    Par darche_j dans le forum Électronique
    Réponses: 3
    Dernier message: 07/05/2011, 18h08
  5. Probleme Arduino Drone !
    Par invite1631615b dans le forum Électronique
    Réponses: 13
    Dernier message: 07/01/2011, 12h51
Découvrez nos comparatifs produits sur l'informatique et les technologies.