|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
T Búsqueda en este sitio:


.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

____________________________

49BB.- Teclado 4x4, bus I2C. Pantalla LCD.

- Tenemos un teclado 4x4, al pulsar sobre las teclas se escribirán en una pantalla LCD.
- Si pulsamos el carácter '#', se borrará la pantalla.
- También se puede ver en el Monitor Serie.

- En el tutorial: 31.- Pantalla LCD. Bus I2C, vimos cómo utilizar una pantalla LCD con módulo I2C.
- En el tutorial: 49.- Teclado táctil matrix 4x4, vimos cómo utilizar un teclado 4x4.-
- En el tutorial: 49B.- Teclado táctil adaptado a I2C. Adaptador de 8 conexiones a Bus I2C con PCF8574, vimos cómo utilizar un teclado 4x4 con módulo I2C.

- En este ejemplo vamos a utilizar un teclado 4x4 con módulo I2C, pero si no tienes este módulo, puedes conectar el teclado directamente como vimos en el tutorial 49B.

______________________________________________________
- Conexionado.

______________________________________________________
- Código para el Arduino.

- Fíjate que he puesto la dirección I2C de mi módulo para la pantalla LCD: 0x27

- Fíjate que he puesto la dirección I2C de mi tarjeta para el teclado: 0x38

- El código utiliza dos librerías de teclado la Keypad_I2C y la Keypad

- Las dos las puedes bajar de este enlace: Keypad-KeypadI2C.zip

- Además también están las librerías Wire y LiquidCrystal que puedes encontrar en el tutorial de 31.- Pantalla LCD.

- Esas librerías las debes copiar en la carpetar libraries de donde tengas instalado el IDE del Arduino.

- Una vez que carges el código en el Arduino, abre el Serial Monitor y pulsa teclas.

jTeclado_LCD.ino

// Juan A. Villalpando.
// Abril 2018. KIO4.COM
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 
const byte ROWS = 4; 
const byte COLS = 4;
String todo = ""; 
 
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};
 
int i2caddress = 0x38; // Direccion I2C teclado.
 
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
 
void setup(){
  Serial.begin(9600);
  kpd.begin();
  lcd.begin(16,2);// Columnas y filas de LCD  
}
 
void loop(){
  char key = kpd.getKey();
  if (key){
      if (key == '#'){ // Compara char con String.
      todo = "";
      key = ' '; // Observa el espacio y comilla simple.
      }
    Serial.println(todo);
    todo = todo + key;  
lcd.clear(); // Borra pantalla.
lcd.setCursor(0,0); // Posicion inicial del cursor.
lcd.print(todo);
delay (50);
  }
}			
			

______________________________________________________
- Comentarios.

- Al pulsar una tecla, se obtendrá el carácter key (char key)

- Se irán acumulando las teclas key pulsadas en el String todo.

- Si se pulsa el caracter '#', se borrará la pantalla.

- Fíjate que con los char se utiliza comilla simple y con el String comilla doble:

if (key == '#'){ // Compara char con String.

todo = "";

key = ' '; // Observa el espacio y comilla simple.


}

______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________

2.- Cuando escribimos cualquier número y luego #, se enciende y apaga el LED13.

- Vamos a modificar el código anterior. Ponemos un LED en el terminal 13, o bien puedes ver el proceso con el LED13 de la placa de Arduino.

- Cuando escribimos un número y pulsamos '#', se encenderá 2 segundos y luego se apagará el LED13.

- Observa que el encendido/apagado del LED13 se realiza en una función aparte llamada led13()

jTeclado_LCD_led13.ino

// Juan A. Villalpando.
// Abril 2018. KIO4.COM
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define LED13 13 

const byte ROWS = 4; 
const byte COLS = 4;
String todo = ""; 
 
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};
 
int i2caddress = 0x38; // Direccion I2C teclado.
 
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
 
void setup(){
  Serial.begin(9600);
  kpd.begin();
  lcd.begin(16,2);// Columnas y filas de LCD
  pinMode(LED13, OUTPUT);  
}
 
void loop(){
  char key = kpd.getKey();
  if (key){
      if (key == '#'){ // Compara char con String.
      todo = "";
      key = ' '; // Observa el espacio y comilla simple.
      led13(); // Enciende y apaga LED13
      }
    Serial.println(todo);
    todo = todo + key;  
lcd.clear(); // Borra pantalla.
lcd.setCursor(0,0); // Posicion inicial del cursor.
lcd.print(todo);
delay (50);
  }
}

// Funcion que enciende y apaga el LED13
void led13() {
  digitalWrite(LED13, HIGH);
  delay(2000);
  digitalWrite(LED13, LOW);
  }

______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________

3.- Cuando escribimos la clave 4567 y luego #, se enciende y apaga el LED13.

- Cuando la variable todo es "4567#", se enciende el LED13 durante 2 segundos.

jTeclado_LCD_led13_clave.ino

// Juan A. Villalpando.
// Abril 2018. KIO4.COM
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define LED13 13
 
const byte ROWS = 4; 
const byte COLS = 4;
String todo = "";
 
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = {0,1,2,3}; 
byte colPins[COLS] = {4,5,6,7};
 
int i2caddress = 0x38; // Direccion I2C teclado.
 
Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );
 
void setup(){
  Serial.begin(9600);
  kpd.begin();
  lcd.begin(16,2);// Columnas y filas de LCD
  pinMode(LED13, OUTPUT);  
}
 
void loop(){
  char key = kpd.getKey();
  if (key){
    Serial.println(todo);
    todo = todo + key;
    if (key == '#'){ // Compara char con String.
              if (todo == "4567#") {
                 led13(); // Enciende y apaga LED13
                }
      todo = "";
      key = ' '; // Observa el espacio y comilla simple.
      }  
lcd.clear(); // Borra pantalla.
lcd.setCursor(0,0); // Posicion inicial del cursor.
lcd.print(todo);
delay (50);
  }
}

// Funcion que enciende y apaga el LED13
void led13() {
  digitalWrite(LED13, HIGH);
  delay(2000);
  digitalWrite(LED13, LOW);
  }

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información