Debounce un pin analogique

Bonjour, j'essaye de faire une batterie pour clone hero,

pour la pédale j'ai compris comment utiliser la bibliothèque "Bounce2.h" mais pour les tambours/cymbale j'utilise des modules piezo dans les pins analogique quand je frappe dessus souvent il me détecte 2 entrée voire plus comment je peut debounce les piezo, merci !

const int sens = 200;
const int del = 0;
int PinState = 0;
int onoff = 0;
const int Pinled = 6;
const int PinButton = 9;
#include <Keyboard.h>
#include <Bounce2.h>

Bounce debouncer  = Bounce();
Bounce cym1  = Bounce();
Bounce cym2  = Bounce();
Bounce cym3  = Bounce();
Bounce cym4  = Bounce();

void setup() {   

debouncer.attach(PinButton,INPUT_PULLUP); 
debouncer.interval(25);

cym1.attach(A0); 
cym1.interval(25); 

cym2.attach(A1); 
cym2.interval(25); 

cym3.attach(A1); 
cym3.interval(25); 

cym4.attach(A3);
cym4.interval(25);



pinMode(Pinled, OUTPUT);
pinMode(PinButton, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(10, INPUT);
}
void loop() {

debouncer.update();
cym1.update();
cym2.update();
cym3.update();
cym4.update();

/*Pédale*/
onoff = digitalRead(10);
PinState = digitalRead(PinButton);
if(debouncer.rose()){
  digitalWrite(Pinled, HIGH);
  Keyboard.press('t');
}
/*Piezo 1*/
if(cym1.rose()){
  digitalWrite(2, HIGH);
  Keyboard.press('q');
}
/*Piezo 2*/
if(cym2.rose()){
  digitalWrite(3, HIGH);
  Keyboard.press('w');
}
/*Piezo 3*/
if(cym3.rose()){
  digitalWrite(4, HIGH);
  Keyboard.press('e');
}
/*Piezo 4*/
if(cym4.rose()){
  digitalWrite(5, HIGH);
  Keyboard.press('r');
}
Keyboard.releaseAll();
delay(del);
digitalWrite(Pinled, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}

Une entrée analogique ne se "debounce" pas.

Le "debounce" c'est un anti rebond => en français c'est plus clair :slight_smile: .
Les rebonds sont d'origine mécanique et se produisent dans les contacts qui rebondissent à la fermeture.
L'amplitude c'est soit 0 volt, soit Vcc.
Le principe d'un anti rebond logiciel est de tester l'information de lecture du bouton jusqu'à ce qu'elle arrête de "bagoter" entre 0V et Vcc.

Dans ton cas cela n'a rien à voir avec des rebonds mécaniques : c'est une onde sonore qui possède une fréquence et une amplitude variable. Tout va dépendre de la forme de l'amplitude.

Il faut trouver autre chose. Difficile de conseiller sans connaître la forme d'onde qui provoque deux détections au lieu d'une seule. Un relevé à l'oscilloscope aiderait.

Une idée : ne pas retenir la deuxième détection si elle est trop proche de la première.