LOCODUINO

Les interrupteurs

Ou comment basculer d’un avis à l’autre...

. Par : Thierry

Des interrupteurs, vous en utilisez tous les jours : allumer la lumière, mettre son clignotant (enfin ceux qui les utilisent...), allumer son aspirateur (si, si, le truc bruyant qui vous réveille le samedi matin !). C’est un élément extrêmement courant de notre vie quotidienne. Il ne faut pas confondre ces bascules matérielles avec des (…)

Retourner à l'article

Vous répondez à :

Les interrupteurs 24 février 2022 20:26, par msport

Bonjour,

effectivement vous n’êtes pas sur le bon forum, voyez plutôt le forum.arduino.cc.
Et vous trouverez certainement la solution avec la bibliothèque Bounce2 ci-dessous
avec if ( debouncerB.fell() ) {...
puis if ( debouncerB.rose() ) {...
Cordialement

Voir en ligne : Bibliothèque Bounce2

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.)

8 Messages

  • Les interrupteurs 10 septembre 2016 21:53, par Dominique

    Il y a peut-être une alternative à l’utilisation de la bibliothèque Bounce2 pour éliminer les rebonds :

    Le principe de l’anti-rebond est de faire 2 mesures espacées d’un temps de latence (quelques millisecondes), la 2ème mesure devant confirmer la première.

    Bounce2 embarque un temporisation dans chacun des objets dont les méthodes peuvent être appelées n’importe quand, et c’est bien normal. Si on appelle inter.update() dans la loop, cela déroule pas mal de code dans le processeur, à chaque tour de la loop donc pour presque rien.

    Si, par contre, on limite l’accès en lecture aux pins des inters, après l’écoulement d’une tempo qui est placée dans la loop, on n’a plus besoin de la bibliothèque bounce2, cette tempo pouvant être commune à tous les inters et poussoirs branchés sur des pins.

    Exemple :

      if (millis()-debounce > SAMPLE_TIME) {
        debounce = millis();   
        if ((digitalRead(STARTSTOP) == 0) && bouton ) {
          if (dccON) {
            digitalWrite(SIGNAL_ENABLE_PIN_MAIN,LOW);
            dccON = false;
          } else {
            digitalWrite(SIGNAL_ENABLE_PIN_MAIN,HIGH);
            dccON = true;
          }
          bouton = false;
        }
        if (digitalRead(STARTSTOP) == 1) {
          bouton = true;
        }      
      }

    Ici un seul bouton STARTSTOP est testé et comparé à sa valeur précédente "bouton" pour signaler un changement. J’aurais pu tester plusieurs inters et poussoirs dans le même temps.

    Puisque ce code retarde les mesures suivantes après la tempo "SAMPLE_TIME", on obtient le même résultat qu’avec Bounce2... en plus simple !

    Et pendant que la loop ne s’occupe pas des poussoirs et inters, elle a plus de temps pour les autres tâches.

    N’est-il pas ?

    Répondre

    • Les interrupteurs 11 septembre 2016 11:04, par Thierry

      C’est tout à fait juste. Bounce2 n’est que le moyen ’simple’ de mettre en oeuvre un timer logiciel sur chaque broche. Il n’est pas du tout obligatoire de s’en servir et on peut faire comme tu le fais ici avec un compteur de temps local. C’est d’ailleurs ce que j’avais utilisé dans UAD et ré-utilisé dans Commanders. Quant à gagner du temps en mutualisant ce timer, je ne suis pas sûr. Ce qui est sûr c’est que de la mémoire vive sera gagnée puisqu’un seul entier sera nécessaire au lieu d’un par broche, mais pour le temps d’exécution on ne gagne qu’un test entre deux entiers à chaque broche. A creuser...

      Répondre

  • Les interrupteurs 5 mai 2020 19:51, par Younes

    Bonjour,
    Tout d’habord merci pour ce partage.Voilà en fait,je travail sur un projet, et j’ai un soucis avec mon code,(je dois creer avec un arduino nano un systeme de clignotant avec un temps de clignotement de 6sec), mais le probleme c’est que l’interupteur que j’utilise(et je ne peux pas le changer :x) c’est un interupteur a bascule mais qui revient sur sa position initiale, je m’en sors vraiment pas, j’éspère avoir une reponse de votre part... *,*
    Merci d’avance :)

    Répondre

  • Les interrupteurs 20 août 2020 18:05, par sana

    comment faire le câblage d’un interrupteur KCD2 ave cart arduino ? merci

    Répondre

  • Les interrupteurs 20 août 2020 19:33, par msport

    Bonjour,
    Locoduino est un site participatif dédié au modélisme ferroviaire utilisant les Arduino.
    Si c’est le cas, décrivez votre projet sur le forum, rubrique "Vos projets", vous aurez probablement une réponse.
    Sinon relisez cette page, il y a certainement ce qu’il vous faut.
    Cordialement

    Répondre

  • Les interrupteurs 24 février 2022 17:06, par Claude Bouzerand

    Bonjour , J’essai de realiser un controle d’humidité pour une cave d’affinage pour fromage. Lhumidificateur est un refroidisseur d’air a eau avec ventilateur (essais concluants ) J’ai un Hygrostat 220 v avec un relais en sortie doc un contact sec . Je veux conserver ce "climatiseur avec son tableau de controle(vitesse ventilation,debit reglable eau...) la miise en route et l’arret se font aves un bouton poussoir simple premiere impulsion : Marche 2 eme appui :arret Avec un arduino Je veus faire ce contact a l’aide d’un relais Arduino 5 v. Que j’ai aussi. Mon idée est de meservir d’un contact du relais de l’hygrostat qui devient un interrupteur qui lors de ses changements d’etat enverra par la Uno un impulsion de 1/2s au relais qui etablira le contact arret ou marche de la "Clim."(J’ai tiré 2 fils en parallele du bouton poussoir soudes sur ses 2 contacts. Quel serait le programme le plus approprié pour cette realisrion de base... Je ne veux pas utiliser de hardware , batterie de relais. Je vous remercie de votre attention, ce n’est pas du modelisme ,ici...mais votre sie semble bien actif

    Répondre

  • Les interrupteurs 24 février 2022 20:26, par msport

    Bonjour,

    effectivement vous n’êtes pas sur le bon forum, voyez plutôt le forum.arduino.cc.
    Et vous trouverez certainement la solution avec la bibliothèque Bounce2 ci-dessous
    avec if ( debouncerB.fell() ) {...
    puis if ( debouncerB.rose() ) {...
    Cordialement

    Voir en ligne : Bibliothèque Bounce2

    Répondre

  • Les interrupteurs 18 août 2022 20:18, par MaX

    Je cherchais comment gérer un interrupteur ’Center Off’ et ce tuto est parfait !
    Merci beaucoup !

    Répondre

Rubrique Matériel

Les derniers articles

Les articles les plus lus