Desplazamiento de numeros en lcd

Hola, soy yo otra vez jaja, estoy teniendo otro problemita, yo quiero que en el lcd de 16x2 con el modulo i2c pueda aparecer:

"Clave: "

Y despues de eso con un teclado matricial 4x3 puedas escribir una clave de 4 digitos, y mi problema es el siguiente, al ir a la programación funciona todo bien a excepcion de que cuando pulso el segundo digito reemplaza el primero y no lo pone al lado, les adjunto el codigo:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // seteo la direccion del lcd 0x27 y la cantidad de filas y columnas

const byte filas = 4;     //Numero de filas del teclado
const byte columnas = 3;  //Numero de columnas del teclado

//Defino una matriz 4x3 con la posicion de las filas y columnas
char matriz[filas][columnas] =
{

  { '1', '2', '3'},
  { '4', '5', '6'},
  { '7', '8', '9'},
  { '*', '0', '#'},

};

byte pinesFilas[filas] = {36, 37, 38, 39};       //Pines donde van conectadas las filas del teclado
byte pinesColumnas[columnas] = {40, 41, 42}; //Pines donde van conectadas las columnas del teclado

//Inicializo el teclado con el numero de filas, columnas, los pines del Arduino utilizados y la matriz
Keypad teclado = Keypad( makeKeymap(matriz), pinesFilas, pinesColumnas, filas, columnas);

void setup()
{
  lcd.init();                      // inicia el lcd
  lcd.backlight();
  Serial.begin(9600);
}

void loop()
{
  int x = 7;
  int cont = 0;
  char tecla_presionada = teclado.getKey();    //Almaceno en una variable la tecla presionada
    lcd.setCursor(0,0);
    lcd.print("Clave: ");
  if (tecla_presionada)
  {
    Serial.println(tecla_presionada);   //Muestra la tecla presionada en el monitor serie
    x++;
    lcd.setCursor(x,0);
    lcd.write(tecla_presionada);
  }
  {
  // when characters arrive over the serial port...
  if (Serial.available()) {
    // wait a bit for the entire message to arrive
    delay(100);
    // clear the screen
    lcd.clear();
    // read all the available characters
    while (Serial.available() > 0) {
      // display each character to the LCD
      lcd.write(Serial.read());
      }
    }
  }
}

se agradece su ayuda, me estoy volviendo loco jajaja

Buenos días,

Voy a intentar ayudarte en base a mi conocimiento, que no es mucho, pero a ver si damos con algo...

Entiendo que en:

if (tecla_presionada)
  {
    Serial.println(tecla_presionada);   //Muestra la tecla presionada en el monitor serie
    x++;
    lcd.setCursor(x,0);
    lcd.write(tecla_presionada);
  }

el if carece de sentido porque no lo estas comparando con nada, o sea se ejecuta siempre.

¿Porqué le das a la x el valor 7 cuando la declaras?

Dale un vistazo a este enlace que hace exactamente lo que tu quieres

Espero que le des solución a tu problema!
Saludos!