0% ont trouvé ce document utile (0 vote)
186 vues8 pages

Le Clavier

Le document décrit quatre méthodes pour lire les touches d'un clavier avec un Arduino. Il explique en détail les méthodes 3 et 4 qui utilisent des contrôleurs de clavier 74C922 et 74C922 avec un PCF85748574. Le document contient des schémas de câblage et du code pour chaque méthode.

Transféré par

thewise cat
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
186 vues8 pages

Le Clavier

Le document décrit quatre méthodes pour lire les touches d'un clavier avec un Arduino. Il explique en détail les méthodes 3 et 4 qui utilisent des contrôleurs de clavier 74C922 et 74C922 avec un PCF85748574. Le document contient des schémas de câblage et du code pour chaque méthode.

Transféré par

thewise cat
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Le Clavier

On va étudier r 4 méthodes permettant de lire la touche appuyée d’un clavier. La méthode 1 et 2

sont largement utilisées il y plein de documents sur le NET, d’ici on va expliquer en détail deux

nouveaux méthodes

1. Méthode 1 : Taper sur Google keypad + arduino

2. Méthode 2 : Taper sur Google keypad I2C+ arduino

Méthodes 3 : contrôleur du clavier 74C922


Pour comprendre le fonctionnement du 74C922 on doit passer par son datasheet (largement
conseillé)
[Link]
Mais rien n’empêche de l’étudier autrement (faiblement conseillé)
1 étapes : taper le montage suivant

# 0 D L3
C1
U1
9 8 7 C L2 C0
C1
11
10
X1
X2
KBM
OSC
6
5 C2
100nF
8
C2 X3
7 12
X4 DA N5
6 5 4 B L1 OE
13 100nF

1 17
L0 Y1 A N0
2 16
L1 Y2 B N1
3 2 1 A L0
L3
L2
3
4
Y3
Y4
C
D
15
14
N2
N3
3

MM74C922
C1
C2

C0

3. Appuyer sur les touche de clavier compléter le tableau ; que remarquez vous

4. Ecrire un code permettant d’afficher sur le Serial la touche appuyée


Touche N4 N3 N2 N1 N0
0
1
2
4
5
6
4
8
9
*
#

Soit le code suivant

int n;
char key;
int n0=12;
int n1=11;
int n2=10;
int n3=9;
int n4=8;
void setup() {

[Link](9600);
pinMode(n0,INPUT);
pinMode(n1,INPUT);
pinMode(n2,INPUT);
pinMode(n3,INPUT);
pinMode(n4,INPUT);

char read_keypad ()
{
char key0;
n=1*digitalRead(n0)+2*digitalRead(n1)+4*digitalRead(n2)+8*digitalRead(n3);
switch (n)
{
case 0:
key0='1';
break;
case 1:
key0='2';
break;
case 2:
key0='3';
break;
case 4:
key0='4';
break;
case 5:
key0='5';
break;
case 6:
key0='6';
break;
case 8:
key0='7';
break;
case 9:
key0='8';
break;
case 10:
key0='9';
break;
case 13:
key0='0';
break;
case 12:
key0='*';
break;
case 14:
key0='#';
break;
}
return(key0);

}
void loop() {
key=read_keypad();
[Link](key);

}
[Link] le code et simuler le, que remarquer vous et comment on peut l’améliorer
6 Soit ce amélioré Compiler puis simuler le, que remarquer vous et comment on peut
l’améliorer

7. soit le code suivant simuler le


int n;
char key;
int n0=12;
int n1=11;
int n2=10;
int n3=9;
int n4=8;
bool key_pad;
bool last_key_pad_state, current_key_pad_state;
void setup() {
[Link](9600);
pinMode(n0,INPUT);
pinMode(n1,INPUT);
pinMode(n2,INPUT);
pinMode(n3,INPUT);
pinMode(n4,INPUT);
key_pad=false;
last_key_pad_state=LOW;

void read_keypad_74922 ()
{

n=1*digitalRead(n0)+2*digitalRead(n1)+4*digitalRead(n2)+8*digitalRead(n3);
switch (n)
{
case 0:
key='1';
break;
case 1:
key='2';
break;
case 2:
key='3';
break;
case 4:
key='4';
break;
case 5:
key='5';
break;
case 6:
key='6';
break;
case 8:
key='7';
break;
case 9:
key='8';
break;
case 10:
key='9';
break;
case 13:
key='0';
break;
case 12:
key='*';
break;
case 14:
key='#';
break;
}
}
void key_read()
{
current_key_pad_state=digitalRead(n4);
if (last_key_pad_state!=current_key_pad_state)
{
last_key_pad_state=current_key_pad_state;
if(current_key_pad_state==HIGH)
{
key_pad=true;
}

void loop() {
key_read();
if (key_pad==true)
{
read_keypad_74922 ();
key_pad=false;
[Link](key);
}
}
7. citer la différence entre les trois codes
8. combien de pins on doit réserver selon cette méthode
//---------------------

Méthodes 4 : contrôleur du clavier 74C922 +PCF85748574


Taper le montage
Simuler le code
combien de pins on doit réserver selon cette méthode

SIM1

[Link]
13 12
D13 D12
REF 11
D11
A0
A0 Arduino D10
10
A1 9
A1 Nano D9
A2 8
A2 D8
A3 7
A3 D7
A4 6
A4 D6

ATMEGA328P
A5 5
A5 D5

ATMEL
SDATA
A6 4
SCLK A6 D4
A7 3
A7 D3
2 N4
5V D2
0
RST RX / D0
C3 GND TX / D1
1
100nF
# 0 D L3
C1
U1
9 8 7 C L2 C0
C1
11
10
X1
X2
KBM
OSC
6
5 C2100nF
ARDUINO NANO
RXD
8
C2 X3 TXD
7 12
X4 DA N4
6 5 4 B L1 OE
13 100nF U5:A
U3
RTS
1 17 3 2
L0 Y1 A CTS
2 16 4 14
L1 Y2 B P0 SCL SCLK
3 2 1 A L0
L3
L2
3
4
Y3
Y4
C
D
15
14
U4:A
4049
5
6
P1
P2
SDA
15
SDATA
3 2 7 13
P3 INT
MM74C922 9
3

P4
U4:B
4049
10
P5 A0
1
11 2
P6 A1
5 4 12 3
P7 A2

U4:C
4049
PCF8574
C1

7 6
C2

C0

4049

#include <Wire.h>
int n;
char key;
int n4=8;
uint8_t data_pcf;
bool key_pad;
bool last_key_pad_state, current_key_pad_state;
void setup() {

[Link](9600);
[Link]();
[Link](100000);
pinMode(n4,INPUT);
key_pad=false;
last_key_pad_state=LOW;

}
//---
void keypad_read_pcf()
{

[Link](0x20,1);//
data_pcf=[Link]();
data_pcf= data_pcf&0x0F;

switch (data_pcf)
{
case 1:
key='#';
break;
case 2:
key='0';
break;
case 3:
key='*';
break;
//-----------------------------------
case 5:
key='9';
break;
case 6:
key='8';
break;
case 7:
key='7';
break;
//--------------------------------
case 9:
key='6';
break;
//-------
case 10:
key='5';
break;
case 11:
key='4';
break;
//----------------------------------
case 13:
key='3';
break;
//----------------
case 14:
key='2';
break;
case 15:
key='1';
break;

}
}
void key_read()
{
current_key_pad_state=digitalRead(n4);
if (last_key_pad_state!=current_key_pad_state)
{
last_key_pad_state=current_key_pad_state;
if(current_key_pad_state==HIGH)
{
key_pad=true;
}

void loop() {
key_read();
if( key_pad==true)
{
keypad_read_pcf();
[Link](key);
key_pad=false;
}
}

Vous aimerez peut-être aussi