Batak Machine: l'entrainement aux réflexes

Je vois pas trop ce que vous voulez dire pour CTRL-Z, pour moi ce raccourcit permet de revenir en arrière non ?

Je voulais dire ctrl-T :slight_smile:

Je n'ai pas déclaré les boutons en INPUT_PULLUP parce que on a déjà debouncé en hard et on a mis les résistances de pullup directement dans les interfaces

OK

Et pour la séquence avec le if et le while je ne comprends pas en quoi le if peut etre supprimé, il sert a executer la commande qui suit une seule fois plutot que plusieurs fois dans le while

Votre code c’est

if(digitalRead(bouton[0]) == LOW){while(digitalRead(bouton[0])==LOW){}

Donc si le bouton 0 est 0 low vous bouclez tant qu’il est à LOW. ça revient exactement au même mais plus court) de dire boucler tant que le bouton est à LOW.. s’il ne l’est pas en rentrant dans le while alors le while termine tout de suite, c’est comme votre if, sinon vous bouclez.

Quelques remarques de plus:

  • indentez (ctrl-T dans l’IDE arduino) le code et sautez des lignes, ça améliorera la lisibilité

  • Attention à l’usage des long au lieu de unsigned long partout où vous gérez le temps

  • attention le calcul des formules littérales se fait en entier 16 bits signés si pas de long ou unsigned long dans l’expression (Par exemple votre explication avec ... < 60 * 1000 ne marchera pas car 601000 ne fait pas 60000... il faut écrire 601000ul )

  • utilisez true et false pour les boolean pour être sémantiquement correct et ne pas dépendre de promotion

  • utilisez des noms parlants plutôt que les index de boutons pour ceux qui ont une fonction spéciale (comme vous le faites pour boutonStart - par exemple 10 et 11 pour le menu)- les pins sont mieux déclarées en const byte plutôt qu’en char