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

LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD address to 0x27 for a 16 chars and 2 line display

const int buttonPin = 2; // Pushbutton connected to digital pin 2
int buttonState = 0;     // Variable for reading the pushbutton status
int lastButtonState = 0; // Variable to store the previous state of the button

void setup() {
  lcd.init();                      // Initialize the LCD
  lcd.backlight();                 // Turn on the backlight
  randomSeed(analogRead(0));       // Seed the random number generator
  pinMode(buttonPin, INPUT);       // Set pushbutton pin as input
}

// Function to generate positive random numbers within a range
int positiveRandom(int minVal, int maxVal) {
  return random(maxVal - minVal + 1) + minVal;
}

void loop() {
  buttonState = digitalRead(buttonPin); // Read the state of the pushbutton
  
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) { //
      lcd.clear();                       
      lcd.setCursor(0, 0);              
      lcd.print("Success");               
      lcd.setCursor(0, 1);               
      int randomNumber = positiveRandom(0, 999999); // Generate a positive random number between 0 and 999999
      lcd.print("Index " + String(randomNumber)); 
    }
    delay(200); // Increased debounce delay
  }
  
  lastButtonState = buttonState;
}