Super librairie, merci Bricolo ! J'en ai utilisé plusieurs solutions, et gros gain de temps et de fiabilité, lisibilité et tout et tout ! J'ai apporté une petite modif sur l'exemple 10: Gestion d'un compteur avec un bouton + et un bouton - et répétition progressive en cas d'appui long.
j'ai ajouté une possiblité d'incrément par 1, ou 5 ou 10 pour augmenter encore la vitesse. l'incrémenteur, boostCompteur à déclarer en byte en public. le lignes que j'ai ajoutées sont marquées par "//************************" pour plus de visibilité.
//Exemple librairie simpleBouton.h
//Gestion d'un compteur avec un bouton + et un bouton -
//et répétition progressive en cas d'appui long
#include "simpleBouton.h"
simpleBouton bouton_plus(7);
simpleBouton bouton_moins(8);
//Cablage : pin---BP---GND
int compteur = 0;
void setup()
{
Serial.begin(115200);
Serial.println(compteur);
}
uint32_t delai;
bool blocage = false;
void loop()
{
bouton_plus.actualiser();
bouton_moins.actualiser();
if (bouton_plus.vientDEtreEnfonce() || bouton_moins.vientDEtreEnfonce()) delai = 0;
//Gestion du petit malin qui appuie sur les deux boutons en même temps
if (bouton_plus.estEnfonce() && bouton_moins.estEnfonce()) blocage = true;
if (bouton_plus.estRelache() && bouton_moins.estRelache()) blocage = false;
if (blocage) return;
if (bouton_plus.estEnfonceDepuisAuMoins(delai)) {
Compteur += boostCompteur ; //************************
//Serial.println(Compteur);
delai = delai + delaiRepetition(bouton_plus.dureeEtatActuel());
}
if (bouton_moins.estEnfonceDepuisAuMoins(delai)) {
Compteur -= boostCompteur ; //************************
//Serial.println(Compteur);
delai = delai + delaiRepetition(bouton_moins.dureeEtatActuel());
}
}
uint32_t delaiRepetition(uint32_t duree){ //Exemple de cadence progressive
if (duree < 500) {
boostCompteur =1; //************************
return 300;
}
if (duree < 2000) {
boostCompteur =5; //************************
return 150;
}
if (duree < 3000){
boostCompteur =10; //************************
return 100;}
return 10; // 10ms de cadence
}