digitalRead always returns HIGH or provides random output at no voltage

I don't know if you figured this out already from Grumpy_Mike's posting:

pinMode(BUTTON, INPUT);
digitalWrite (BUTTON, HIGH); // add this to enable internal pullup - will then read high unless button is pressed to connect to Gnd