Teclado com protocolo I2C no ESP8266

Eletrônica

Usando CI PCF8574 e protocolo I2C poderá economizar 6 pinos do micro controlador ao conectar um teclado 4x4, veja imagem abaixo.


O CI PCF8574 é um expansor de portas I2C de 8 bits que permite o controle de até 8 portas utilizando apenas 2 pinos do microcontrolador. É ideal para projetos onde o microcontrolador tem um número limitado de portas disponíveis.


O PCF8574 funciona com tensões entre 2.5 e 6V, e os pinos A0, A1 e A2 definem o endereço utilizado para comunicação I2C. As 8 portas podem ser configuradas como entrada ou saída e os pinos da interface I2C (SDA e SCL) necessitam de resistores pull-up.


O teclado matricial usado neste exemplo é compatível com Arduíno, pic, avr, raspberry pi, ESP8266, ESP32 entre outros microcontroladores.

Possui uma membrana autoadesiva na parte traseira do teclado. Utiliza até no máximo 8 pinos do microcontrolador.

O teclado tem 4x4 teclas ou seja 16 teclas ao todo, ideal para sistemas de segurança e controle de entrada de dados.

Opera em até 24V (DC), 30mA, 700mW. 



Esquema de Ligação:

Código Fonte:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// I2C Keypad for Arduino
// Venkateswara Rao.E 
// 19-oct-2015
// Credits to  @author Alexander Brevig

#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#define I2CADDR 0x38

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {"1","2","3","A"},
  {"4","5","6","B"},
  {"7","8","9","C"},
  {"*","0","#","D"}
};

// Digitran keypad, bit numbers of PCF8574 i/o port
byte rowPins[ROWS] = {0, 1, 2, 3}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {4, 5, 6}; //connect to the column pinouts of the keypad

Keypad_I2C kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS, I2CADDR, PCF8574 );

void setup(){
	  Wire.begin( );
	  kpd.begin( makeKeymap(keys) );
	  Serial.begin(9600);
	  Serial.println( "start" );
}

void loop(){
	  char key = kpd.getKey();
	  
	  if (key){
		Serial.println(key);
	  }
}


Fonte
https://www.hackster.io
Mais Dicas