sobre funcion con boton y pantalla 16x2 (SOLUCIONAdO)

Hola.
tengo una arduino nano y previamente solo he cacharreao con python en rpi, dicho esto os explico mi problema:

tengo una pantalla lcd 16x2 y tras muuuuuuuucho tiempo he conseguido hacerla funcionar (puñeteras librerias…) y ahora tengo un boton puesto tambien y lo que quiero es al pulsar el boton que muestre en la pantalla muchos numeros al azar (es un tirador de dados) de forma que al pulsar muestra muchos numeros muy rapido y al dejar de pulsar que se quede el ultimo número que salga… y no me sale… solo me parpadean los numeros muy rapido

alguna solucion?

este es mi programa:

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

#define I2C_ADDR    0x3F // <<----- Add your address here.  Find it from I2C Scanner
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
const int BOTON=2;
int val;
//int n = 1;
long ranNumber4; 
long ranNumber6;
long ranNumber8;
long ranNumber10;
long ranNumber12;
long ranNumber20;
long ranNumber100;


LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  pinMode(BOTON,INPUT);
 lcd.begin (16,2); //  <<----- My LCD was 16x2

 
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home
 randomSeed(analogRead(0));


    ranNumber4 = random(1,5);
    ranNumber6 = random(1,7);
    ranNumber8 = random(1,9);
    ranNumber10 = random(0,10);
    ranNumber12 = random(1,13);
    ranNumber20 = random(1,21);
    ranNumber100 = random(0,100);
}

void loop()
{
    ranNumber4 = random(1,5);
    ranNumber6 = random(1,7);
    ranNumber8 = random(1,9);
    ranNumber10 = random(0,10);
    ranNumber12 = random(1,13);
    ranNumber20 = random(1,21);
    ranNumber100 = random(0,100);
   delay(1);
    
  val=digitalRead(BOTON);
if  (val==HIGH){


    

}
else {  
//delay(100);
lcd.setCursor (0,0);
lcd.print(ranNumber4);

lcd.setCursor (2,0);
lcd.print(ranNumber6);

lcd.setCursor (4,0);
lcd.print(ranNumber8);
              
lcd.setCursor (6,0);
lcd.print(ranNumber10);

lcd.setCursor (8,0);
lcd.print(ranNumber12);

lcd.setCursor (11,0);
lcd.print(ranNumber20);

lcd.setCursor (14,0);
lcd.print(ranNumber100);
  
     lcd.setCursor (0,0);
      lcd.print("                "); 
         lcd.setCursor (0,1);
         lcd.print("                "); 
         delay(1);

}

SOLUCION

aunque me sale alreves (se para cuando le doy al boton) pero es así

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

#define I2C_ADDR    0x3F // <<----- Add your address here.  Find it from I2C Scanner
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
const int BOTON=2;
int val;
//int n = 1;
long ranNumber4; 
long ranNumber6;
long ranNumber8;
long ranNumber10;
long ranNumber12;
long ranNumber20;
long ranNumber100;


LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
  pinMode(BOTON,INPUT);
 lcd.begin (16,2); //  <<----- My LCD was 16x2

 
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home
 randomSeed(analogRead(0));


   
}

void loop()
{
   
    
  val=digitalRead(BOTON);
if  (val==LOW){


    

}
else {  
      ranNumber4 = random(1,5);
    ranNumber6 = random(1,7);
    ranNumber8 = random(1,9);
    ranNumber10 = random(0,10);
    ranNumber12 = random(1,13);
    ranNumber20 = random(1,21);
    ranNumber100 = random(0,100);
    lcd.clear ();
//delay(100);
lcd.setCursor (0,0);
lcd.print(ranNumber4);

lcd.setCursor (2,0);
lcd.print(ranNumber6);

lcd.setCursor (4,0);
lcd.print(ranNumber8);
              
lcd.setCursor (6,0);
lcd.print(ranNumber10);

lcd.setCursor (8,0);
lcd.print(ranNumber12);

lcd.setCursor (11,0);
lcd.print(ranNumber20);

lcd.setCursor (14,0);
lcd.print(ranNumber100);
  

}
}