LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

dimanche 24 septembre 2017

32 visiteurs en ce moment

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

Retourner à l'article

Vous répondez à :

problèmes de rebond , Bouton poussoir 30 mars 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 :

  1. #include <Bounce2.h>
  2. #include <PinChangeInt.h>
  3. #include <LiquidCrystal.h>
  4. //////////////////////////////////////////////
  5. #include <SPI.h>
  6. #include <Mirf.h>
  7. #include <MirfHardwareSpiDriver.h>
  8. #include <MirfSpiDriver.h>
  9. #include <nRF24L01.h>
  10. //////////////////////////////////////////////////////
  11. float energy;
  12. float times;
  13. float paramValues[2]={0};
  14. int timesS;
  15. int timesM;
  16. ////////////////////////////////////////////////////////////
  17. //int pinBouton;
  18. boolean etatRecu;
  19. const byte pinBouton =6;
  20. Bounce bouton = Bounce();
  21. ////////////////////////////////////////////////////////////
  22. LiquidCrystal lcd(8,7,5,4,3,2);
  23. void setup() {
  24. // put your setup code here, to run once:
  25. Serial.begin(9600);
  26. etatRecu=0;
  27. bouton.attach(pinBouton);
  28. bouton.interval(5);
  29. pinMode(pinBouton, INPUT);
  30. PCintPort: attachInterrupt(pinBouton,tour,CHANGE);
  31. ////////////////////////////
  32. Mirf.cePin=9;
  33. Mirf.csnPin=10;
  34. Mirf.spi=&MirfHardwareSpi;
  35. Mirf.init();
  36. Mirf.channel=1;
  37. Mirf.payload=sizeof(paramValues) ;
  38. Mirf.config();
  39. Mirf.configRegister(RF_SETUP,00100110);
  40. //Mirf.configRegister(CONFIG,01111011);
  41. Mirf.setTADDR((byte*)"nrf01");
  42. Mirf.setRADDR((byte*)"nrf02");
  43. //////////////////////////////
  44. lcd.begin(16,2);
  45. //////////////////////////////
  46.  
  47. }
  48.  
  49. void loop() {
  50. bouton.update();
  51. tour();
  52. //Serial.println(etatRecu);
  53. if (etatRecu){
  54. if(Mirf.dataReady()){
  55. Mirf.getData((byte*)&paramValues);
  56. energy = paramValues[0];
  57. times = paramValues[1];
  58. timesM=times/60;
  59. timesS= times-60*timesM;
  60. }
  61.  
  62. //Serial.print("Energy:");
  63. Serial.println(energy);
  64. // Serial.print("Time:");
  65. Serial.print(timesM);
  66. Serial.print(":");
  67. Serial.println(timesS);
  68. Serial.println("pause");
  69. }
  70.  
  71.  
  72. else {
  73. if(Mirf.dataReady()){
  74. Mirf.getData((byte*)&paramValues);
  75. energy = paramValues[0];
  76. times = paramValues[1];
  77. timesM=times/60;
  78. timesS= times-60*timesM;
  79.  
  80. }
  81. //Serial.print("Energy:");
  82. Serial.println(energy);
  83. // Serial.print("Time:");
  84. Serial.print(timesM);
  85. Serial.print(":");
  86. Serial.println(timesS);
  87. //}
  88. lcd.print("Energy:");
  89. lcd.setCursor(8,0);
  90. lcd.print(energy,3);
  91. lcd.setCursor(15,0);
  92. lcd.print("J");
  93. lcd.setCursor(0,1);
  94. lcd.print("Time");
  95. lcd.setCursor(5,1);
  96. lcd.print(timesM);
  97. lcd.setCursor(8,1);
  98. lcd.print(":");
  99. lcd.setCursor(9,1);
  100. lcd.print(timesS);
  101.  
  102. lcd.home();
  103. Serial.println("marche");
  104. }
  105.  
  106. }
  107.  
  108. void tour(){
  109. int etatPinBouton= bouton.read();
  110. //digitalRead(pinBouton);
  111. //=bouton.read();
  112. int memoire= HIGH;
  113.  
  114. //Serial.println(etatPinBouton);
  115.  
  116. //(etatPinBouton!=memoire)&&(!etatPinBouton)à remettre dans la boucle
  117.  
  118. if(etatPinBouton==LOW){//bouton appuyé en pull up
  119.  
  120. if(etatRecu){
  121. etatRecu=0;
  122. }
  123. else{
  124. etatRecu=1;
  125. }
  126. }
  127. }

Cordialement

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

7 Messages

Rubrique Matériel

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servo-moteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Les derniers articles

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Le microcontrôleur ATtiny45 (2)


Christian

Le microcontrôleur ATtiny45 (1)


Christian

Les articles les plus lus

Commande de moteur à courant continu

Les écrans LCD alphanumériques

Les diodes classiques

La carte Arduino Uno

Qu’est ce qu’une carte Arduino ?

Bouton poussoir

Des bus de communication pour l’Arduino

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Les différents types de mouvements d’un servo-moteur

Relais électromagnétique