Minimiser le nombre d'entrées pour beaucoup de boutons poussoirs

Bonjour,

Pour mon projet de séquenceur midi (qui avance à grands pas), j'aurai besoin de beaucoup de boutons poussoirs (30 à 40). Je pense que ça sera un peu lourd à câbler si je dois relier chaque bouton à une entrée différente, et de plus il n'y aura pas assez d'entrées disponibles. Donc je me demande si on pourrait pas utiliser une sorte de codeur auquel on relie un groupe de boutons et qui en sort une adresse différente sur quelques bits pour chaque bouton. Je ne m'y connais pas encore beaucoup en électronique numérique, c'est pour ça que je fais appel à vous pour savoir quel type de circuit intégré je pourrais utiliser pour minimiser le nombre d'entrées, et si c'est possible.

Je précise, ce n'est pas une matrice... Juste des boutons de commande un peu partout.

Voilà, j'espère avoir été clair. Merci :wink:

Je précise, ce n'est pas une matrice... Juste des boutons de commande un peu partout

Le fait que ce soit des boutons un peu partout n'empêche pas de les câbler sous forme d'une matrice ce qui réduit sévèrement le nombre de liaison et simplifie leur gestion.

Avec un truc genre PCF8575 tu dois pouvoir avoir jusqu'à 64 entrées avec simplement 3 broches utilisées sur l'Ardruino.
Certes faut les câbler en matrices et multiplexer le tout en 8*8 mais c'est une piste.

Exemple d'utilisation:

La matrice est donc le seul moyen de coder les boutons ? Je me suis dit que les câbler en matrice serait pas très évident à faire vu que la disposition est un peu aléatoire... Enfin si c'est la seule solution, va bien falloir le faire :stuck_out_tongue:

Je me suis dit que les câbler en matrice serait pas très évident à faire vu que la disposition est un peu aléatoire..

Câbler en matrice ça veut dire un commun qui relie plusieurs boutons et tu amènes le commun + le second pôle des inter jusqu'à ta carte. Le matriçage sera effectivement réalisé sur un shield proto qui recevra tous les fils. Enfin c'est un exemple, il faut adapter à la disposition de l'ensemble.

Ne pas oublier une diode par inter pour séparer les colonnes.

kevo:
La matrice est donc le seul moyen de coder les boutons ? Je me suis dit que les câbler en matrice serait pas très évident à faire vu que la disposition est un peu aléatoire... Enfin si c'est la seule solution, va bien falloir le faire :stuck_out_tongue:

Non tu peux aussi passer par une série de registres à décalage avec chaque bouton câblé entre le + et une entrée parallèle d'un registre (et une résistance de pulldown sur l'entrée).
Ensuite côté Arduino, tu scannes régulièrement tes registres.
Il n'y a jamais qu'une seule solution à un problème donné :slight_smile:

Tu peux aussi câbler tes boutons en parallèle, chacun avec une résistance en série différente (R, 2R, 3R...), et envoyer ça sur une seule entrée analogique qui va mesurer la résistance et en déduire le bouton appuyé avec un test.

Christian_R:
Tu peux aussi câbler tes boutons en parallèle, chacun avec une résistance en série différente (R, 2R, 3R...), et envoyer ça sur une seule entrée analogique qui va mesurer la résistance et en déduire le bouton appuyé avec un test.

Il ne faut avoir qu'un seul bouton appuyé simultanément et bien calibrer les fenêtres de mesures mais c'est une idée originale à laquelle je n'aurais pas pensé.
Mais pour plusieurs dizaines de boutons ça ne doit quand même pas être évident à mettre au point je pense.

patg_:

Christian_R:
Tu peux aussi câbler tes boutons en parallèle, chacun avec une résistance en série différente (R, 2R, 3R...), et envoyer ça sur une seule entrée analogique qui va mesurer la résistance et en déduire le bouton appuyé avec un test.

Il ne faut avoir qu'un seul bouton appuyé simultanément et bien calibrer les fenêtres de mesures mais c'est une idée originale à laquelle je n'aurais pas pensé.
Mais pour plusieurs dizaines de boutons ça ne doit quand même pas être évident à mettre au point je pense.

Ouais j'avais vu un tuto là dessus, c'est une très bonne idée ! Mais en effet si on appuie sur 2 boutons en même temps, ça va fausser la valeur... C'est plus une technique à utiliser en dernier recours si on n'a plus d'entrée digitale disponible.
Je vais voir ce qui sera la plus "léger" entre registre à décalage et matrice alors, mais la matrice me semble plus répandue :slight_smile: Merci pour vos conseils !

Si tes boutons ne sont pas disposés en matrice le truc c'est d'attribuer à chaque bouton un numéro de ligne et de colonne dans la "matrice de câblage".
Après faut juste câbler ensemble les bornes appartenant aux mêmes lignes et aux même colonnes et ne pas se planter dans le raccordement des lignes/colonnes à l'Arduino :grin:

Ca marche, merci pour l'astuce :wink: