Je fais un projet et j'utilise Arduino pour prototyper, je dois utiliser 10 boutons-poussoirs (avec plus de choses) et je n'ai pas assez de broches.
Une solution à laquelle je pourrais penser est d'utiliser les broches analogiques et d'utiliser chacune d'elles pour deux boutons-poussoirs, quelque chose comme ceci:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
De cette façon, je peux lire la broche A0 et savoir laquelle est poussée en regardant si la tension est de 5 V ou la moitié de celle-ci.
Est-ce une bonne idée? Les différents boutons poussoirs ne sont JAMAIS censés être poussés en même temps, ce qui est le seul problème auquel je peux penser.
Y a-t-il de meilleures façons?
Réponses:
Pourquoi gaspiller plusieurs broches analogiques pour deux commutateurs chacun, alors que vous pouvez utiliser n'importe quel nombre de boutons sur une seule broche analogique?
Deux façons de procéder. L'un est en série, l'autre est parallèle.
C'est ainsi que certaines commandes audio du volant de voiture sont. Et comment certains des anciens contrôleurs en ligne iPod fonctionnent.
Selon les résistances que vous utilisez, si vous avez besoin d'appuyer sur plusieurs boutons en même temps et la sensibilité de votre entrée analogique, vous pouvez avoir les 10 boutons sur une seule broche.
la source
Cela fonctionnerait, mais une meilleure façon est d'utiliser une matrice . Il s'agit du même concept que les LED de multiplexage à matrice, mais avec interrupteurs.
Il s'agit d'une matrice 2x2. Une matrice utile est plus grande, car à cette taille, vous n'enregistrez pas de broches en connectant les commutateurs individuellement.
Avec une matrice 3x3, vous pouvez obtenir 9 commutateurs. Vous avez besoin de 10, vous pouvez donc ajouter une ligne ou une colonne de plus et prendre en charge 12 commutateurs, ou simplement placer le 10e commutateur sur sa propre broche.
L'avantage ici est que vous pouvez utiliser les E / S numériques, ce qui est moins cher et généralement plus abondant que les E / S analogiques. Un registre à décalage est un moyen bon marché d'ajouter plus d'E / S numériques, si vous en manquez.
Si vous voulez encore moins de broches, vous pouvez, pour une augmentation de la complexité, utiliser le charlieplexing . Vous devrez ajouter des diodes en plus de vos commutateurs, et ces diodes coûtent probablement autant qu'un registre à décalage. Cependant, si le coût n'est pas votre principale préoccupation, il peut avoir un certain avantage. Avec cette méthode, vous pouvez lire tous vos commutateurs (jusqu'à 12, en fait) avec quatre broches.
la source
L'entrée analogique est une approche valide, vous devriez pouvoir avoir plusieurs boutons dessus. Je voudrais également suggérer d'utiliser une puce d'extension IO comme la MCP23017 . Il a 16 broches qui peuvent être des entrées sont des sorties et son contrôlé avec I2C en utilisant deux broches. Adafruit a une bibliothèque Arduino pour cela.
la source
Oui, cela semble être une bonne idée, mais de toute façon je vais proposer une alternative qui m'est venue à l'esprit.
Si vous avez accès aux portes logiques, vous pouvez mapper de nombreux
n
boutons auxceil(log2(n + 1))
broches via une logique booléenne. Par exemple, si vous avez 4 boutons, mais seulement 2 broches, vous pouvez créer une configuration comme celle-ci:Autrement dit,
button0
pressé devrait avoirpin0
etpin1
bas;button1
,pin0
bas etpin1
haut;button2
,pin0
haut etpin1
bas; etbutton3
,pin0
etpin1
élevé.De là découleraient les expressions booléennes suivantes
Un mappage de 4 boutons à 2 broches pourrait ainsi être réalisé avec seulement 2 portes OU. Vous auriez cependant besoin d'une broche supplémentaire et d'une logique supplémentaire pour indiquer si vous appuyez sur un bouton.
Bien sûr, il y aura toujours des problèmes si plusieurs boutons sont enfoncés simultanément.
De plus, si vous allez toujours utiliser l'approche par résistance, envisagez d'utiliser des valeurs plus élevées sur les résistances autres que 100 ohms, car des résistances traversantes de 5 V de l'ordre de 100s d'ohms produiraient un courant de l'ordre de 10s de mA, ce qui est gentil. inutilement élevé. Je suppose que des valeurs plus raisonnables seraient de 10k Ohm ou 47k Ohm.
la source
La page suivante peut être utile:
http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-varios-pulsadores.html
C'est écrit en espagnol, mais les esentials sont schématisés, je pense que c'est une très bonne idée pour vous.
Sur cette vidéo vous pouvez voir le résultat final, le croquis est également sur la page, fonction encapsulée pour faciliter la mise en œuvre sur vos projets
Vidéo Youtube: clavier à 10 touches sur une seule broche
Voici un schéma du site ci-dessus:
la source