C''est-à-dire?
- Il faut avoir une variable qui contient l'état actuel embrayé/débrayé et une variable qui contient le fait que l'on a effectué une action.
- Il faut tester le bouton en permanence et comparer son état actuel avec son état précédent pour détecter un appui.
- si le bouton était au repos au cycle précédent et actuellement au repos effacer la variable qui contient le fait que l'on a effectué une action
-si le bouton était au repos au cycle précédent et actuellement activé et que l'action n'a pas été effectuée il faut:- changer l'état de la variable qui contient l'état embrayé/débrayé.
- effectuer l'action embrayage/débrayage
- mémorisé le fait que l'on a effectué l'action
- faire un petit delay() pour masquer les éventuels rebonds du bouton
Ce genre de chose peut être traitée assez facilement avec une machine à état. Il y a un tuto ici
À chaque fois que l'on commence la boucle for, la variable est initialisée à 0 (c'est ce qu'indique le premier argument de la fonction)
A noter
Les sorties PWM génère un signal relativement lent (sur les broche 5 et 6 c'est 980Hz, soit un peu plus de 1ms) or le temps d'exécution de la boucle for doit être inférieur à 1ms donc les 5 pas de ta boucle doivent être complètement masqués.