Tu écris le code, tout compile, le bouton devrait faire quelque chose — mais rien. Ou pire : le bouton se déclenche tout seul sans que tu le touches. Les variables sautent aléatoirement de 0 à 1. Le code semble fou, mais le code n'est pas le problème.
Une entrée flottante, voilà le problème. Et tu le règles avec deux centimes de résistances.
Qu'est-ce qu'une entrée flottante ?
Une entrée numérique lit haut ou bas. Mais si elle n'est connectée nulle part solidement — ni à l'alimentation, ni à la masse — elle flotte. Elle capte aléatoirement des perturbations de l'environnement : bruit électromagnétique, couplage capacitif avec d'autres signaux, même ta main qui approche. Le résultat est un comportement imprévisible qui n'a rien à voir avec ton code.
Pull-up : haut par défaut, bas sur action
Une résistance pull-up connecte l'entrée via une résistance à la tension d'alimentation. Sans action, l'entrée lit haut. Si tu appuies sur un bouton qui tire l'entrée vers la masse, le signal passe bas.
C'est le montage le plus utilisé pour les boutons sur microcontrôleurs. La logique est inversée — pressé = LOW, relâché = HIGH — mais on s'y habitue vite et c'est le schéma standard dans le code Arduino avec INPUT_PULLUP.
Pour la résistance, on choisit typiquement 10 kΩ. Le CRG0805F10K (10 kΩ, 1%, 0805) ou le CRGH0805F10K (10 kΩ, 1%, 0805, puissance plus élevée) sont de bons choix.
Pull-down : bas par défaut, haut sur action
Une résistance pull-down connecte l'entrée via une résistance à la masse. Sans action, l'entrée lit bas. Si tu connectes l'entrée à l'alimentation — via un bouton ou un capteur — le signal passe haut. La logique est directe : actif = HIGH.

Quelle valeur choisir ?
Trop élevée (au-dessus de 100 kΩ) et l'entrée est sensible aux parasites. Trop faible (en dessous de 1 kΩ) et un courant inutile circule, ce qui compte sur les systèmes alimentés sur batterie. Pour la plupart des boutons et capteurs, 10 kΩ est la valeur standard.
Sur l'I2C — le bus de communication utilisé par beaucoup de capteurs — des pull-ups sont nécessaires sur les lignes SDA et SCL. La valeur optimale dépend en partie de la vitesse du bus : à 100 kHz, 4,7 kΩ est courant ; à 400 kHz, plutôt 2,2 kΩ. Consulte la fiche technique du composant le plus lent sur le bus.
Pull-ups internes : pratiques, mais pas toujours suffisants
La plupart des microcontrôleurs ont des résistances pull-up intégrées activables par logiciel. La valeur est typiquement entre 20 kΩ et 50 kΩ. C'est bien pour un bouton-poussoir sur un fil court. Pour des câbles plus longs, l'I2C ou des applications sensibles aux parasites, une résistance externe de 10 kΩ près de la broche est préférable.
Erreur courante
L'erreur n'est pas de choisir la mauvaise valeur — c'est d'oublier complètement qu'une entrée a besoin d'un état défini. Assure-toi que chaque entrée numérique est toujours tirée quelque part. Flotter n'est pas une option.