Quelle est ' la différence entre INPUT et INPUT_PULLUP?

Sur les nouveaux Arduinos, on peut définir pinMode sur lun des trois états suivants: OUTPUT, INPUT et INPUT_PULLUP.

Cette page dit:

La puce Atmega de lArduino a des résistances de pull-up internes (résistances qui se connectent à lalimentation en interne) auxquelles vous pouvez accéder. Si vous préférez les utiliser au lieu de résistances pull-down externes, vous pouvez utiliser largument INPUT_PULLUP dans pinMode (). Cela inverse effectivement le comportement, où HIGH signifie que le capteur est éteint et LOW signifie que le capteur est allumé.

Je suis plutôt sûr que linversion du comportement nest pas la seule chose quil fait, cependant.

Que fait INPUT_PULLUP? Quest-ce qui le différencie de INPUT, et comment décider lequel utiliser?

Commentaires

  • INPUT_PULLUP a été ajouté avec IDE 1.0.1. La carte Arduino que vous utilisez na pas dimportance, elles prennent toutes en charge les PULLUP.

Réponse

La valeur par défaut est INPUT qui définit la broche comme INPUT. Si la broche est totalement déconnectée, elle lira au hasard HIGH et LOW. Si vous le liez à + 5V ou 0V, il lira évidemment HIGH ou LOW.

Interne à lArduino, la puce Atmega possède des résistances de pullup internes dune valeur denviron 20k ohms. (Voir la documentation de DigitalPins pour plus de détails) Ces résistances peuvent être éventuellement connectées en interne à laide de INPUT_PULLUP. Cela équivaut fonctionnellement (et électriquement) à connecter une résistance de ~ 20k ohms entre la broche et + 5V, la seule différence est quelle ne nécessite aucun composant externe et que vous pouvez lallumer et léteindre dans le logiciel pendant lexécution de votre programme.

Alors pourquoi des pull-ups et non des pull-down? Il y a probablement plusieurs raisons à cela, mais lorsque vous connectez des boutons ou des interrupteurs ou tout ce qui est « normalement ouvert », il vous suffit de les relier à la terre, vous navez pas besoin de leur faire passer + 5V. conçu avec de grandes coulées de masse pour des raisons de blindage de toute façon, la liaison à la terre est pratiquement des raisons.

Certains circuits intégrés plus fonctionnels comme les puces ARM ont à la fois des pull ups et des pull down, mais la ligne AVR 8 bits nest livrée quavec pull -ups. Noubliez pas que HIGH est « ouvert » et LOW est « fermé ».

Commentaires

  • Vote positif. Pour info, selon la documentation, les pull-ups internes sont de 20K, pas que cela fasse une grande différence par rapport à 50K. arduino.cc/en/Tutorial/DigitalPins

Answer

Notez que la précédente à 1.0.1, vous pouvez activer les pullups en utilisant digitalWrite(). Et vous pouvez toujours.

Le code:

Cest une distinction importante car INPUT_PULLUP active évidemment la résistance pull-up. Cependant, moins évident, cest quà partir de la version 1.0.1, le simple fait dappeler INPUT force le pull-up à être désactivé. (Auparavant, létat du pull-up restait le même).

Pour voir comment une épingle fonctionne avec et sans pull-ups, 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

Tutoriel vidéo complet sur Pull-Ups (notez que jai fait ceci avant que INPUT_PULLUP ne soit ajouté à la bibliothèque Arduino): http://www.youtube.com/watch?&v=jJnD6LdGmUo

Commentaires

  • Très intelligent. Merci davoir écrit ceci. Vote pour.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *