You don't say how you've got your buttons wired or what sort of buttons they are, but I notice you're not using the built-in pullups. This may cause you problems.
No mystery, but not recommended. It causes a delay of 32 milliseconds (and therefore limits your update rate to about 30Hz). In those 32 milliseconds, you could have transmitted over 350 characters at 115200 bits per second