Le Clavier
Le Clavier
Le Clavier
sont largement utilisées il y plein de documents sur le NET, d’ici on va expliquer en détail deux
nouveaux méthodes
# 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
int n;
char key;
int n0=12;
int n1=11;
int n2=10;
int n3=9;
int n4=8;
void setup() {
Serial.begin(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();
Serial.println(key);
}
5.Compiler 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
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;
Serial.println(key);
}
}
7. citer la différence entre les trois codes
8. combien de pins on doit réserver selon cette méthode
//---------------------
SIM1
www.TheEngineeringProjects.com
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() {
Serial.begin(9600);
Wire.begin();
Wire.setClock(100000);
pinMode(n4,INPUT);
key_pad=false;
last_key_pad_state=LOW;
}
//---
void keypad_read_pcf()
{
Wire.requestFrom(0x20,1);//
data_pcf=Wire.read();
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();
Serial.println(key);
key_pad=false;
}
}