Étape 1: Il pense à travers
Donc, nous allons penser cela par.
Si vous regardez le tutoriel ci-dessus, vous pouvez voir que la solution de force brute est que, pour chaque bouton, nous devons broche d’une alimentation, un drain à travers une résistance de KOhm 10 et une broche d’entrée. La broche d’alimentation et de vidange peuvent être partagés par tous les boutons, mais, dans le circuit représenté là, nous ne pouvons obtenir autour du fait que nous avons besoin d’une broche d’entrée distincte pour chaque bouton individuel. Notre application nécessite 10 boutons, il faut 10 broches de l’Arduino. Aïe.
Que j’ai donné à l’affaire quelque pensée, cependant, il m’est apparu que c’était semblable à un problème que j’ai rencontrés dans un projet différent, que j’avais travaillé, à savoir aborder plusieurs chiffres d’affichage LED, quelque chose nous voyons partout des fours à micro-ondes de réveils. Alors s’il vous plaît aie patience envers moi alors que je m’égare dans terre de LED pour un moment.
Dans la plupart des circuits incluent plusieurs chiffres LED, chaque chiffre n’est pas activé avec un courant constant. Au contraire, le contrôleur met en place le segment-modèle un chiffre cible particulière (disons, le modèle qui constitue le chiffre « 5 ») et les sorties de ce modèle à tous les chiffres dans l’écran simultanément. Ensuite, il met en place le modèle pour le prochain chiffre, sorties, etc., vélo à travers tous les chiffres et répéter pour toujours.
Mais, vous pouvez demander, comment est-il possible, ensuite, de voir des numéros différents sur chaque chiffre ? Ceci est possible parce que le contrôleur utilise des transistors pour activer le chiffre cible et éteignez toutes les autres avant de sortir le modèle.
Par exemple, disons que nous avons un afficheur DEL à 4 chiffres (chaque chiffre nommée A, B, C et D), et nous voulons montrer les numéros « 5678 » sur cet écran. Voici ce qui se passe :
- le contrôleur A s’allume et transforme les chiffres B, C et D arrêt
- il affiche le modèle pour le chiffre « 5 » à tous les chiffres
- Il s’avère B et A, C, D, hors
- sorties de modèle pour le numéro « 6 »
- tourne C et A, B, D arrêt
- sorties « 7 »
- tourne D et A, B, C
- sorties « 8 »
- répétitions de l’étape 1
Cela permet à l’électronique pour être beaucoup plus simple et moins cher. Et il ne fonctionne que parce que le contrôleur et les transistors peuvent transformer des chiffres et hors si incroyablement vite que chaque segment individuel sur chaque chiffre n’en fait pas temps à s’effacer devant elle est rafraîchie à nouveau. Ce processus est appelé « multiplexage » ou de « stroboscopique », et il vous permet de conduire, en théorie, n’importe quel nombre de chiffres par del. (En réalité, cependant, il y a une limite : lorsque vous ajoutez des chiffres de plus en plus, vous remarquerez qu’ils commencent à clignoter, parce que le contrôleur ne peut pas actualiser eux assez rapidement. Finalement, ce scintillement devienne tellement mauvaise que vous n’êtes plus en mesure de reconnaître les numéros.)
OK, retour à la terre de bouton.
J’ai vu un lien entre le multiplexage de LED ci-dessus et ce problème de boutons multiples : que se passe-t-il si nous pouvions multiplexer les boutons d’une certaine façon ? Au lieu de multiplexage de la sortie, nous aurait multiplex l’entrée : cela signifie que nous éteindre tous, sauf un bouton, détecter ce bouton haut/bas état, stocker et puis faites de même pour le bouton suivant, etc., vélo très, très rapidement par le biais de tous les boutons. Étant donné qu’un seul bouton est actif à un instant donné, et le contrôleur sait qu’on est, nous pourrions utiliser la broche d’entrée même, simple pour n’importe quel nombre de boutons.
Ça sonne bien, mais accrochez-vous : encore faut-il activer chaque bouton, un à la fois. Alors, n’avons pas nous vient d’avoir le problème, puisque maintenant nous avons besoin X broches de sortie pour X boutons ?
Eh bien, c’est où nous apportons dans les registres à décalage. Le registre à décalage est un IC qui reçoit l’un après l’autre un motif de 8 bits (c'est-à-dire, en série) et, lorsque les commandait, lecteur que le modèle à 8 broches de sortie simultanément (en parallèle). Il suffit de chercher Instructables « Registre à décalage » et vous trouverez de nombreux tutoriels. Registres à décalage sont rapide, facile à utiliser, très bon marché et extrêmement puissant. Mais, encore faut-il le registre à décalage de commande, et il faut 3 broches Arduino à le faire. Toutefois, la partie merveilleuse est que vous pouvez connecter plusieurs registres à décalage ensemble dans une chaîne et toujours pousser l’ensemble de la chaîne avec les même 3 bornes Arduino !
OK, donc où que tout cela nous mènera ? Si nous pouvons comprendre comment multiplexer les entrées bouton, nous pouvons utiliser une broche d’entrée, et si nous pouvons tirer parti de registres à décalage, nous avons seulement besoin de 3 broches de sortie. Hé ! Nous avons apporté le problème jusqu'à nécessitant seulement 4 broches totales de conduire un nombre illimité (en théorie) de boutons. Le point de rupture est 4: Si vous avez besoin de 4 ou moins de boutons, juste la force brute il : utiliser 4 broches d’entrée, car cette approche est inutilement complexe et vous ne gagnez rien. Si, toutefois, vous devez 5 ou, en particulier beaucoup d’autres, vous gagnez si vous utilisez le circuit et le code suivants.