Monedero electrónico con condiciones

Hola quisiera ayuda con mi programa.
Lo que quiero que haga el programa es que en la LCD aparezca el número de
monedas que se van insertando, cuando se inserten 5 monedas deberá aparecer
un usuario y una contraseña, solo una y pasados unos segundos deberá
aparecer "Inserte monedas". Mi código ya reconoce las monedas y cuando
llega a 5 envía varios usuarios y contraseñas aleatorias pero yo solo
quiero uno. Les agradecería mucho si me pueden ayudar. Estoy utilizando arduino UNO.

#include <LiquidCrystal.h>
const int  buttonPin = 6;    // the pin that the pushbutton is attached to
const int ledPin = 13;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
int num1=0;
int num2=0;

LiquidCrystal lcd(12,11,5,4,3,2);

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
   lcd.begin(16,2);
}

void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button went from off to on:
      
      buttonPushCounter++;
      
      //lcd.clear();
      //Serial.println("Inserte moneda");
      //lcd.print("Inserte moneda");
      lcd.clear();
      Serial.println(buttonPushCounter);
      lcd.print(buttonPushCounter);
    } 
    // Delay a little bit to avoid bouncing
    delay(100);
  }
  // save the current state as the last state, for next time through the loop
  lastButtonState = buttonState;

  if (buttonPushCounter % 5 == 0) {
    digitalWrite(ledPin, HIGH);
    num1= random(0,1000);  
    num2= random(1000,2000);
    lcd.clear();
    Serial.println("Usuario: ");
    Serial.println(num1);
    Serial.println("Pasword: ");
    Serial.println(num2);
    lcd.print("Usuario: ");
    lcd.print(num1);
    lcd.setCursor(0,1);
    lcd.print("Password: ");
    lcd.print(num2);
    // lcd.clear();
    //buttonPushCounter=0;
    //Serial.print("Listo");
    //lcd.print("Listo");
    delay(500);
    
  }

Lo que te está pasando es que el contador buttonpushcounter mantiene el último valor que era 5. Cuando llega a la comparación ( if) , mientras no insertes otra moneda sigue valiendo cinco, entonces vuelve a darte otro usuario y contraseña. Tenés que reinicializarlo. Podrías ponerlo en cero antes de terminar el loop y cambiá la comparación a

if( buttonpushcounter==5)