IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Problème codage carte arduino pour portail automatique coulissant


Sujet :

Arduino

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème codage carte arduino pour portail automatique coulissant
    Bonjour a tous,
    Suite a un codage avec les pieds, je sollicite votre aide pour m'aider a résoudre certain problème dans le code.
    Mon projet est de contrôler grace au System Arduino un portail automatique avec une télécommande infrarouge.
    Mon systeme prend en compte des fin de course appelé fdcO et fdcF, des photocellules appelés photo, un moteur de portail et une lampe tout cela manœuvré par des relais.
    Si vous avez des liens ou de la documentation ou des cours et tutoriels Arduino sur des systeme du même genre ou autre, exemple radio commander je suis preneur.
    Par avance , merci pour votre aide
    le code ci joint:


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #include <IRremote.h>        
     
     
    int moteurO = 7;
    int moteurF = 10;
    int fdcO = 11;
    int fdcF = 12;
    int lampe = 13;
    int photo = 8;            
    int receptionIr = 2;          //La sortie du signal du récepteur Infrarouge (patte de gauche pour ce modéle) est connecté a la broche 2 
     
     
    IRrecv irrecv(receptionIr);   //Initialisation de la récepteion du réceptur Infrarouge 
     
    decode_results resultat;      //Stock le code reçus dans resultat  
     
    void setup()
    {
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(moteurO,OUTPUT);     //Declaration de relais en sortie
     
     
     
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(moteurF,OUTPUT);     //Declaration de relais en sortie
     
     
     
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(lampe,OUTPUT);     //Declaration de relais en sortie
     
     
     
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(photo,OUTPUT);     //Declaration de relais en sortie
     
     
     
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(fdcO,OUTPUT);     //Declaration de relais en sortie
     
     
     
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(fdcF,OUTPUT);     //Declaration de relais en sortie
     
    }
     
    void loop() 
    {  
      if (irrecv.decode(&resultat))       //Si il y a reception d'un code qui est stocké dans resulat 
      {
        if (resultat.value==0xFF30CF)       //Si le code reçus vaut le code du bouton que vous avez programmés (ici c'est 0xFF30CF qui est égale au bouton 1 de ma télécommande   
          {
            digitalWrite(moteurO,HIGH);  //  déclaration si moteur ouverture actif moteur fermeture inactif
            moteurO= 1;
            digitalWrite(moteurF,LOW);
            moteurF = 0;
            digitalWrite(moteurF,HIGH);   //  déclaration si moteur fermeture actif moteur ouverture inactif
            moteurF = 1;
            digitalWrite(moteurO,LOW);
            moteurO = 0;
          }                                     
       {    
     
        do // faire... 
          {
            digitalWrite(moteurO,HIGH);  
            moteurO=1;   
     
          } while (fdcO==1); 
     
          {  
     
         if (moteurO==1)
         {
         digitalWrite(fdcO,LOW);
          fdcO = 0;
          delay(15);     
         }
     
          do // faire... 
          {
            digitalWrite(moteurF,HIGH);  
            moteurF=1;   
     
          } while (photo==1);   
     
          {
          if (resultat.value==0xFF18E7)  //Si le code reçus vaut le code du bouton que vous avez programmés (ici c'est 0xFF18E7 qui est égale au bouton 2 de ma télécommande)
          {
                do // faire... 
                {
                       digitalWrite(moteurF,HIGH);   
                        moteurF=1;   
                } while (fdcF==1); 
          } 
      }
      }
      }
      }//Fin du if  
        irrecv.resume();           
     }

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    Citation Envoyé par zinzin66 Voir le message
    je sollicite votre aide pour m'aider a résoudre certain problème dans le code.
    Quels problèmes ?

    J'en vois déjà dans tes do while :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        do // faire... 
          {
            digitalWrite(moteurO,HIGH);  
            moteurO=1;   
    
          } while (fdcO==1);

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut probleme codage
    Merci pour cette réponse, correction faites sur le code.
    le probleme c'est que rien ne fonctionne, partant d'un code de base ci joint avec réception infrarouge de ma télécommande a un relais brancher a une led, ça fonctionne , mais mon code a moi rien ne se passe.

    le code fonctionnel :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #include <IRremote.h>         //Inclus la blibliothéque IRemote.h
     
    int relais = 7;               //Le relais (In 1 ou In 2) est connecté sur la broche 7
    int receptionIr = 2;          //La sortie du signal du récepteur Infrarouge (patte de gauche pour ce modéle) est connecté a la broche 2 
    int etat;                   //l'état de la LED (0 pour éteinte et 1 pour allumé
     
    IRrecv irrecv(receptionIr);   //Initialisation de la récepteion du réceptur Infrarouge 
     
    decode_results resultat;      //Stock le code reçus dans resultat  
     
    void setup()
      {
      irrecv.enableIRIn();        //Activation de la réception 
      pinMode(relais,OUTPUT);     //Declaration de relais en sortie
      etat=0;                     //etat indique si la LED est éteinte (etat=0) ou si elle est allumé (etat=1)
      }
     
    void loop() 
    {
     
      if (irrecv.decode(&resultat))       //Si il y a reception d'un code qui est stocké dans resulat 
     {
     
      if (resultat.value==0xFF30CF)       //Si le code reçus vaut le code du bouton que vous avez programmés (ici c'est 0xFF30CF qui est égale au bouton 1 de ma télécommande)
     
      //Ici l'Arduino vas basculer d'une position a une autre
      { 
     
      if(etat==0)                      //si etat=0
       {
          digitalWrite(relais,HIGH);   //Ici le relais est a l'état haut (il est alimenté)
          etat=1;                      //etat est maintenant a 1
     
       } //fin du if
     
       else if(etat==1)             //sinon, si etat=1
       {
        digitalWrite(relais,LOW);   //Ici le relais est a l'etat bas (il n'est pas alimenté)
        etat=0;                     //etat est maintenant a 0
     
       }    //fin du else if
     
      }   //Fin du if 
     
        irrecv.resume();          //Il ce prépare a recevoire le prochain code  
     
     }    //Fin du if 
     
     
     
     
     } //fin boucle loop

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Il y a beaucoup de choses à dire... Par exemple, tu confonds le numéro du connecteur avec son état haut ou bas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ...       
    int moteurO = 7;
     
    void setup()
    {
      ...
      pinMode(moteurO,OUTPUT);     //Declaration de relais en sortie
      ...
    }
     
    void loop() 
    {  
        if ...
          {
            digitalWrite(moteurO,HIGH);  //  déclaration si moteur ouverture actif moteur fermeture inactif
            moteurO= 1; // Aïe, le relais du moteur n'est plus sur le connecteur 7 !!??
            ...
          }                                      
         ...         
     }
    moteurO est le numéro du connecteur où est relié ton relais. Tu l'as mis sur le connecteur 7, et ça m'étonnerait qu'il change de place au cours du fonctionnement (ligne avec moteurO=1 !!)

    Ce que tu cherches à faire, c'est de connaître l'état d'une sortie pour la faire basculer. Tu peux passer par une variable supplémentaire etat_moteur comme dans ton programme d'exemple.

    Mais il me semble que sous Arduino, tu peux lire l'état d'un connecteur configuré en sortie avec digitalRead :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int moteurO = 7;
    int etat_moteur;
     
    pinMode(moteurO, OUTPUT);
    digitalWrite(moteurO, LOW);
     
    ....
     
    etat_moteur = digitalRead(moteurO);
     
    ...
    ce qui permet de basculer l'état :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    etat_moteur = digitalRead(moteurO);
    digitalWrite(moteurO, !etat_moteur);   // ! = opérateur not

Discussions similaires

  1. Problème sifflement carte Arduino - transistor
    Par cliaUlka dans le forum Arduino
    Réponses: 14
    Dernier message: 17/05/2016, 07h47
  2. Réponses: 4
    Dernier message: 06/06/2012, 08h56
  3. [XL-2007] Problème pour formule automatique
    Par kedrik dans le forum Excel
    Réponses: 3
    Dernier message: 03/03/2010, 23h01
  4. problème pour numéro automatique
    Par dinier dans le forum C#
    Réponses: 15
    Dernier message: 01/06/2009, 16h27
  5. Problème pour remplir automatiquement une table
    Par Atemi76 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/07/2007, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo