/*
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const int LCD_ADDRESS = 0x27;
const int LCD_COLUMNS = 16;
const int LCD_ROWS = 2;
const int ROWS = 4;
const int COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 12, 14, 27}; // Pines de las filas
byte colPins[COLS] = {26, 25, 33, 32}; // Pines de las columnas
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char currentKey = '\0'; // Tecla actual
int keyCount = 0; // Contador de veces que se ha presionado la tecla
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
void setup() {
Wire.begin();
iniciarKeypad();
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.setBacklight(HIGH);
lcd.setCursor(3, 0);
lcd.print("BIENVENIDO");
delay(2000);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
verificarKeypad();
menu();
delay(10);
}
void menu() {
int op;
char usuario[20], contrasenia[20], clave[20];
do {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("ELECTRO");
lcd.setCursor(2, 1);
lcd.print("CARDIOGRAFO");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1.INICIAR SESION");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("2.REGISTRARSE");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("3.APAGAR");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ELIJA UNA OPCION:");
op = capturarEntrada(); // Obtener la opción ingresada
switch (op) {
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("INICIAR SESION");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("USUARIO:");
// Ingreso de usuario
capturarEntrada(usuario);
lcd.print(usuario);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA:");
// Ingreso de contraseña
capturarEntrada(contrasenia);
lcd.print(contrasenia);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("INICIANDO SESION");
delay(2000);
// Verificar usuario y contraseña
if (verificarUsuario(usuario, contrasenia)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SESION INICIADA");
delay(2000);
// Realizar alguna acción cuando se inicie sesión exitosamente
// ...
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CREDENCIALES");
lcd.setCursor(0, 1);
lcd.print("INCORRECTAS");
delay(2000);
}
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRARSE");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("USUARIO:");
// Ingreso de usuario
capturarEntrada(usuario);
lcd.print(usuario);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA:");
// Ingreso de contraseña
capturarEntrada(contrasenia);
lcd.print(contrasenia);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CLAVE:");
// Ingreso de clave
capturarEntrada(clave);
lcd.print(clave);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRANDO...");
delay(2000);
// Realizar el registro del usuario con la información ingresada
registrarUsuario(usuario, contrasenia, clave);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRO EXITOSO");
delay(2000);
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("APAGANDO...");
delay(2000);
// Apagar el dispositivo
// ...
break;
default:
break;
}
} while (op != 3);
}
char capturarEntrada() {
char key = '\0';
while (key == '\0') {
key = keypad.getKey();
}
return key;
}
void iniciarKeypad() {
keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
}
void verificarKeypad() {
char key = keypad.getKey();
if (key != NO_KEY && key != currentKey) {
currentKey = key;
keyCount++;
}
}
bool verificarUsuario(const char* usuario, const char* contrasenia) {
// Realizar la verificación del usuario y contraseña
// ...
return true; // Reemplazar con la lógica de verificación real
}
void registrarUsuario(const char* usuario, const char* contrasenia, const char* clave) {
// Realizar el registro del usuario con la información proporcionada
// ...
}
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const int LCD_ADDRESS = 0x27;
const int LCD_COLUMNS = 16;
const int LCD_ROWS = 2;
const int ROWS = 4;
const int COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 12, 14, 27}; // Pines de las filas
byte colPins[COLS] = {26, 25, 33, 32}; // Pines de las columnas
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char currentKey = '\0'; // Tecla actual
int keyCount = 0; // Contador de veces que se ha presionado la tecla
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
void setup() {
Wire.begin();
iniciarKeypad();
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.setBacklight(HIGH);
lcd.setCursor(3, 0);
lcd.print("BIENVENIDO");
delay(2000);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
verificarKeypad();
menu();
delay(10);
}
void menu() {
int op;
char usuario[20], contrasenia[20], clave[20];
do {
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("ELECTRO");
lcd.setCursor(2, 1);
lcd.print("CARDIOGRAFO");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1.INICIAR SESION");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("2.REGISTRARSE");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("3.APAGAR");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ELIJA UNA OPCION:");
char opcion[2];
capturarEntrada(opcion);
op = atoi(opcion); // Convertir la cadena de caracteres a entero;
switch (op) {
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("INICIAR SESION");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("USUARIO:");
// Ingreso de usuario
capturarTexto(usuario);
lcd.print(usuario);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA:");
// Ingreso de contraseña
capturarTexto(contrasenia);
lcd.print(contrasenia);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("INICIANDO SESION");
delay(2000);
// Verificar usuario y contraseña
if (verificarUsuario(usuario, contrasenia)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SESION INICIADA");
delay(2000);
// Realizar alguna acción cuando se inicie sesión exitosamente
// ...
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CREDENCIALES");
lcd.setCursor(0, 1);
lcd.print("INCORRECTAS");
delay(2000);
}
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRARSE");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("USUARIO:");
// Ingreso de usuario
capturarTexto(usuario);
lcd.print(usuario);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CONTRASEÑA:");
// Ingreso de contraseña
capturarTexto(contrasenia);
lcd.print(contrasenia);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CLAVE:");
// Ingreso de clave
capturarTexto(clave);
lcd.print(clave);
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRANDO...");
delay(2000);
// Realizar el registro del usuario con la información ingresada
registrarUsuario(usuario, contrasenia, clave);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REGISTRO EXITOSO");
delay(2000);
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("APAGANDO...");
delay(2000);
// Apagar el dispositivo
// ...
break;
default:
break;
}
} while (op != 3);
}
void capturarEntrada(char* buffer) {
memset(buffer, 0, sizeof(buffer));
while (true) {
if (keyCount > 0) {
switch (currentKey) {
case '1':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'E';
lcd.print('E');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'F';
lcd.print('F');
}
break;
case '2':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'G';
lcd.print('G');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'H';
lcd.print('H');
}
break;
case '3':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'I';
lcd.print('I');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'J';
lcd.print('J');
}
case 'A':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'K';
lcd.print('K');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'L';
lcd.print('L');
}
break;
case '4':
break;
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'M';
lcd.print('M');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'N';
lcd.print('N');
}
break;
case '5':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'Ñ';
lcd.print('Ñ');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'O';
lcd.print('O');
}
break;
// Repetir para otros números y letras del teclado
default:
// No hacer nada para otros caracteres
break;
}
keyCount = 0;
}
if (strlen(buffer) >= 16) {
break;
}
}
}
void capturarTexto(char* buffer) {
memset(buffer, 0, sizeof(buffer));
while (true) {
if (keyCount > 0) {
switch (currentKey) {
case '1':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'E';
lcd.print('E');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'F';
lcd.print('F');
}
break;
case '2':
if (keyCount == 1) {
buffer[strlen(buffer)] = currentKey;
lcd.print(currentKey);
} else if (keyCount == 2) {
buffer[strlen(buffer)] = 'A';
lcd.print('A');
} else if (keyCount == 3) {
buffer[strlen(buffer)] = 'B';
lcd.print('B');
}
break;
// Repetir para otros números y letras del teclado
default:
// No hacer nada para otros caracteres
break;
}
keyCount = 0;
}
if (currentKey == '#') {
break;
}
}
}
void iniciarKeypad() {
keypad.addEventListener(keypadEvent);
}
void verificarKeypad() {
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState()) {
case PRESSED:
currentKey = eKey;
keyCount++;
break;
case RELEASED:
break;
case HOLD:
break;
case IDLE:
currentKey = '\0';
keyCount = 0;
break;
}
}
bool verificarUsuario(const char* usuario, const char* contrasenia) {
// Realizar la verificación del usuario y contraseña
// ...
// Devolver true si son válidos, o false si no lo son
}
void registrarUsuario(const char* usuario, const char* contrasenia, const char* clave) {
// Realizar el registro del usuario con la información ingresada
// ...
}