====== Jalon 5 : Implanter de nouvelles fonctions ====== [[in202:seance_6|Retour à la séance 6]] ====== Question n° 1: Gérer les rebonds ====== Il se peut que quand vous relâchez le bouton, vous réappuyez de manière transitoire, ce qui peut déclencher un flux supplémentaire. Dans ce cas, l'idée est de définir un temps minimal entre deux appuis du bouton, pour ne pas prendre en compte un tel rebond. Pour ce faire, vous pouvez modifier le ''EventHandler'' en vous assurant que ce temps minimal c'est bien déroulé entre deux événnements de type ''Pressed'', ''Released'' et ''Changed''. Pour déterminer le temps qui s'est écoulé, il suffit de stocker dans un champ, par exemple ''int m_lastPressedTime'' le temps auquel s'est déroulé le dernier événement pris en compte. La fonction [[https://www.arduino.cc/reference/en/language/functions/time/millis/|''millis()'']] retourne le nombre de millisecondes qui se sont écoulés depuis le démarrage de la carte. Modifier la classe ''ButtonEvents'' pour prendre en compte ce mécanisme de contrôle de rebond. ** Indication ** : dans ''template class ButtonEvents'', en complément de ''static Button* mButton'', il faut ajouter les champs ''static int mLastPressedTime'', ''static int mLastReleasedTime'', ''static int mLastChangedTime''. Ensuite, il faut modifier les fonction ''Pressed'', ''Released'' et ''Changed'' pour n'appeller que quand le temps écoulé depuis le dernier événements pris en compte est supérieur à un certain délai, 200 ms semble être un bon critère entre //deux appuis// sur le bouton. ====== Question n° 2: Augmenter les fonctions de votre LED ====== Nous pouvons imaginer un fonctionnement plus complexe que celui actuel, où la carte **ARDUNINO** fonctionne comme un télérupteur. Vous appuyez une fois, cela allume la diode interne, une deuxième fois, cela l'éteint. Nous pouvons imaginer un cylce plus complexe : * premier appui : allumage de la diode en continu, * appui suivant : clignotement de la diode toute les secondes, * appui suivant : clignotement de la diode toute les demi-secondes, * appui suivant : extinction de la diode. Modifier votre classe pour implanter un tel comportement. ====== Navigation ====== Précédent: ** Jalon 4: **[[.:jalon_4|Ajouter à la classe Button la réactivité]]