[RESOLU] Eviter le défilement d'un menu quand bouton reste appuyé

Bonjour à tous,

J'ai un Arduino Mega sur lequel j'ai installé un shield LCD+Keypad (DFRobot).

J'ai un programme qui génère un menu (6 menus).

Lorsque que j'appuie sur le bouton UP ou DOWN je change de menu, ça fonctionne parfaitement.

Ce que je cherche :

Eviter le défilement du menu quand on reste appuyé sur le bouton.

Merci d'avance pour vous conseils !!

Enjoy

Ben

après la saisie de la touche, attendre qu'elle soit relâchée avant de ressaisir

mais avec ton code ce serait plus facile de t'aiguiller

bonjour,
cherche debounce

Le programme en pièce jointe.

Je regarde pour "debounce"

Merci à vous 2

sabre.ino (17.4 KB)

je pensais à un truc dans ce genre

int ReadKeypad() {
  adc_key_in = analogRead(0);             // lire la valeur du capteur 
  digitalWrite(13, HIGH);  
  key = get_key(adc_key_in);              // convertir en appuyez sur la touche
     
  if (key != oldkey) {                    // si pression sur la touche est détectée
    delay(50);                            // attendre le temps d'anti-rebond
    adc_key_in = analogRead(0);           // lire la valeur du capteur  
    key = get_key(adc_key_in);            // convertir en appuyez sur la touch
    if (key != oldkey) {                  
      oldkey = key;
  //****************************************************************
 while (adc_key_in > 1000)
  {
  adc_key_in = analogRead(0);             // lire la valeur du capteur 
  delay(10);
  }
  //****************************************************************  
      if (key >=0){
        return key;
      }
    }
  }
  return key;
}

dfgh:
je pensais à un truc dans ce genre

Ton astuce ne fonctionne pas.
Merci pour la proposition

et comme ça

//****************************************************************
 adc_key_in = analogRead(0);      
 while (adc_key_in > 1000)
  {
  adc_key_in = analogRead(0);             // lire la valeur du capteur 
  delay(10);
  }
  //****************************************************************

Non plus :frowning:

Le "Debounce", fonctionne également sur de l'"analogique" ?

comparaison inversée

adc_key_in = analogRead(0);      
 while (adc_key_in < 1000)
  {
  adc_key_in = analogRead(0);             // lire la valeur du capteur 
  delay(10);
  }

:grinning:

Un grand merci à toi dfgh, ça fonctionne !!!

Je t'en dois une :wink:

Karma !!!

heureux pour toi :slight_smile: