Hola, soy nuevo por aquí, me anime a escribir porque tengo un problema, estoy utilizando un Arduino Uno para mostrar en un lcd con modulo i2c, lo que se teclea en un keypad de matriz 4x4, el código funciona pero después se empieza a reiniciar el lcd, la verdad se muy poco de Arduino, entonces no se me ocurre que podría estar generando este problema. Sospecho que es un error del codigo, aqui les adjunto mi codigo:
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Dirección I2C de la pantalla LCD (comúnmente 0x27 o 0x3F, dependiendo del módulo)
LiquidCrystal_I2C lcd(0x27,16,2); // LCD de 6x2, con dirección I2C 0x27
// Configuración del teclado 4x4
const byte numRows = 4;
const byte numCols = 4;
char keymap[numRows][numCols] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[numRows] = {9, 8, 7, 6}; // Pines de las filas del teclado
byte colPins[numCols] = {5, 4, 3, 2}; // Pines de las columnas del teclado
Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
void setup()
{
Serial.begin(9600);
lcd.init(); // Inicializa la LCD
lcd.backlight(); // Enciende la luz de fondo de la LCD
lcd.print("Ready"); // Mensaje inicial
delay(50); // Pausa para leer el mensaje inicial
lcd.clear();
}
void loop()
{
delay(10);
lcd.setCursor(2,0);
lcd.print("Key: ");
delay(50);
char keypressed = myKeypad.getKey();
if (keypressed)
{
Serial.print(keypressed);
lcd.setCursor(7,1);
lcd.print(keypressed);
delay(50);
}
}
Tambien les dejo por aqui una imagen del montaje: