[ Accueil ] [ CONTACT ] [ PLAN du Site ] [ RCNV ] [ Publications ] [ Chantiers Bateaux ] [ Technique Modélisme ] [ Electronique ] [ Radios Vintage ] [ Multi-Switch ] [ Vrac ] [ Astuces ] [ Liens ] [ Base ] [ Compteur ]
 

        ... rgl


Matrices carrées à diodes

Matrices triangulaires à diodes

pour matricage optimal des claviers

Claviers matriciels  -  Application MicroContrôleur
Claviers matricés - Matricage des claviers : matrice à diodes carrée, matrice à diodes triangulaire, matrices à diodes 

(c)  R.LEGAT 

 Gérez un clavier matricé, jusqu'à 112 touches sur 8 bits...
  grâce à la matrice triangulaire à diodes double étendue !!!

 

- Matricage des claviers

- Matrice Carrée à diodes   (Simple / Double  - Avec bit d'interruption / Reset - "Polyphonique" à diodes)

- Matrice Triangulaire à diodes   (Simple / Etendue -  Double / Etendue  - "polyphoniques" à diodes)

- Tableau récapitulatif de la capacité des matrices à claviers, matrices à diodes carrées et triangulaires

 

Claviers matricés - Claviers matriciels

 

 

 

 

 

 

Le principe d'utilisation des matrices trouve une grande utilité dans la confection des claviers de commande.

Le terme de "matrice" est emprunté aux mathématiques, où il désigne un tableau de chiffres de forme rectangulaire, classé en lignes et en colonnes.

Il existe plus d’une méthode pour réaliser le matriçage d’un clavier.

Certaines, paradoxalement moins connues, permettent pourtant une économie importante du nombre de bits utilisés.
Certes, cette économie se fait par l’emploi d’un soft un peu plus élaboré, mais on peut câbler davantage de touches pour un même nombre de bits composant le port clavier.

Nous allons comparer, dans cette étude, le nombre de touches que l'on peut câbler et activer sur un port de 8 bits.
Les grandes lignes des algorythmes de traitement seront exposées.

Les ports utilisés par votre MicroContrôleur de gestion doivent être bidirectionnels (i/o).

Chaque ligne doit être forcée à l'état 1 par des résistances pull-up de 10K. (non représentées sur les schémas ci-dessous !!!)

A noter que certains µC intègrent une résistance de pull-up interne et programmable.

 

 

Clavier à Matrice carrée à diodes

 

 

 

 

 

 

 

  Clavier à Matrice carrée classique   (16 touches pour 8 pins i/o)

  

Ce type de clavier simple et courant est composé de lignes et de colonnes à l’intersection desquelles se trouvent les touches qui viennent donner le contact électrique.

A chaque touche correspond un contact entre une ligne et une colonne. Ici il s’agit d’un clavier matricé de 16 touches avec 4 lignes et 4 colonnes.

Pour déterminer la touche appuyée, par programme, on peut réaliser un décodage logiciel consistant à envoyer un niveau bas, décalé dans le temps, sur les lignes (par exemple).

Ces lignes devant alors être, par défaut, au niveau haut. Les colonnes doivent être tirées à VCC par des résistances dites de "pull up".

Ainsi, en examinant l’état de ces colonnes, on peut en déduire quelle ligne et quelle colonne est active lorsqu’une touche est pressée.

Ce mode de fonctionnement est dit par scrutation (Polling), dans la mesure où faut examiner en permanence l’état du clavier (ici, les colonnes) pour pouvoir détecter qu’une touche a été pressée.

 

 

 

Une matrice carrée à diodes, classique, câblée sur 8 bits, ne permet la gestion que de 16 touches. 

 

         

Algorithme de base pour décodage/lecture du clavier

P0 à P3 en entrée
P4 à P7 en sortie

P4 en sortie =0
P5,6,7 en sortie =1
Lecture de P0 à P3

  Si P0=0 alors Sw1
  Si P1=0 alors Sw2
  Si P2=0 alors Sw3
  Si P3=0 alors Sw4

P5 en sortie =0
P4,6,7 en sortie =1
Lecture de P0 à P3
  Si P0=0 alors Sw5
  Si P1=0 alors Sw6
  Si P2=0 alors Sw7
  Si P3=0 alors Sw8

P6 en sortie =0
P4,5,7 en sortie =1
Lecture de P0 à P3
  Si P0=0 alors Sw9
  Si P1=0 alors Sw10
  Si P2=0 alors Sw11
  Si P3=0 alors Sw12

P7 en sortie =0
P4,5,6 en sortie =1
Lecture de P0 à P3
  Si P0=0 alors Sw13
  Si P1=0 alors Sw14
  Si P2=0 alors Sw15
  Si P3=0 alors Sw16

On peut alors améliorer l'algorithme en lui intégrant des fonctions spéciales:

- Si plus d'une touche est active, alors la routine de lecture du clavier retourne l'état précèdent.

- Si aucune touche n'est active, la routine retourne un code spécial, par exemple : 0 

- L'anti-rebond peut être effectué par un test décisionnel portant sur 2 lectures consécutives.

 

- Si les 2 lectures sont identiques, le résultat après anti-rebond est cette lecture.

 

- Si les 2 lectures sont différentes, on retourne la valeur la plus ancienne.

 

- etc ...

 

La matrice carrée à diodes peut aussi être dessinée sous forme linéaire. Le schéma devient alors:

 

      

 

 

 

  Clavier à Matrice carrée à diodes, Double   (32 touches pour 8 pins i/o)

 

Nous avons vu que le principe de lecture d'un clavier matricé consiste à envoyer un état "0" au niveau d'une ligne et de voir sur quelle colonne il est récupéré par le contact du poussoir sollicité.

 

Voici la méthode permettant de doubler les capacités d'une matrice carrée, tout en conservant le même principe.

Pour varier, on envoie cependant les "0" par les colonnes et on les traque sur les lignes.

 

La configuration d'une matrice carrée double sera la suivante:

 

 

Nous avons cependant dédoublé chaque ligne de sortie par une ligne munie d'une diode.

Cette ligne particulière sera gérée par le programme qui permutera les Entrées et les Sorties !

Rappel, dans cet exemple, ce sont initialement les Colonnes P0 à P3 qui seront mises en sortie et "enverront les zéros" tandis que la scrutation se fera sur les Lignes P4 à P7.

 

Principe:

  Si un port en lecture retourne un 0, alors mettre ce port en sortie = 0 et changer le port "émetteur" en entrée.

     Si il est  à 0 alors c'est la touche qui n'est pas sur la ligne avec diode qui est active

     Si il est  à 1 alors c'est la touche qui est sur la ligne avec diode qui est active

 

 

Algorithme

 

Switches possibles: If … Then Else
P0 en sortie=0 Entrées P4 à P7, à lire successivement
Si P4=0 1 ou 1D mettre P4 en sortie=0 mettre P0 en entrée Si P0 =0 alors 1 else 1D
Si P5=0 5 ou 5D mettre P5 en sortie=0 mettre P0 en entrée Si P0 =0 alors 5 else 5D
Si P6=0 9 ou 9D mettre P6 en sortie=0 mettre P0 en entrée Si P0 =0 alors 9 else 9D
Si P7=0 13 ou 13D mettre P7 en sortie=0 mettre P0 en entrée Si P0 =0 alors 13 else 13D
P1 en sortie=0 Entrées P4 à P7, à lire successivement
Si P4=0 2 ou 2D mettre P4 en sortie=0 mettre P1 en entrée Si P1 =0 alors 2 else 2D
Si P5=0 6 ou 6D mettre P5 en sortie=0 mettre P1 en entrée Si P1 =0 alors 6 else 6D
Si P6=0 10 ou 10D mettre P6 en sortie=0 mettre P1 en entrée Si P1 =0 alors 10 else 10D
Si P7=0 14 ou 14D mettre P7 en sortie=0 mettre P1 en entrée Si P1 =0 alors 14 else 14D
P2 en sortie=0 Entrées P4 à P7, à lire successivement
Si P4=0 3 ou 3D mettre P4 en sortie=0 mettre P2 en entrée Si P2 =0 alors 3 else 3D
Si P5=0 7 ou 7D mettre P5 en sortie=0 mettre P2 en entrée Si P2 =0 alors 7 else 7D
Si P6=0 11 ou 11D mettre P6 en sortie=0 mettre P2 en entrée Si P2 =0 alors 11 else 11D
Si P7=0 15 ou 15D mettre P7 en sortie=0 mettre P2 en entrée Si P2 =0 alors 15 else 15D
P3 en sortie=0 Entrées P4 à P7, à lire successivement
Si P4=0 4 ou 4D mettre P4 en sortie=0 mettre P3 en entrée Si P3 =0 alors 4 else 4D
Si P5=0 8 ou 8D mettre P5 en sortie=0 mettre P3 en entrée Si P3 =0 alors 8 else 8D
Si P6=0 12 ou 12D mettre P6 en sortie=0 mettre P3 en entrée Si P3 =0 alors 12 else 12D
Si P7=0 16 ou 16D mettre P7 en sortie=0 mettre P3 en entrée Si P3 =0 alors 16 else 16D

 

 

Cette matrice à diodes peut également être dessinée sous forme linéaire:

 

 

                         Avec une matrice carrée dédoublée, nous pouvons gérer 32 switches !

 

 

 

  Clavier à Matrice carrée à diodes, avec bit d’Interruption

 

L'avantage d'utiliser une Interruption est de permettre de lire immédiatement le clavier dès qu'une touche est pressée.

On a ainsi la certitude de ne pas "manquer" une touche, ce qui peut se produire si la boucle générale du programme complet est un peu longue à s'exécuter.

 

Il existe aussi un moyen simple de provoquer un signal d'Interruption dès activation du clavier.

Le principe est de détecter qu’une touche a été pressée pour alors mettre en route, une seule fois la routine d'Interruption qui va décoder la matrice.

La détection de touche se fait en réalisant, à l’aide de diodes, un "ET câblé" entre les 4 colonnes dont l'état par défaut est "Haut".
 

 

        

Dès qu’une touche quelconque est appuyée, le signal d’Interruption passe à l’état bas et déclenche le décodage de la touche.

On utilisera, à cet effet, l’une des entrées d’interruption du microcontrôleur.

 

Pour déterminer la touche enfoncée, il suffit de lancer la procédure de lecture de la matrice.

 

Ici, une seule exécution de cette routine de lecture/décodage suffira puisque cette procédure n’est lancée que lorsqu’une touche a réellement été enfoncée.

 

Nous évitons ainsi de devoir faire tourner en permanence une routine de polling qui scrute, sans fin, la matrice du clavier et qui mobilise inutilement les ressources du µC.

 

 

Diagramme des temps:

 

   

             Schéma de brochage d’une matrice carrée à diodes, avec bit d’interruption                        

 

 

TMAIS tous les MicroContrôleurs (µC) ne gèrent cependant pas les Interruptions !

Il y a cependant un "moyen" de palier ce problème dans, seulement, certains cas précis.

En effet, dans certaines applications, le µC n'a besoin d'être activé que suite à l'action de l'utilisateur sur le clavier.

Le reste du temps, il reste ensuite en veille après avoir donné ses consignes aux éléments de contrôle qu'il gère.

Le principe est donc de provoquer un Reset du µC dès qu'il y a action sur le clavier.

Le programme commencera par une routine initiale de lecture du clavier, située au dessus de la boucle du programme principal.

La lecture du clavier ne sera alors plus renouvellée avant un nouveau Reset.

Le µC devra cependant toujours archiver ses valeurs de travail, de manière non volatile, pour ne pas les perdre lors du prochain Reset !

 

         

 

 

 

 

Les résistances de 100 ohms n'interviennent pas dans le processus de décodage ou de reset.

Elles servent à protéger le µC contre les décharges électrostatiques fréquentes lorsqu'un clavier est manipulé par un Humain !

En régime normal, C est chargé et un niveau haut est présent sur la broche de Reset du µC.

Lors de l'appui d'une touche, il se décharge au travers d'une R de 4K7, provoquant le Reset.

 

Pendant sa phase de Reset interne, le µC fait passer ses ports en haute impédance.
C cesse donc de se décharger et le µC sort de son état de Reset et commence le décodage du clavier.

Le passage des lignes à l'état bas est sans effet sur la patte de Reset car sa durée est trop brève pour pouvoir redécharger C.

Une fois la touche actionnée décodée et le programme exécuté, on peut replacer le µC en mode de veille.

La seule précaution à prendre est qu'il faut que le temps de charge et de décharge de C soient inférerieurs à la durée d'un cycle de Reset du µC. (18msec pour un PIC 16C54)

 

 

 

 

Claviers à Matrices Triangulaires à diodes

 

 

 

 

 

 

Nous allons voir, ci-dessous, un matriçage étonnamment moins bien connu alors que ses caractéristiques, en terme d’économie de bits utilisés, sont particulièrement intéressantes !

 

 

  Clavier à Matrice triangulaire à diodes, simple   (28 touches pour 8 pins i/o)

 

Une matrice triangulaire à diodes simple 4x4, qui utilise 8 bits du µC, permet la gestion de 28 touches.

On gagne ainsi 12 touches par rapport à la matrice carrée 4x4 classique qui utilise pourtant le même nombre d’entrée/sorties du µC !

 

Il y a aussi deux méthodes pour dessiner un clavier à matrice triangulaire à diodes:

 

La première, présente la matrice sous sa forme triangulaire, d'où son appellation.

 

 

 

  

La seconde, est une représentation linéiare,  plus plane, et dont la simplicité va cependant nous permettre d'extrapoler les possibilités de cette matrice.

 

   

  

Les Ports sont drainés par une résistance Pull-Up les maintenant au niveau "Haut". Certains µC, comme les AVR, intègrent sur leurs pins d'entrée/sortie, une résistance d'entrée pull-up ou pull-down programmable.
Avec les µC ne comportant pas cette commodité, il faudra connecter chaque port à +Vcc par une Résistance de 10K.

 

La routine de balayage sera la suivante : 

  

 
P0 en sortie=0
Autres P en entrée à lire
Si P1=0 alors Sw 1
Si P2=0 alors Sw 2
Si P3=0 alors Sw 3
Si P4=0 alors Sw 4
Si P5=0 alors Sw 5
Si P6=0 alors Sw 6
Si P7=0 alors Sw 7
P1 en sortie=0
Autres P en entrée à lire
Si P2=0 alors Sw 8
Si P3=0 alors Sw 9
Si P4=0 alors Sw 10
Si P5=0 alors Sw 11
Si P6=0 alors Sw 12
Si P7=0 alors Sw 13
P2 en sortie=0
Autres P en entrée à lire
Si P3=0 alors Sw 14
Si P4=0 alors Sw 15
Si P5=0 alors Sw 16
Si P6=0 alors Sw 17
Si P7=0 alors Sw 18
P3 en sortie=0
Autres P en entrée à lire
Si P4=0 alors Sw 19
Si P5=0 alors Sw 20
Si P6=0 alors Sw 21
Si P7=0 alors Sw 22
P4 en sortie=0
Autres P en entrée à lire
Si P5=0 alors Sw 23
Si P6=0 alors Sw 24
Si P7=0 alors Sw 25
P5 en sortie=0
Autres P en entrée à lire
Si P6=0 alors Sw 26
Si P7=0 alors Sw 27
P6 en sortie=0
Autres P en entrée à lire
Si P7=0 alors Sw 28

 

  Clavier à Matrice triangulaire à diodes, simple étendue   (56 touches pour 8 pins i/o)

La configuration linéaire nous fait immédiatement voir qu'il est possible d'étendre les possibilités de la simple matrice triangulaire initiale.

En effet, la matrice triangulaire simple est composée de 7 cellules comptant respectivement de 7 à 1 éléments.

Etendons cette configuration en placant (b-1) éléments dans chaque cellule.  "b" étant le nombre de bits utilisés pour le port clavier.

Le schéma "étendu" comportera alors 8 cellules de 7 éléments, soit 56 switches pour 8 bits !

Le nombre de switches utilisables est alors de  Switches = b*(b-1).   "b" étant le nombre de bits utilisés pour le port clavier. (8 sur le présent schéma)

Ainsi, avec 3 bits on peut contrôler 3*(3-1)=6 switches, ; avec 4 bits: 4*(4-1)=12 switches et avec 8 bits: 8*(8-1) = 56 switches.
Rappelons nous que la matrice carrée ne permettait que 16 switches sur 8 bits !

La routine de balayage reste basée sur le même principe de polling et devient:  

 
P0 en sortie=0
Autres P en entrée: à lire successivement
Si P1=0 alors Sw 1
Si P2=0 alors Sw 2
Si P3=0 alors Sw 3
Si P4=0 alors Sw 4
Si P5=0 alors Sw 5
Si P6=0 alors Sw 6
Si P7=0 alors Sw 7
P1 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 8
Si P2=0 alors Sw 9
Si P3=0 alors Sw 10
Si P4=0 alors Sw 11
Si P5=0 alors Sw 12
Si P6=0 alors Sw 13
Si P7=0 alors Sw 14
P2 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 15
Si P1=0 alors Sw 16
Si P3=0 alors Sw 17
Si P4=0 alors Sw 18
Si P5=0 alors Sw 19
Si P6=0 alors Sw 20
Si P7=0 alors Sw 21
P3 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 22
Si P1=0 alors Sw 23
Si P2=0 alors Sw 24
Si P4=0 alors Sw 25
Si P5=0 alors Sw 26
Si P6=0 alors Sw 27
Si P7=0 alors Sw 28
P4 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 29
Si P1=0 alors Sw 30
Si P2=0 alors Sw 31
Si P3=0 alors Sw 32
Si P5=0 alors Sw 33
Si P6=0 alors Sw 34
Si P7=0 alors Sw 35
P5 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 36
Si P1=0 alors Sw 37
Si P2=0 alors Sw 38
Si P3=0 alors Sw 39
Si P4=0 alors Sw 40
Si P6=0 alors Sw 41
Si P7=0 alors Sw 42
P6 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 43
Si P1=0 alors Sw 44
Si P2=0 alors Sw 45
Si P3=0 alors Sw 46
Si P4=0 alors Sw 47
Si P5=0 alors Sw 48
Si P7=0 alors Sw 49
P7 en sortie=0
Autres P en entrée: à lire successivement
Si P0=0 alors Sw 50
Si P1=0 alors Sw 51
Si P2=0 alors Sw 52
Si P3=0 alors Sw 53
Si P4=0 alors Sw 54
Si P5=0 alors Sw 55
Si P6=0 alors Sw 56

 

  Clavier matricé type « polyphonique » - Adjonction de diodes

 

A noter que les matrices vues ci-avant et leur routine de décodage ne permettent pas d’activer plusieurs touches simultanément sans induire des erreurs de lecture.
Ce qui suit va donc vous intéresser …

 

L’appellation « polyphonique » provient des claviers d’orgue qui permettent l’activation simultanée de plusieurs touches pour, par exemple, jouer un accord composé de plusieurs notes différentes en même temps.

 

Dans un clavier musical, les touches sont agencées en matrice de type carrée 8x8 mais dont chaque contact électrique simple est établi au travers d’une diode qui évite les « retours » électriques

des autres touches qui seraient également pressées simultanément.

 

    

                           Principe d'un clavier d'orgue musical

 

 

Avec le principe de lecture d'une matrice triangulaire à diodes, simple ou étendue, le µC va utiliser chaque port tantôt en lecture, tantôt en écriture.

Il sera donc nécessaire (si on veut qu'il soit possible d'activer simultanément plusieurs touches) d'utiliser deux diodes par switch.

 

Le schéma devient alors celui-ci:
    

 

 

! L'option "polyphonie" que nous venons de voir ici ne pourra plus être appliquée aux matrices dites "doubles" que nous allons étudier ci-dessous !

 

 

 

 

  Clavier à Matrice triangulaire à diodes, double   (84 touches pour 8 pins i/o)

 

Mais il est encore possible d'aller plus loin dans le matricage !

 

Voici une configuration qui, combinée à la programmation du µC, va permettre de gérer pas moins de 84 touches; et toujours pour seulement 8 pins i/o utilisés !!!

 

Afin de ne pas surcharger le schéma, les poussoirs ne sont pas dessinés cablés. Evidemment, ils doivent tous être connectés comme l'est Sw1.

 

   

 

     

 

Méthode de balayage de la matrice :

 

Mettre P0 à 0

Mettre P1..P7 en entrée

Lire P1..P7

  Si un port en lecture retourne un 0, alors mettre ce port en sortie à 0 et changer P0 en entrée.

     Si P0 est à 0 alors c'est la touche qui n'est pas sur la ligne avec diode qui est active

     Si P0 est à 1 alors c'est la touche qui est sur la ligne avec diode qui est active

 

Exemple :

 Si durant le balayage, on lit P1 = 0, (soit la touche 14, soit la touche 21 est active) alors on met P1 en sortie à 0, et P0 en entrée.

     Si on lit P0 à 0 alors c'est la touche 14 qui est active

     Si on lit P0 à 1 alors c'est la touche 21 qui est active

 

Continuez ainsi de suite en mettant à tour de rôle P2 à P7 à 0.

 

 

Algorithme complet     

 

 
Switches possibles IF …  Then Else
P0 en sortie=0 Autres P à lire successivement
Si P1=0 14 ou 21 mettre P1 en sortie=0 mettre P0 en entrée Si P0 =0 alors 14 sinon 21
Si P2=0 12 ou 20 mettre P2 en sortie=0 mettre P0 en entrée Si P0 =0 alors 12 sinon 20
Si P3=0 10 ou 19 mettre P3 en sortie=0 mettre P0 en entrée Si P0 =0 alors 10 sinon 19
Si P4=0 8 ou 18 mettre P4 en sortie=0 mettre P0 en entrée Si P0 =0 alors 8 sinon 18
Si P5=0 6 ou 17 mettre P5 en sortie=0 mettre P0 en entrée Si P0 =0 alors 6 sinon 17
Si P6=0 4 ou 16 mettre P6 en sortie=0 mettre P0 en entrée Si P0 =0 alors 4 sinon 16
Si P7=0 2 ou 15 mettre P7 en sortie=0 mettre P0 en entrée Si P0 =0 alors 2 sinon 15
P1 en sortie=0 Autres P à lire successivement
Si P0=0 14 ou 13 mettre P0 en sortie=0 mettre P1 en entrée Si P1 =0 alors 14 sinon 13
Si P2=0 33 ou 39 mettre P2 en sortie=0 mettre P1 en entrée Si P1 =0 alors 33 sinon 39
Si P3=0 31 ou 38 mettre P3 en sortie=0 mettre P1 en entrée Si P1 =0 alors 31 sinon 38
Si P4=0 29 ou 37 mettre P4 en sortie=0 mettre P1 en entrée Si P1 =0 alors 29 sinon 37
Si P5=0 27 ou 36 mettre P5 en sortie=0 mettre P1 en entrée Si P1 =0 alors 27 sinon 36
Si P6=0 25 ou 35 mettre P6 en sortie=0 mettre P1 en entrée Si P1 =0 alors 25 sinon 35
Si P7=0 23 ou 34 mettre P7 en sortie=0 mettre P1 en entrée Si P1 =0 alors 23 sinon 34
P2 en sortie=0 Autres P à lire successivement
Si P0=0 12 ou 11 mettre P0 en sortie=0 mettre P2 en entrée Si P2 =0 alors 12 sinon 11
Si P1=0 33 ou 32 mettre P1 en sortie=0 mettre P2 en entrée Si P2 =0 alors 33 sinon 32
Si P3=0 49 ou 54 mettre P3 en sortie=0 mettre P2 en entrée Si P2 =0 alors 49 sinon 54
Si P4=0 47 ou 53 mettre P4 en sortie=0 mettre P2 en entrée Si P2 =0 alors 47 sinon 53
Si P5=0 45 ou 52 mettre P5 en sortie=0 mettre P2 en entrée Si P2 =0 alors 45 sinon 52
Si P6=0 43 ou 51 mettre P6 en sortie=0 mettre P2 en entrée Si P2 =0 alors 43 sinon 51
Si P7=0 41 ou 50 mettre P7 en sortie=0 mettre P2 en entrée Si P2 =0 alors 41 sinon 50
P3 en sortie=0 Autres P à lire successivement
Si P0=0 10 ou 9 mettre P0 en sortie=0 mettre P3 en entrée Si P3 =0 alors 10 sinon 9
Si P1=0 31 ou 30 mettre P1 en sortie=0 mettre P3 en entrée Si P3 =0 alors 31 sinon 30
Si P2=0 49 ou 48 mettre P2 en sortie=0 mettre P3 en entrée Si P3 =0 alors 49 sinon 48
Si P4=0 62 ou 66 mettre P4 en sortie=0 mettre P3 en entrée Si P3 =0 alors 62 sinon 66
Si P5=0 60 ou 65 mettre P5 en sortie=0 mettre P3 en entrée Si P3 =0 alors 60 sinon 65
Si P6=0 58 ou 64 mettre P6 en sortie=0 mettre P3 en entrée Si P3 =0 alors 58 sinon 64
Si P7=0 56 ou 63 mettre P7 en sortie=0 mettre P3 en entrée Si P3 =0 alors 56 sinon 63
P4 en sortie=0 Autres P à lire successivement
Si P0=0 8 ou 7 mettre P0 en sortie=0 mettre P4 en entrée Si P4 =0 alors 8 sinon 7
Si P1=0 29 ou 28 mettre P1 en sortie=0 mettre P4 en entrée Si P4 =0 alors 29 sinon 28
Si P2=0 47 ou 46 mettre P2 en sortie=0 mettre P4 en entrée Si P4 =0 alors 47 sinon 46
Si P3=0 62 ou 61 mettre P3 en sortie=0 mettre P4 en entrée Si P4 =0 alors 62 sinon 61
Si P5=0 72 ou 75 mettre P5 en sortie=0 mettre P4 en entrée Si P4 =0 alors 72 sinon 75
Si P6=0 70 ou 74 mettre P6 en sortie=0 mettre P4 en entrée Si P4 =0 alors 70 sinon 74
Si P7=0 68 ou 73 mettre P7 en sortie=0 mettre P4 en entrée Si P4 =0 alors 68 sinon 73
P5 en sortie=0 Autres P à lire successivement
Si P0=0 6 ou 5 mettre P0 en sortie=0 mettre P5 en entrée Si P5 =0 alors 6 sinon 5
Si P1=0 27 ou 26 mettre P1 en sortie=0 mettre P5 en entrée Si P5 =0 alors 27 sinon 26
Si P2=0 45 ou 44 mettre P2 en sortie=0 mettre P5 en entrée Si P5 =0 alors 45 sinon 44
Si P3=0 60 ou 59 mettre P3 en sortie=0 mettre P5 en entrée Si P5 =0 alors 60 sinon 59
Si P4=0 72 ou 71 mettre P4 en sortie=0 mettre P5 en entrée Si P5 =0 alors 72 sinon 71
Si P6=0 79 ou 81 mettre P6 en sortie=0 mettre P5 en entrée Si P5 =0 alors 79 sinon 81
Si P7=0 77 ou 80 mettre P7 en sortie=0 mettre P5 en entrée Si P5 =0 alors 77 sinon 80
P6 en sortie=0 Autres P à lire successivement
Si P0=0 4 ou 3 mettre P0 en sortie=0 mettre P6 en entrée Si P6 =0 alors 4 sinon 3
Si P1=0 25 ou 24 mettre P1 en sortie=0 mettre P6 en entrée Si P6 =0 alors 25 sinon 24
Si P2=0 43 ou 42 mettre P2 en sortie=0 mettre P6 en entrée Si P6 =0 alors 43 sinon 42
Si P3=0 58 ou 57 mettre P3 en sortie=0 mettre P6 en entrée Si P6 =0 alors 58 sinon 57
Si P4=0 70 ou 69 mettre P4 en sortie=0 mettre P6 en entrée Si P6 =0 alors 70 sinon 69
Si P5=0 79 ou 78 mettre P5 en sortie=0 mettre P6 en entrée Si P6 =0 alors 79 sinon 78
Si P7=0 83 ou 84 mettre P7 en sortie=0 mettre P6 en entrée Si P6 =0 alors 83 sinon 84
P7 en sortie=0 Autres P à lire successivement
Si P0=0 2 ou 1 mettre P0 en sortie=0 mettre P7 en entrée Si P7 =0 alors 2 sinon 1
Si P1=0 23 ou 22 mettre P1 en sortie=0 mettre P7 en entrée Si P7 =0 alors 23 sinon 22
Si P2=0 41 ou 40 mettre P2 en sortie=0 mettre P7 en entrée Si P7 =0 alors 41 sinon 40
Si P3=0 56 ou 55 mettre P3 en sortie=0 mettre P7 en entrée Si P7 =0 alors 56 sinon 55
Si P4=0 68 ou 67 mettre P4 en sortie=0 mettre P7 en entrée Si P7 =0 alors 68 sinon 67
Si P5=0 77 ou 76 mettre P5 en sortie=0 mettre P7 en entrée Si P7 =0 alors 77 sinon 76
Si P6=0 83 ou 82 mettre P6 en sortie=0 mettre P7 en entrée Si P7 =0 alors 83 sinon 82

 

Par le fait que les matrices dites "doubles" utilisent, sur les ports dédoublés, une diode qui n'autorise la lecture de ce port que dans un seul sens lors de la permutation des entrées/sorties,  nous ne pourrons plus placer les diodes additionnelles qui permettaient la "polyphonie".

Les matrices à diodes dites "doubles" ne peuvent donc bénéficier de cette option "polyphonique" !

 

 

  Clavier à Matrice triangulaire à diodes, double étendue   (112 touches pour 8 pins i/o)

Si on redessine la matrice triangulaire à diodes, double, sous forme linéaire et que, comme pour la matrice triangulaire étendue on réalise des cellules comptant le même nombre d'éléments,

on obtient une matrice triangulaire à diodes double étendue capable de gérer 112 switches !

L'algorithme sera conforme à celui présenté pour la matrice triangulaire double mais adapté pour les switches supplémentaires.

 

 

 

 

 

Tableau récapitulatif de la capacité des matrices à diodes, carrées et triangulaires pour claviers

 

"Polyphonique"

Nombre de Bits:  

8

7

6

5

4

3

2

carrée simple

X

(b/2)^2

16

---

9

---

4

---

1

 

carrée double

non

2*((b/2)^2)

32

---

18

---

8

---

2

 

Rectangulaire simple 4x3

X

L*C

---

12

---

---

---

---

---

 

Rectangulaire simple 3x2

X

L*C

---

---

---

6

---

---

---

 

Rectangulaire simple 2x1

X

L*C

---

---

---

---

---

2

---

 

Rectangulaire double 4x3

non

2*L*C

---

24

---

---

---

---

---

 

Rectangulaire double 3x2

non

2*L*C

---

---

---

12

---

---

---

 

Rectangulaire double 2x1

non

2*L*C

---

---

---

---

---

4

---

 

Triangulaire simple

X

b/2*(b-1)

28

21

15

10

6

3

1

 

Triangulaire simple étendue

X

b*(b-1)

56

42

30

20

12

6

2

 

Triangulaire double

non

 

84

63

45

30

18

9

3

 

Triangulaire double étendue

non

2b*(b-1)

112

84

60

40

24

12

4

Nombre de switches gérés

  L: nombre de Lignes d'une Matrice Rectangulaire

  C: nombre de Colonnes d'une Matrice Rectangulaire

  b: nombre de Bits utilisés pour la Matrice

 

 

 

   Trafic Visiteurs:  

 

 

[ Retour de Page ]

 
[ Electronique ]
Copyright © Roger LEGAT - 2008 - Tous Droits réservés - (Thds V2)