torres.electronico

ARDUINO: Ejemplo de keypad 4x4 I2c (Keypad = teclado matricial )

Muchas veces nos puede pasar que en el empleo de puertos de nuestro microcontrolador a la hora de desarrollar nuestros proyectos, nos quede corto y necesitamos mas puertos... Es por ello, que en este sencillo ejemplo, les muestro como podemos implementar nuestro teclado 4x4 I2c con solo el empleo de 2 conductores (SDA y SCL, mas los terminales de alimentación)...

teclado_i2c-png.310462


CSS:
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//Ejemplo: tECLADO 4X4 I2c con PCF8574 - prof.martintorres@educ.ar - ETI Patagonia
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>

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


 
byte rowPins[ROWS] = {0,1,2,3};
byte colPins[COLS] = {4,5,6,7};
 
int i2caddress = 0x20; // set direccion I2c del teclado 4x4
 
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
LiquidCrystal_I2C lcd(0x27,20,4);  // set direccion I2c del display LCD
 
void setup(){
  Serial.begin(9600); // Inicializamos la comunicacion serial
  lcd.init();     // Inicializamos el display LCD I2c
  lcd.backlight();
  lcd.setCursor(0,0);
  // Imprimimos mensaje de INICIO en display LCD I2c
  lcd.print(" TECLADO  I2c  v1.1 ");
  lcd.setCursor(0,1);
  lcd.print("                    ");
  lcd.setCursor(0,2);
  lcd.print(" Desarrollado por:  ");
  lcd.setCursor(0,3);
  lcd.print(" - ETI  Patagonia - ");
   delay(1500);
  lcd.clear();
  kpd.begin(); // Inicializamos el teclado I2c
 
}
 
void loop()
 {
   lcd.setCursor(0,0);
  lcd.print("  KEYPAD i2C  V1.1  ");
  lcd.setCursor(0,1);
  lcd.print("--------------------");
  lcd.setCursor(0,2);
  lcd.print("Tecla:");
  char key = kpd.getKey();  //"kpd.getKey" es el subprograma que se encarga de leer el teclado.Cuando hay una lectura,lo guarda en la variable key que es del tipo "char"(caracter)
  if (key)                  // si hay una tecla presionada, entonces...
     {
       // Imprimir los datos en el display LCD I2c
       lcd.setCursor(0,3);
       lcd.print(key);     //imprimimos el caracter de la tecla presionada
       Serial.println(key);
     // delay(1500);
     //lcd.clear();
     }
}
  • TECLADO_I2c.png
    TECLADO_I2c.png
    41 KB · Visitas: 8
Atrás
Arriba