Bonjour,
J'a un bont qui est connectée a une pin de mon microprocesseur.
J'utilise ceci pour que d'est que mon bouton est pressé,
attachInterrupt(MO_BTN_INTERRUPT, sosBtnIinterrupt, FALLING); // TRY LOW or FALLING
la fonction sosBtnInterrupt() soit appelée.
Le premier problème, la fonction ISR sosBtnInterrupt() est très souvent appelée sans que j'aie appuyé sur le bouton. Je pense que c'est le cas du Bouncing car je n'ai pas encore mis de condensateut en paralélle avec le bouton poussoir.
A la limite ca c'est pas encore grave.
Voici mon code (c'est du debugage pour comprendre)
void sosBtnIinterrupt() //attachInterrupt
{
unsigned long last_time_btn = micros();
unsigned long time_micro;
sprintln(F("\n** btn Bounce **"),0);
time_micro = (long)(micros() - last_time_btn);
Serial.print(F("Con tim 1: "));
Serial.println(time_micro);
do
{
time_micro = (long)(micros() - last_time_btn);
Serial.print(F("Con tim 2: "));
Serial.println(time_micro);
}while(digitalRead(PIN_BTN) == 0 && time_micro < 1500);
Serial.print(F("Con tim 3: "));
Serial.println(time_micro);
if(times > 1000)
{
interrupt();
}
sprintln(F("===================\n"),0);
};
void interrupt(){
sprintln(F("Do somthing"),0);
}
quand je n'appuye pas sur le bouton, j'ai ceci:
** btn Bounce **
Con tim 1: 99
Con tim 2: 217
Con tim 3: 217
Si j'appuye sur le bonton j'ai ceci
** btn Bounce **
Con tim 1: 84
Con tim 2: 205
Con tim 2: 323
Con tim 2: 439
Con tim 2: 619
Con tim 2: 741
Con tim 2: 859
Con tim 2: 977
Con tim 2: 1100
Con tim 2: 1217
Con tim 2: 1334
Con tim 2: 1453
Con tim 2: 618
Con tim 2: 738
Con tim 2: 855
Con tim 2: 974
Con tim 2: 1097
Con tim 2: 1220
Con tim 2: 1338
Con tim 2: 1456
Con tim 2: 622
Con tim 2: 739
Con tim 2: 854
Con tim 2: 973
Con tim 2: 1090
Con tim 2: 1207
Con tim 2: 1323
Con tim 2: 1438
Con tim 2: 617
Con tim 2: 734
Con tim 2: 852
Con tim 2: 972
Con tim 2: 1093
Con tim 2: 1211
Con tim 2: 1328
Con tim 2: 1445
Con tim 2: 616
Con tim 2: 732
Con tim 2: 849
Con tim 2: 966
Con tim 2: 1081
Con tim 2: 1196
Con tim 2: 1314
Con tim 2: 1435
Con tim 2: 616
Con tim 2: 732
Con tim 2: 850
Con tim 2: 965
Con tim 3: 1082
Premièrement, je ne comprends pas pourquoi, il n'incrémente pas correctement et il n'atteind jamais le seuil de 1500.
Le but de l'exercie est que si le bouton est appayé entre 1seconde il affiche
Do something
Donc pour éviter le Bouncing, je devrais mettre un condensateur, mais j'aimerais bien comprendre pourquoi, je n'arrive pas à incémenter 0Con tim 2:' pour que si le bouton est appuyé 1 seconde, il affiche une action à faire.
Voyez-vous?
Pierre