Librairie Buttons

Je continue sur ma lancée dans l’écriture de librairies pour l’environnement Arduino, cette fois-ci c’est une petite lib qui gère l’utilisation des boutons déjà débouncés en hardware (il existe plein de fonctions pour faire du software-debouncing, ce n’est pas le sujet ici..). Ca parait simple, mais ça évite pas mal de répétition de code, pour faire par exemple un bouton en one-shot qui incrémente un compteur, si on reste appuyé dessus et qu’on utilise digitalRead(), le compteur va monter en flèche. 

J’ai donc défini des modes d’utilisation pour les boutons:
OneShot: Ne renvoie ON qu’une fois par cycle d’appui du bouton (littéralement, compter les ON revient à compter le nombre de fois que le bouton est appuyé).
Memory: Renvoie ON lorsque le bouton est appuyé, mais aussi Pressed lors du front montant, et Released lors d’un front descendant.
Timer: un système de Hold, renvoie ON tant que le bouton est appuyé, s’il l’est pendant suffisament longtemps (ce temps est réglable), il revoie Hold.
Les autres modes sont des combinaisons de ces trois-ci.