Wemos D1: LCD and keypad

Hello everyone, I am new to the forum, enter because I have a problem programming a wemos d1
By the way, my apologies if something is not understood, my English is somewhat rusty.

So I tested each thing separately first, the lcd and the keypad and they work perfectly (looking the keypad on the serial monitor). But I'm trying to connect the two and although the keypad is shown on the serial monitor, I can't make it show it on the lcd.
Actually the lcd turns everything on fine in the void setup() but inside the loop and after char key = keypad.getKey(); command it just wont work.

I tried before that command (key = keypad.getKey()) send something and the lcd it shows it well, but after it doesnt do anything, so i dont know if they share something internally.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define  ledPIN D10
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 


const byte n_rows = 4;
const byte n_cols = 4;
 
char keys[n_rows][n_cols] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
 
byte colPins[n_rows] = {D5, D4, D3, D2}; // la conexion sería de izq a der del pin 11 al 5 y el 2, visto de frente 
byte rowPins[n_cols] = {D9, D8, D7, D6}; 
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols); 
// para guardar variables 
char codigo[4];            //Cadena donde se guardaran los caracteres de las teclas presionadas
int cont=0;          //variable que se incrementara al presionar las teclas
int i=0;
char key;



 
void setup(){

 //LCD1602
 lcd.begin(16,2);
  lcd.setCursor(1,0);         
  lcd.print("Incubadora ITS");
  lcd.setCursor(3,1);         
  lcd.print("Datos en mm");
  Serial.begin(115200); 
//  pinMode(ledPIN, OUTPUT);  //definir pin como salida
  delay (2000);
}
 
void loop(){

  char key = keypad.getKey(); 
 /*
  digitalWrite(D10 , HIGH);   // poner el Pin en HIGH
  delay(100);                   // esperar un segundo
  digitalWrite(D10 , LOW);    // poner el Pin en LOW
*/

  if (key != NULL){
    Serial.print("Key pressed: ");
    Serial.println(key);
 

    lcd.clear();
    lcd.setCursor(1,0);         
    lcd.print("YAY");
    lcd.setCursor(3,1);         
    lcd.print("Yupiti");

 }
  
/*
  
  
  if (key != NULL){

 // lcd.init();
//  lcd.backlight();
 lcd.begin(16,2);
  lcd.setCursor(1,0);         
  lcd.print("YAY");
  lcd.setCursor(3,1);         
  lcd.print("Yupiti");
    codigo[cont]=key;          //se guarda caracter por caracter en el arreglo codigo[]
    delay (1000); 
    Serial.println(codigo[cont]);

  }
*/
  
/*
    char key = keypad.getKey();
  
  if (key != NULL)         //se evalúa si se presionó una tecla
    { 

    codigo[cont]=key;          //se guarda caracter por caracter en el arreglo codigo[]
    delay (1000); 
    writescrn ();
    Serial.println(codigo[cont]);
    cont=cont+1;
    i=i+1;   
    if(cont==4)
    { 
    cont = 0;
    i=0;   
    }
    delay (1000);
    } */

}

void writescrn (){
  
 //   Serial.println("writescrn");
    lcd.clear();
    lcd.setCursor(2,0);
    lcd.print("Medida (mm)");
    lcd.setCursor(3+i,1);
    lcd.print(codigo[cont]);    //se imprime en el puerto serie la tecla presionada

}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.