Hola tengo una duda con el siguiente ejercicio tengo un display de 16x2 y un keypad 4x4 conectado a arduino. Tengo que manejar el ingreso de datos por medio de comandos. Al presionar el * me va a borrar la pantalla y me va a posicionar el cursor en la fila 1. Al presionar # me cambia de fila. Pero estoy con dudas cuando tengo que presionar la A que va a ser un comando que me va a permitir ingresar numeros hasta llenar cualquiera de las 2 filas con digitos que vengan del teclado matricial. Este es mi codigo:
(Code tags, por favor. </> in the menu. Gracias)
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
int i=0;
int j=0;
int veces_presionada=0;
//Columnas y filas
const byte MAX_CHARS = 16;
const byte MAX_ROWS = 2;
//Pines
const byte RS = A1;
const byte E = A0;
const byte DB4 = A2;
const byte DB5 = A3;
const byte DB6 = 2;
const byte DB7 = 3;
//Creación del objeto lcd
LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7);
const byte FILAS = 4;
const byte COLS = 4;
char teclas[FILAS][COLS]=
{
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'
};
byte pinesFilas[FILAS] = {12,11,10,9};
byte pinesCols[COLS] = {8,7,6,5};
Keypad kp = Keypad(makeKeymap(teclas), pinesFilas, pinesCols, FILAS, COLS);
void setup() {
lcd.begin(MAX_CHARS,MAX_ROWS);
Serial.begin(9600);
lcd.cursor();
}
void loop() {
char tecla = kp.getKey();
if(tecla != NO_KEY){
veces_presionada++;
switch(tecla){
case '*':
lcd.home();
lcd.clear();
break;
case '#':
lcd.setCursor(0,1);
if(veces_presionada>1){
lcd.setCursor(0,0);
veces_presionada=0;
}
break;
case 'A':
veces_presionada=1;
if(tecla != NO_KEY){
if(tecla>='0' && tecla<='9'){
if(j>=0 && j<=15){
lcd.setCursor(j,i);
lcd.print(tecla);
j++;
}
else{
j=0;
}
}
}
break;
case 'B':
break;
case 'C':
break;
case 'D':
break;
}
}
}