Make sketch shorter, simply

he display seems to be in a loop

It's always redrawing the LCD because you told it to do that. loop always calls dispMenu. Maybe you should only call dispMenu when the menu number changes?

You should also debounce these buttons, unless you are using special hardware to do that (resistors, capacitors or logic gates). HackADay has a nice two-part series on the topic, and the Bounce2 library is popular.

Having 0 mean two different things is a BAD idea.

Hmm, I think it means only one thing. This may make it more obvious:

const int NO_BUTTON = 0;

int valToButton( uint16_t val )
{
  for (int i=0; i<arraySize; i++) {
    if (val <= minButtonVal[ i ]) {
      return i;
    }
  }

  // Too big!
  return NO_BUTTON;
}

You could return 0 or arraySize instead, perhaps requiring two tests to know the button is invalid:

int valToButton( uint16_t val )
{
  int i=0;

  while ((i < arraySize) && (val >= minButtonVal[ i ])) {
    i++;
  }

  return i;
}