[Programmation] Problème bouton poussoir + débitmètre Arduino [Résolu]
Répondre à la discussion
Page 1 sur 3 12 DernièreDernière
Affichage des résultats 1 à 30 sur 63

Problème bouton poussoir + débitmètre Arduino [Résolu]



  1. #1
    jmjim

    Problème bouton poussoir + débitmètre Arduino [Résolu]


    ------

    Bonjour à tous.

    J'aurais besoin de quelqu'un qui si connais en Arduino car la je bloque.

    Voici se que je voudrais faire :

    Lorsque j'appuis sur un bouton poussoir (appuis puis relâche), le relais_EV (relais pour une électrovanne) se ferme.
    Le débitmètre commence à compter le débit (il fonctionne par impulsions) donc une variable compte le nombres d'impulsions et quand j'arrive aux nombres souhaité je coupe l'électrovanne (relais_EV en position ouvert).

    Mais je bloque sur le bouton poussoir. Je suis obligé de resté appuyé pour que le relais soit fermé, du coup je ne peux pas tester la partie débitmètre (je ne sais pas si elle fonctionne).
    Comme vous pouvez le voir, j'ai essayé de mettre une variable (valeur_bouton) qui est censé ce mettre à "1" quand j'appuis sur le bouton poussoir mais dès que je relâché le bouton elle doit apparemment ce remettre a "0", enfin c'est se que je pence.

    Pouvez-vous m'aidé SVP ca serait super!

    Merci d'avance.

    PS : J'ai oublié de préciser que ce code compile.

    Code:
    #define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino
    
    const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino
    const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino
    
    int etat_bouton_NO; //variable qui enregistre l'état du bouton
    int etat_debitmetre; //variable qui enregistre l'état du débit mètre
    int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre
    
    int valeur_bouton; // variable memoire du bouton NO
    
    
    void setup() {
      pinMode(bouton_NO, INPUT); //le bouton est une entrée
      pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie
      digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint"
      pinMode(debitmetre, INPUT); //le débit mètre est une entrée
      
    
    }
    
    void loop() {
     etat_debitmetre = digitalRead(debitmetre); 
     etat_bouton_NO = digitalRead(bouton_NO);
      
      if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low)
      {
        valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1
      }
      
      if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1
      {
        digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme
      }  
      
    
      if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé"
         {
          Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion 
         }
     
      if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est inférieur ou égale à "10" 
         {
          digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme
          valeur_bouton = 0; // Je remets la variable valeur_bouton a "0"
         } 
    }

    -----
    Dernière modification par jmjim ; 12/11/2015 à 08h52.

  2. #2
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Bonjour,
    Il faut initialiser la variable Nb_impulsions à zéro.
    Et corriger le commentaire "Si la variable Nb_impulsion est supérieure ou égale à "10" dans la ligne:
    if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est inférieur ou égale à "10"

  3. #3
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Merci pour votre réponse rapide!

    J'ai mit :

    Code:
    Nb_impulsion = 0;
    dans void setup et corriger le commentaire, mais ca ne fonctionne toujours pas ; il faut toujours que je reste appuyé sur le bouton poussoir pour que le relais soit fermé.

    Comment je peux faire pour que le relais reste fermé quand je relache le bouton poussoir?

  4. #4
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Si j'ai bien compris, le débitmètre sort des impulsions quand l'EV est ouverte ?
    Le Bp tire l'entrée vers zéro pendant l'appui ?
    Il faut aussi mettre la variable de comptage à zéro à chaque cycle.

  5. A voir en vidéo sur Futura
  6. #5
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Montre le schéma.

  7. #6
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Oui c'est bien cela, quand l'électrovanne s'ouvre (le contact relais_EV est donc fermé) le débitmètre compte le nombre d'impulsions.
    Oui c'est vrai une erreur bête : j'ai pas remis a 0 la variable d'impulsions pour le cycle suivant.
    Voici le code modifié :
    Code:
    #define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino
    
    const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino
    const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino
    
    int etat_bouton_NO; //variable qui enregistre l'état du bouton
    int etat_debitmetre; //variable qui enregistre l'état du débit mètre
    int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre
    
    int valeur_bouton; // variable memoire du bouton NO
    
    
    void setup() {
      pinMode(bouton_NO, INPUT); //le bouton est une entrée
      pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie
      digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint"
      pinMode(debitmetre, INPUT); //le débit mètre est une entrée
      Nb_impulsion = 0;
    
    }
    
    void loop() {
     etat_debitmetre = digitalRead(debitmetre); 
     etat_bouton_NO = digitalRead(bouton_NO);
      
      if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low)
      {
        valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1
      }
      
      if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1
      {
        digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme
      }  
      
    
      if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé"
         {
          Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion 
         }
     
      if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est supérieure ou égale à "10" 
         {
          digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme
          valeur_bouton = 0; // Je remets la variable valeur_bouton a "0"
         }
       Nb_impulsion = 0; // remise à "0" du compteur d'impulsions.  
    }
    Mais comment puis-je faire pour le BP car la je suis obligé de le tenir "enfoncé" pour que le relais soit fermé, dès que je lâche, le contact du relais ce réouvre.
    Comment faire pour qu'un seul appuis sur le BP suffise à faire "partir le cycle" jusqu'à ce que le débitmètre arrive à 10 impulsions et qu'il me "coupe" le relais (contact relais en position ouvert)?

  8. #7
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Pour pouvoir répondre il faut savoir si ton entrée Bp est en pull up ou pull down pour pouvoir utiliser le front montant ou descendent pour déclencher la fermeture du relais qui commande l'EV.
    As tu essayé de remplacer 10 impulsions par 100 ?
    As tu regardé à quelle fréquence arrivent les impulsions ?

  9. #8
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    vu l'emplacement de la remise à zéro le relais ne devrait plus bouger.

    Il faut la mettre dans la condition >10

    Pour que le relais coupe au bout de n pulses
    Il faut mémoriser le fait que le bouton es bas dans une variable. etat = 1
    Puis autoriser le test que si cette variable est à 0
    puis quand le bouton change on met etat=0 , l'initialiser aussi au départ
    A+, pat

  10. #9
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    As tu regardé à quelle fréquence arrivent les impulsions ?
    +1
    surement trop court.
    A+, pat

  11. #10
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Voici un petit schema
    Images attachées Images attachées  

  12. #11
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Enlève le débitmètre et envoi des impulsions avec un Bp pour simuler le débitmètre.

  13. #12
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Je ne peux pas testé le débitmètre car le relais ne reste pas en position fermé.

    Il faut déjà que le relais reste ferme même quand je lâche le BP.

    Ce que j'ai voulais faire :

    J'ai créer une variable etat_bouton_NO;

    etat_relais = digitalRead(bouton_NO);

    J'ai créer une variable valeur_bouton;

    Dans void setup:

    Si etat_bouton_NO est égale à LOW alors la variable valeur_bouton se mets à "1"

    Si la variable valeur_bouton est à "1", alors je ferme le relais_EV

  14. #13
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par adipie Voir le message
    Enlève le débitmètre et envoi des impulsions avec un Bp pour simuler le débitmètre.
    Dans mes test je n'ai pas branché le débitmètre. Ca sert a rien vu que le relais ne reste pas enclenché tout seul.

    Ma question est : comment rédiger le code pour que mon relais reste enclenché (contact du relais en position fermé) tout seul quand j'appuis une seule fois le BP (appuis bref puis relâche)?
    Dernière modification par jmjim ; 12/11/2015 à 10h57.

  15. #14
    antek

    Re : Problème bouton poussoir + débitmètre Arduino

    Si bp pressé -> alimenter le relais
    Si bp non pressé -> ne rien faire

    Puisque ton relais est mis au repos par ailleurs.

  16. #15
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    met une 10k au + sur l'entrée débitmètre
    A+, pat

  17. #16
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    C'est ca qui ce passe!

    Mais moi je voudrai dans l'ordre :
    BP pressé = alimenter le relais puis
    BP relaché = le relais reste alimenté = l'électrovanne est donc ouverte = le débimètre tourne (je compte le nombre d'impulsion) puis à X impulsions le relais ce ferme. Fin de la boucle.

    Mais je bloque au niveau du BP, je n'arrive pas à laisser le relais enclenchait quand le lâche le BP

  18. #17
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par freepicbasic Voir le message
    met une 10k au + sur l'entrée débitmètre
    Oui c'est prévu, j'ai oublier de la mettre sur le schéma dsl!

  19. #18
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    ton entrée n'est pas polarisée , il voit des états bas et compte +1 à chaque tour !
    Met une pull up de 10K !
    A+, pat

  20. #19
    antek

    Re : Problème bouton poussoir + débitmètre Arduino

    Applique la logique que je t'ai donnée, elle réalise ton besoin.

    test bp
    - bp pressé -> var=1
    - bp relaché -> var=0

    si relais alimenté -> goto suite
    si var=0 -> goto test bp
    si var=1 -> alim relais / et faire var=0

    suite

    Je connais pas arduino, mais avant d'écrire le code il faut mettre noir sur blanc la logique de ce qu'on veut faire.
    Quel que soit le langage.

  21. #20
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par freepicbasic Voir le message
    ton entrée n'est pas polarisée , il voit des états bas et compte +1 à chaque tour !
    Met une pull up de 10K !
    D'accord je comprend mais la je teste sans débitmètre. Je procède par étape.
    J'ai tout branche sauf le débitmètre mais le relais se ferme quand je lache le BP. D'ou ma question : comment faire pour que le relais reste ferme quand je lache le BP?

  22. #21
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    enlève le débitmètre et branche les pins débitmètre et le poussoir ensemble

    Il devrait s'arrêter au bout de 10 coups de poussoir.
    a moins que le bouton fassent des rebonds, il faudrait une tempo de 200ms dans la boucle
    A+, pat

  23. #22
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Voici le code modifier...
    A ce niveau la c'est bon le bouton poussoir fonctionne comme je le veux.
    Il m'enclenche bien le relais_EV et quand je relache le relais reste enclenché. Mais par contre la partie du débitmetre ne fonctionne pas. Il ne doit pas me compte le nombre d'impulsions.

    Code:
    #define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino
    
    const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino
    const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino
    
    int etat_bouton_NO; //variable qui enregistre l'état du bouton
    int etat_debitmetre; //variable qui enregistre l'état du débit mètre
    int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre
    
    int valeur_bouton; // variable memoire du bouton NO
    
    
    void setup() {
      pinMode(bouton_NO, INPUT); //le bouton est une entrée
      pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie
      digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint"
      pinMode(debitmetre, INPUT); //le débit mètre est une entrée
      Nb_impulsion = 0;
      valeur_bouton = 0;
    }
    void loop() {
     etat_debitmetre = digitalRead(debitmetre); 
     etat_bouton_NO = digitalRead(bouton_NO);
      
      if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low)
      {
        valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1
      }
      
      else
      {
        valeur_bouton = 0; // sinon la variable valaur_bouton se mets a 0
      }  
       
      
      if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1
      {
        digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme
      }  
      
      if(relais_EV == LOW) // SI relais_EV est a l'etat bas
        {if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé"
         {
          Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion 
         }
     
         if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est supérieure ou égale à "10" 
         {
          digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme
          valeur_bouton = 0; // Je remets la variable valeur_bouton a "0"
          Nb_impulsion = 0; // remise à "0" du compteur d'impulsions.
         }
        } 
    }
    J'ai mis comme vous m'avez dis une résistance de 10k entre le +5v et le fils d'impulsions (broche 3 de l'arduino)

  24. #23
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par antek Voir le message
    Applique la logique que je t'ai donnée, elle réalise ton besoin.

    test bp
    - bp pressé -> var=1
    - bp relaché -> var=0

    si relais alimenté -> goto suite
    si var=0 -> goto test bp
    si var=1 -> alim relais / et faire var=0

    suite

    Je connais pas arduino, mais avant d'écrire le code il faut mettre noir sur blanc la logique de ce qu'on veut faire.
    Quel que soit le langage.
    J'ai compris et suivis ce que vous m'avez dit.
    Désolé si j'ai pas la logique qu'il faut je suis débutant dans la programmation.
    Le relais ce reste bien collé mais le débitmètre ne compte pas les impulsions.

  25. #24
    antek

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par jmjim Voir le message
    Désolé si j'ai pas la logique qu'il faut je suis débutant dans la programmation.
    Avant de se jeter sur le code comme la vérole sur le bas-clergé wallon (ou breton, gascon, au choix)
    il faut écrire une sorte de ordinogramme qui décrit les actions à effectuer,
    et en français (pas dans le langage de programmation).

  26. #25
    DAUDET78

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par antek Voir le message
    Avant de se jeter sur le code comme la vérole sur le bas-clergé wallon (ou breton, gascon, au choix)
    il faut écrire une sorte de ordinogramme qui décrit les actions à effectuer,
    et en français (pas dans le langage de programmation).
    Là, Antek tu es vraiment vieux jeu ! La méthode moderne consiste à pisser de la ligne et ensuite de demander qu'on résolve le problème sur un forum .

    PS : C'est quelque fois plus long que l'ancienne méthode !
    J'aime pas le Grec

  27. #26
    antek

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par DAUDET78 Voir le message
    Là, Antek tu es vraiment vieux jeu !
    Sûrement !
    Je lis même la doc avant de tripoter les boutons !

  28. #27
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par antek Voir le message
    Avant de se jeter sur le code comme la vérole sur le bas-clergé wallon (ou breton, gascon, au choix)
    il faut écrire une sorte de ordinogramme qui décrit les actions à effectuer,
    et en français (pas dans le langage de programmation).
    Ce que je veux que le programme fasse :
    J'appuis et je relâche le bouton poussoir
    Le relais de l’électrovanne ce ferme (par conséquence l’électrovanne s'ouvre)
    Le débitmètre tourne et envoie des impulsions
    Une fois les impulsions arrivé aux nombres souhaité, l’électrovanne ce ferme.
    ainsi dessuite...

    Ce que j'ai écrit dans le programme :

    Si variable etat_bouton_NO est a l'état bas (low) -> Alors la variable valeur_bouton se mets a "1"
    Sinon la variable valeur_bouton se mets à "0"
    Si la variable valeur_bouton est égale "1" -> alors le relais de l'électrovanne ce ferme (etat bas)
    Du coup l'electrovanne s'ouvre -> Le débitmètre tourne
    Si le relais de l'electrovanne est fermé et si le débitmètre est à l'état bas (soit une impulsion) ->
    Alors j'incrémente de +1 la variable Nb_impulsion
    Si le nombre d'impulsions est supérieur ou égale à 10 -> alors l'électrovanne ce ferme, la variable valeur_bouton ce mets à 0 et la variable Nb_impulsion ce mets aussi a 0

  29. #28
    adipie

    Re : Problème bouton poussoir + débitmètre Arduino

    Citation Envoyé par jmjim Voir le message
    Le relais ce reste bien collé mais le débitmètre ne compte pas les impulsions.
    C'est l'Arduino qui compte les impulsions et pas le débitmètre ou ai je mal compris ?.
    Je réitère ce que j'ai déjà proposé: Tu remplaces le débitmètre par un bouton poussoir et tu envois les impulsions manuellement.
    Un lien concernant ce débitmètre ne serait pas inutile

  30. #29
    freepicbasic

    Re : Problème bouton poussoir + débitmètre Arduino

    const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino
    const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino
    C'est la pin 3 ou la 2
    Si ça se trouve il est tout simplement connecté à coté de la bonne pin...
    A+, pat

  31. #30
    jmjim

    Re : Problème bouton poussoir + débitmètre Arduino

    Une erreur d'ecriture que j'avais pas vu.

    Bouton_No connecté au pin 4
    Débitmetre connecté au pin 3

Page 1 sur 3 12 DernièreDernière

Discussions similaires

  1. arduino, servomoteur et bouton poussoir
    Par Anolis57 dans le forum Électronique
    Réponses: 68
    Dernier message: 22/07/2015, 12h53
  2. besoin d'aide bouton poussoir avec l'arduino mega
    Par joeman1 dans le forum Électronique
    Réponses: 11
    Dernier message: 20/10/2014, 20h32
  3. Problème bouton poussoir Arduino
    Par moha698 dans le forum Électronique
    Réponses: 8
    Dernier message: 27/04/2014, 17h07
  4. Bouton poussoir farçeur (énervant) [résolu]
    Par invite424deccd dans le forum Bricolage et décoration
    Réponses: 29
    Dernier message: 10/09/2012, 17h53
  5. Bouton poussoir et minuterie ? [résolu]
    Par crobe dans le forum Bricolage et décoration
    Réponses: 15
    Dernier message: 03/04/2011, 14h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.