Sur les nouveaux Arduinos, on peut mettre pinMode à l' un des trois états: OUTPUT
, INPUT
et INPUT_PULLUP
.
Cette page dit:
La puce Atmega sur l'Arduino possède des résistances de rappel internes (résistances qui se connectent à l'alimentation en interne) auxquelles vous pouvez accéder. Si vous préférez les utiliser au lieu de résistances de rappel externes, vous pouvez utiliser l'argument INPUT_PULLUP dans pinMode (). Cela inverse efficacement le comportement, où HIGH signifie que le capteur est éteint et LOW signifie que le capteur est allumé.
Je suis plutôt sûr qu'inverser le comportement n'est pas la seule chose qu'il fait, cependant.
Que fait INPUT_PULLUP
-il? Qu'est-ce qui le différencie INPUT
et comment décide-t-on lequel utiliser?
Réponses:
La valeur par défaut est celle
INPUT
qui configure la broche en tant queINPUT
. Si la broche est totalement déconnectée, elle lira au hasardHIGH
etLOW
. Si vous le liez à + 5V ou 0V, il lira évidemmentHIGH
ouLOW
.À l'intérieur de l'Arduino se trouvent des résistances de rappel d'une valeur d'environ 50k ohms. Ces résistances peuvent être éventuellement connectées en interne en utilisant
INPUT_PULLUP
. Ceci est fonctionnellement (et électriquement) équivalent à la connexion d'une résistance de 50k ohms entre la broche et + 5V, la seule différence est qu'elle ne nécessite aucun composant externe et vous pouvez l'activer et la désactiver dans le logiciel pendant l'exécution de votre programme.Alors pourquoi des tractions et non des descentes? Il y a probablement plusieurs raisons à cela, mais lorsque vous câblez des boutons ou des commutateurs ou quoi que ce soit "normalement ouvert", vous n'avez qu'à les relier à la terre, vous n'avez pas besoin de leur faire + 5V. Étant donné que la plupart des cartes vont être conçues avec de grandes coulées de terre pour des raisons de blindage de toute façon, le fait de nouer à la terre est pratiquement une raison.
Certains circuits intégrés plus en vedette comme les puces ARM ont à la fois des tractions et des descentes, mais la ligne AVR 8 bits n'est livrée qu'avec des tractions. Vous devez juste vous rappeler que
HIGH
c'est "ouvert" etLOW
"fermé".la source
Notez qu'avant 1.0.1, vous pouviez activer les pullups en utilisant
digitalWrite()
. Et vous pouvez toujours.Le code:
Il s'agit d'une distinction importante, car elle
INPUT_PULLUP
active évidemment la résistance de rappel. Cependant, ce qui est moins évident, c'est qu'à partir de la version 1.0.1, un simple appelINPUT
force à désactiver le pull-up. (Auparavant, l'état du pull-up est resté le même).Pour voir comment fonctionne une épingle avec et sans tractions, regardez les vidéos suivantes.
Broche flottante sur un oscilloscope: http://www.youtube.com/watch?v=dBIBFLYCjMM
Avec Pull-Up activé: http://www.youtube.com/watch?v=SAIw7LLVl-U
Vidéo tutoriel complète sur les Pull-Ups (notez que j'ai fait cela avant que INPUT_PULLUP soit ajouté à la bibliothèque Arduino): http://www.youtube.com/watch?&v=jJnD6LdGmUo
la source