LOCODUINO

Bouton poussoir

. Par : Dominique, Guillaume, Jean-Luc

Introduction Les boutons poussoirs sont des interrupteurs temporaires : sitôt relâché, le BP (abréviation de Bouton Poussoir) revient à sa position de base, contrairement au commutateur qui peut avoir 2 positions stables ou plus. Ils sont associés à des contacts électriques et l’appui sur le bouton modifie l’état du contact : il l’établit ou (…)

Retourner à l'article

Vous répondez à :

Bouton poussoir 2 janvier 2016 10:38, par Thierry

haaaa . Grilled ! :)

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

21 Messages

  • Bouton poussoir 1er janvier 2016 21:26, par tanguy

    Bonjour et bonne année,

    dans l’extrait de code
    Bounce bouton = Bounce() ;
    à quoi sert la deuxième partie " = Bounce()" ?

    Répondre

    • Bouton poussoir 2 janvier 2016 10:26, par Jean-Luc

      Bonjour et meilleurs vœux pour 2016.

      Ça ne sert pas à grand chose. D’ailleurs je l’ai supprimé. Dans les deux cas, le constructeur sans argument de Bounce est appelé.

      Répondre

    • Bouton poussoir 2 janvier 2016 10:38, par Thierry

      Bonjour
      Lors de la déclaration d’une instance (un exemplaire) de la classe Bounce nommée ’bounce’, il est possible de faire appel au constructeur que l’on veut plutôt que de faire automatiquement appel à celui par défaut. La notation employée ici est inutile puisque l’on appelle quand même le constructeur par défaut sans arguments ! Il s’agit là du code officiel de l’exemple ’Bounce’ livré avec la bibliothèque Bounce2...

      Répondre

  • Bouton poussoir 2 janvier 2016 10:38, par Thierry

    haaaa . Grilled ! :)

    Répondre

  • problèmes de rebond , Bouton poussoir 30 mars 2017 09:20, par Almamy

    Bonjour, actuellement je cherche à mettre en pause l’affichage sur mon joulemètre qui reçoit les valeurs d’un emetteur NRF24L01 . Ce pendant quand j’appuie sur le bouton, il fonctionne correctement mais au fur et à mesure ce problème de rebond est de plus en plus fréquent. J’utilise la bibliothèque Bounce2 et un trigger de schmitt, mais rien à faire. Lorsque je relie la pin qui reçoit l’information du bouton au trigger, le basculement se fait automatiquement, pouvez-vous m’aider ?

    Voici mon programme :

    #include <Bounce2.h>
    #include <PinChangeInt.h>
    #include <LiquidCrystal.h>
    //////////////////////////////////////////////
    #include <SPI.h>
    #include <Mirf.h>
    #include <MirfHardwareSpiDriver.h>
    #include <MirfSpiDriver.h>
    #include <nRF24L01.h>
    //////////////////////////////////////////////////////
    float energy;
    float times;
    float paramValues[2]={0};
    int timesS;
    int timesM;
    ////////////////////////////////////////////////////////////
    //int pinBouton;
    boolean etatRecu;
    const byte pinBouton =6;
    Bounce bouton = Bounce();
    ////////////////////////////////////////////////////////////
    LiquidCrystal lcd(8,7,5,4,3,2);
    void setup() {
      // put your setup code here, to run once:
    Serial.begin(9600);
    etatRecu=0;
    bouton.attach(pinBouton);
    bouton.interval(5);
    pinMode(pinBouton, INPUT);
    PCintPort: attachInterrupt(pinBouton,tour,CHANGE);
    ////////////////////////////
    Mirf.cePin=9;
    Mirf.csnPin=10;
    Mirf.spi=&MirfHardwareSpi;
    Mirf.init();
    Mirf.channel=1;
    Mirf.payload=sizeof(paramValues) ;
    Mirf.config();
    Mirf.configRegister(RF_SETUP,00100110);
    //Mirf.configRegister(CONFIG,01111011);
    Mirf.setTADDR((byte*)"nrf01");
    Mirf.setRADDR((byte*)"nrf02");
    //////////////////////////////
    lcd.begin(16,2);
    //////////////////////////////
    
    }
    
    void loop() {
      bouton.update();
      tour();
      //Serial.println(etatRecu);
      if (etatRecu){
     if(Mirf.dataReady()){
      Mirf.getData((byte*)&paramValues);
      energy = paramValues[0];
      times = paramValues[1];
      timesM=times/60;
      timesS= times-60*timesM;
     }
      
      //Serial.print("Energy:");
       Serial.println(energy);
     // Serial.print("Time:");
      Serial.print(timesM);
      Serial.print(":");
      Serial.println(timesS);
      Serial.println("pause");
     }
    
      
    else  {
       if(Mirf.dataReady()){
      Mirf.getData((byte*)&paramValues);
      energy = paramValues[0];
      times = paramValues[1];
      timesM=times/60;
      timesS= times-60*timesM;
      
       }
      //Serial.print("Energy:");
      Serial.println(energy);
     // Serial.print("Time:");
      Serial.print(timesM);
      Serial.print(":");
      Serial.println(timesS);
     //}
     lcd.print("Energy:");
    lcd.setCursor(8,0);
    lcd.print(energy,3);
    lcd.setCursor(15,0);
    lcd.print("J");
    lcd.setCursor(0,1);
    lcd.print("Time");
    lcd.setCursor(5,1);
    lcd.print(timesM);
    lcd.setCursor(8,1);
    lcd.print(":");
    lcd.setCursor(9,1);
    lcd.print(timesS);
    
     lcd.home();
    Serial.println("marche");
    }
    
    }
    
    void tour(){
     int etatPinBouton= bouton.read();
     //digitalRead(pinBouton); 
     //=bouton.read();
    int memoire= HIGH;
    
    //Serial.println(etatPinBouton);
    
     //(etatPinBouton!=memoire)&&(!etatPinBouton)à remettre dans la boucle
    
    if(etatPinBouton==LOW){//bouton appuyé en pull up
      
      if(etatRecu){
        etatRecu=0;
      }
      else{
        etatRecu=1;
      }
    } 
    }

    Cordialement

    Répondre

  • Bouton poussoir 13 juillet 2017 21:17, par Jacques

    Bonjour Dominique, Guillaume et Jean-Luc,
    Cet article est génial car il explique clairement comment utiliser la bibliothèque Bounce2.
    Merci à tous,
    Jacques

    Répondre

  • Bouton poussoir lumineux 25 septembre 2018 17:34, par Pascal

    Bonjour,
    Pour aller plus loin avec cet article très intéressant sur les boutons poussoir, existe-t-il des boutons poussoirs avec une led RVB intégrée qui permettrait par exemple de passer d’une couleur verte pour dire bouton activable à rouge pour bouton inutilisable ?
    D’avance merci pour votre réponse
    Cordialement
    Pascal

    Répondre

    • Bouton poussoir lumineux 27 septembre 2018 08:35, par dominique

      Un tel bouton n’existe pas tel que vous le décrivez. Mais il existe des boutons avec leds intégrées, en cherchant sur le net.

      Ensuite c’est à vous de piloter les leds avec un Arduino.

      Répondre

    • Bouton poussoir lumineux 30 septembre 2018 12:11, par Laurent

      Bonjour,

      J’ai eu besoin d’utiliser ce type de boutons pour un montage en cours.

      J’ai commandé des boutons de borne d’arcade sur Arcade World.

      J’ai ensuite remplacé la led par une rvb (il faut modifier le support de led pour pouvoir faire passer tous les fils).

      Attention, les boutons peuvent être commandés complets (avec led, support de led et contacteur), ou bouton seul (pour dépannage).

      Voir en ligne : Arcade World

      Répondre

      • Bouton poussoir lumineux 1er octobre 2018 08:27, par Pascal

        Merci beaucoup pour ces informations (et pour l’adresse web, ou finalement pas besoin de faire trop de bricolage car ça existe déjà..... cf : lien ci dessous)

        Voir en ligne : bouton lumineux RGB

        Répondre

  • Bouton poussoir 1er octobre 2018 07:02, par Pascal

    Merci pour ces informations
    Maintenant yapluk....

    Répondre

  • Bouton poussoir 8 janvier 2019 17:06, par Roland Codaccioni

    bonjour,
    Je suis sur un projet de plaque tournante HO avec les données suivantes :
    une carte Arduino uno, un moteur step 5V DC ref 28BYJ -48 avec son module de branchement, un bouton pressoir pour faire tourner le moteur dans un sens et un autre BP pour aller dans l’autre sens de manière à aligner les rails par petites impulsions avant arrière.
    Je parviens bien à faire tourner le moteur en suivant les instructions de câblage mais impossible d’arriver à inclure les 2 BP dans ce processus.
    Avez vous un schéma qui permettrait de résoudre ce problème SVP ?
    Merci d’avance
    Cordialement RC

    Répondre

    • Bouton poussoir 14 février 2020 12:58, par Fina

      Il me semble que pour le plateau tournant
      Un potentiomètre serait plus utile :
      On tourne de chaque côté le potar pour un nombre de pas du moteur
      ...

      Répondre

  • Bouton poussoir 21 novembre 2021 19:11, par Claude49

    Bonjour
    Sur mon réseau, je refais mon TCO. J’utilise donc des boutons poussoirs. Quand ils sont activés ils déclenchent une interruption....d’où la gestion des rebonds. Je viens de "tomber" sur la bibliothèque Bounce 2...ça me plait bien. Ma question dois je déclarer une instance Bounce pour chacun des boutons du genre
    ( si B1, B2, B....sont des boutons) :
    Bounce B1 = Bounce() ;
    Bounce B2 = Bounce() ;
    Bounce B3 = Bounce() ;

    void setup()

    B1.attach(pinBouton) ;
    B1.interval(5) ;
    pinMode(pinB1, INPUT) ;

    B2.attach(pinBouton) ;
    B2.interval(5) ;
    pinMode(pinB2, INPUT) ;

    B3.attach(pinBouton) ;
    B3.interval(5) ;
    pinMode(pinB3, INPUT) ;

    Mis à part les instructions attach et pinMode, doit on tout répéter

    Merci

    Répondre

  • Bouton poussoir 21 novembre 2021 20:04, par Dominique

    Oui. Regardez les exemples de la bibliothèque !

    Répondre

    • Bouton poussoir 22 novembre 2021 17:05, par Claude49

      Merci
      Il fallait aller dans /examples/more.....on ne va jamais au fond des choses

      Répondre

  • Bouton poussoir 10 octobre 2022 14:34, par Olivier

    Bonjour,
    Je gère un moteur PAP avec des pulses de l’ordre de 60 ms, tout en veillant les appuis potentiels sur des bp de contrôle et d’autres actions. Je n’ai donc pas droit à des interruptions de programme pour débouncer mes bp. Est-ce que Bounce2 induit des interruptions dans le PG ou conserve-t-il dans une mémoire les valeurs lues pour comparaison avant validation d’appui ? Merci pour la réponse.

    Répondre

    • Bouton poussoir 10 octobre 2022 14:58, par msport

      Bonjour,

      un petit tour dans la bibliothèque Bounce2 permet de lire (Bounce2,h) :

      Because Bounce does not use interrupts, you have to "update" the object before reading its value and it has to be done as often as possible (that means to include it in your loop()). Only call update() once per loop().

      Cordialement

      Répondre

      • Bouton poussoir 10 octobre 2022 16:06, par Olivier

        Vitesse de réponse impressionnante !! Si je comprends bien il garde en mémoire le premier état et le compare jusqu’à la tempo désirée sans stand-by.je peux donc l’insérer dans ma routine, c’est bien ça ? (Merci encore)

        Répondre

Rubrique Matériel

Les derniers articles

Les articles les plus lus