Loose connections probably. The coded text thing is common when there's an intermittent connection between the 'guino and LCD module. The data from the 'guino gets corrupted, but the display is relatively dumb device... It just does what it's told whether it makes sense or not, thus the garbage on the screen.
Floating inputs (no pull-up or pull-down resistor) will often cause erratic behavior since it's not clear whether the input is high or low. Unrelated electrical activity can trigger floating inputs. It could be that the program's favorite screen is just the one that produces the least electrical noise on the button inputs, so it's less likely to get switched away from.
I've noticed people like to use "internal pull-up resistors" by switching on a digital I/O pin before using it as an input. I'm a bit suspicious of that technique simply because it's not clear what exactly that's doing inside the chip. It could be the architecture of the '1280 doesn't behave the same way as the '168/'368 (maybe due to the greater number of I/O pins?) which breaks (or requires modification of) that functionality.
I would try external pull-ups (a ~5K resistor T'd off each switch signal wire and connected to 5V) and see if that helps.
|